diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,367 @@
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+    means each individual or legal entity that creates, contributes to
+    the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+    means the combination of the Contributions of others (if any) used
+    by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+    means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+    means Source Code Form to which the initial Contributor has attached
+    the notice in Exhibit A, the Executable Form of such Source Code
+    Form, and Modifications of such Source Code Form, in each case
+    including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+    means
+
+    (a) that the initial Contributor has attached the notice described
+        in Exhibit B to the Covered Software; or
+
+    (b) that the Covered Software was made available under the terms of
+        version 1.1 or earlier of the License, but not also under the
+        terms of a Secondary License.
+
+1.6. "Executable Form"
+    means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+    means a work that combines Covered Software with other material, in
+    a separate file or files, that is not Covered Software.
+
+1.8. "License"
+    means this document.
+
+1.9. "Licensable"
+    means having the right to grant, to the maximum extent possible,
+    whether at the time of the initial grant or subsequently, any and
+    all of the rights conveyed by this License.
+
+1.10. "Modifications"
+    means any of the following:
+
+    (a) any file in Source Code Form that results from an addition to,
+        deletion from, or modification of the contents of Covered
+        Software; or
+
+    (b) any new file in Source Code Form that contains any Covered
+        Software.
+
+1.11. "Patent Claims" of a Contributor
+    means any patent claim(s), including without limitation, method,
+    process, and apparatus claims, in any patent Licensable by such
+    Contributor that would be infringed, but for the grant of the
+    License, by the making, using, selling, offering for sale, having
+    made, import, or transfer of either its Contributions or its
+    Contributor Version.
+
+1.12. "Secondary License"
+    means either the GNU General Public License, Version 2.0, the GNU
+    Lesser General Public License, Version 2.1, the GNU Affero General
+    Public License, Version 3.0, or any later versions of those
+    licenses.
+
+1.13. "Source Code Form"
+    means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+    means an individual or a legal entity exercising rights under this
+    License. For legal entities, "You" includes any entity that
+    controls, is controlled by, or is under common control with You. For
+    purposes of this definition, "control" means (a) the power, direct
+    or indirect, to cause the direction or management of such entity,
+    whether by contract or otherwise, or (b) ownership of more than
+    fifty percent (50%) of the outstanding shares or beneficial
+    ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+    Licensable by such Contributor to use, reproduce, make available,
+    modify, display, perform, distribute, and otherwise exploit its
+    Contributions, either on an unmodified basis, with Modifications, or
+    as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+    for sale, have made, import, and otherwise transfer either its
+    Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+    or
+
+(b) for infringements caused by: (i) Your and any other third party's
+    modifications of Covered Software, or (ii) the combination of its
+    Contributions with other software (except as part of its Contributor
+    Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+    its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+    Form, as described in Section 3.1, and You must inform recipients of
+    the Executable Form how they can obtain a copy of such Source Code
+    Form by reasonable means in a timely manner, at a charge no more
+    than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+    License, or sublicense it under different terms, provided that the
+    license for the Executable Form does not attempt to limit or alter
+    the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+*                                                                      *
+*  6. Disclaimer of Warranty                                           *
+*  -------------------------                                           *
+*                                                                      *
+*  Covered Software is provided under this License on an "as is"       *
+*  basis, without warranty of any kind, either expressed, implied, or  *
+*  statutory, including, without limitation, warranties that the       *
+*  Covered Software is free of defects, merchantable, fit for a        *
+*  particular purpose or non-infringing. The entire risk as to the     *
+*  quality and performance of the Covered Software is with You.        *
+*  Should any Covered Software prove defective in any respect, You     *
+*  (not any Contributor) assume the cost of any necessary servicing,   *
+*  repair, or correction. This disclaimer of warranty constitutes an   *
+*  essential part of this License. No use of any Covered Software is   *
+*  authorized under this License except under this disclaimer.         *
+*                                                                      *
+************************************************************************
+
+************************************************************************
+*                                                                      *
+*  7. Limitation of Liability                                          *
+*  --------------------------                                          *
+*                                                                      *
+*  Under no circumstances and under no legal theory, whether tort      *
+*  (including negligence), contract, or otherwise, shall any           *
+*  Contributor, or anyone who distributes Covered Software as          *
+*  permitted above, be liable to You for any direct, indirect,         *
+*  special, incidental, or consequential damages of any character      *
+*  including, without limitation, damages for lost profits, loss of    *
+*  goodwill, work stoppage, computer failure or malfunction, or any    *
+*  and all other commercial damages or losses, even if such party      *
+*  shall have been informed of the possibility of such damages. This   *
+*  limitation of liability shall not apply to liability for death or   *
+*  personal injury resulting from such party's negligence to the       *
+*  extent applicable law prohibits such limitation. Some               *
+*  jurisdictions do not allow the exclusion or limitation of           *
+*  incidental or consequential damages, so this exclusion and          *
+*  limitation may not apply to You.                                    *
+*                                                                      *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+  This Source Code Form is subject to the terms of the Mozilla Public
+  License, v. 2.0. If a copy of the MPL was not distributed with this
+  file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,44 @@
+# Amazon Chime SDK
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+ 
+`2.0` - Derived from API version @2018-05-01@ of the AWS service descriptions, licensed under Apache 2.0.
+
+## Description
+
+Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-chime)
+and the [AWS API Reference](https://aws.amazon.com/documentation/).
+
+The types from this library are intended to be used with [amazonka](http://hackage.haskell.org/package/amazonka),
+which provides mechanisms for specifying AuthN/AuthZ information, sending requests,
+and receiving responses.
+
+Lenses are used for constructing and manipulating types,
+due to the depth of nesting of AWS types and transparency regarding
+de/serialisation into more palatable Haskell values.
+The provided lenses should be compatible with any of the major lens libraries
+[lens](http://hackage.haskell.org/package/lens) or [lens-family-core](http://hackage.haskell.org/package/lens-family-core).
+
+See [Amazonka.Chime](http://hackage.haskell.org/package/amazonka-chime/docs/Amazonka-Chime.html)
+or [the AWS documentation](https://aws.amazon.com/documentation/) to get started.
+
+
+## Contribute
+
+For any problems, comments, or feedback please create an issue [here on GitHub](https://github.com/brendanhay/amazonka/issues).
+
+> _Note:_ this library is an auto-generated Haskell package. Please see `amazonka-gen` for more information.
+
+
+## Licence
+
+`amazonka-chime` is released under the [Mozilla Public License Version 2.0](http://www.mozilla.org/MPL/).
+
+Parts of the code are derived from AWS service descriptions, licensed under Apache 2.0.
+Source files subject to this contain an additional licensing clause in their header.
diff --git a/amazonka-chime.cabal b/amazonka-chime.cabal
new file mode 100644
--- /dev/null
+++ b/amazonka-chime.cabal
@@ -0,0 +1,424 @@
+cabal-version:      2.2
+name:               amazonka-chime
+version:            2.0
+synopsis:           Amazon Chime SDK.
+homepage:           https://github.com/brendanhay/amazonka
+bug-reports:        https://github.com/brendanhay/amazonka/issues
+license:            MPL-2.0
+license-file:       LICENSE
+author:             Brendan Hay
+maintainer:
+  Brendan Hay <brendan.g.hay+amazonka@gmail.com>, Jack Kelly <jack@jackkelly.name>
+
+copyright:          Copyright (c) 2013-2023 Brendan Hay
+category:           AWS
+build-type:         Simple
+extra-source-files:
+  fixture/*.proto
+  fixture/*.yaml
+  README.md
+  src/.gitkeep
+
+description:
+  Derived from API version @2018-05-01@ of the AWS service descriptions, licensed under Apache 2.0.
+  .
+  The types from this library are intended to be used with <http://hackage.haskell.org/package/amazonka amazonka>,
+  which provides mechanisms for specifying AuthN/AuthZ information, sending requests, and receiving responses.
+  .
+  It is recommended to use generic lenses or optics from packages such as <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify optional fields and deconstruct responses.
+  .
+  Generated lenses can be found in "Amazonka.Chime.Lens" and are
+  suitable for use with a lens package such as <http://hackage.haskell.org/package/lens lens> or <http://hackage.haskell.org/package/lens-family-core lens-family-core>.
+  .
+  See "Amazonka.Chime" and the <https://aws.amazon.com/documentation/ AWS documentation> to get started.
+
+source-repository head
+  type:     git
+  location: git://github.com/brendanhay/amazonka.git
+  subdir:   amazonka-chime
+
+library
+  default-language: Haskell2010
+  hs-source-dirs:   src gen
+  ghc-options:
+    -Wall -fwarn-incomplete-uni-patterns
+    -fwarn-incomplete-record-updates -funbox-strict-fields
+
+  exposed-modules:
+    Amazonka.Chime
+    Amazonka.Chime.AssociatePhoneNumbersWithVoiceConnector
+    Amazonka.Chime.AssociatePhoneNumbersWithVoiceConnectorGroup
+    Amazonka.Chime.AssociatePhoneNumberWithUser
+    Amazonka.Chime.AssociateSigninDelegateGroupsWithAccount
+    Amazonka.Chime.BatchCreateAttendee
+    Amazonka.Chime.BatchCreateChannelMembership
+    Amazonka.Chime.BatchCreateRoomMembership
+    Amazonka.Chime.BatchDeletePhoneNumber
+    Amazonka.Chime.BatchSuspendUser
+    Amazonka.Chime.BatchUnsuspendUser
+    Amazonka.Chime.BatchUpdatePhoneNumber
+    Amazonka.Chime.BatchUpdateUser
+    Amazonka.Chime.CreateAccount
+    Amazonka.Chime.CreateAppInstance
+    Amazonka.Chime.CreateAppInstanceAdmin
+    Amazonka.Chime.CreateAppInstanceUser
+    Amazonka.Chime.CreateAttendee
+    Amazonka.Chime.CreateBot
+    Amazonka.Chime.CreateChannel
+    Amazonka.Chime.CreateChannelBan
+    Amazonka.Chime.CreateChannelMembership
+    Amazonka.Chime.CreateChannelModerator
+    Amazonka.Chime.CreateMediaCapturePipeline
+    Amazonka.Chime.CreateMeeting
+    Amazonka.Chime.CreateMeetingDialOut
+    Amazonka.Chime.CreateMeetingWithAttendees
+    Amazonka.Chime.CreatePhoneNumberOrder
+    Amazonka.Chime.CreateProxySession
+    Amazonka.Chime.CreateRoom
+    Amazonka.Chime.CreateRoomMembership
+    Amazonka.Chime.CreateSipMediaApplication
+    Amazonka.Chime.CreateSipMediaApplicationCall
+    Amazonka.Chime.CreateSipRule
+    Amazonka.Chime.CreateUser
+    Amazonka.Chime.CreateVoiceConnector
+    Amazonka.Chime.CreateVoiceConnectorGroup
+    Amazonka.Chime.DeleteAccount
+    Amazonka.Chime.DeleteAppInstance
+    Amazonka.Chime.DeleteAppInstanceAdmin
+    Amazonka.Chime.DeleteAppInstanceStreamingConfigurations
+    Amazonka.Chime.DeleteAppInstanceUser
+    Amazonka.Chime.DeleteAttendee
+    Amazonka.Chime.DeleteChannel
+    Amazonka.Chime.DeleteChannelBan
+    Amazonka.Chime.DeleteChannelMembership
+    Amazonka.Chime.DeleteChannelMessage
+    Amazonka.Chime.DeleteChannelModerator
+    Amazonka.Chime.DeleteEventsConfiguration
+    Amazonka.Chime.DeleteMediaCapturePipeline
+    Amazonka.Chime.DeleteMeeting
+    Amazonka.Chime.DeletePhoneNumber
+    Amazonka.Chime.DeleteProxySession
+    Amazonka.Chime.DeleteRoom
+    Amazonka.Chime.DeleteRoomMembership
+    Amazonka.Chime.DeleteSipMediaApplication
+    Amazonka.Chime.DeleteSipRule
+    Amazonka.Chime.DeleteVoiceConnector
+    Amazonka.Chime.DeleteVoiceConnectorEmergencyCallingConfiguration
+    Amazonka.Chime.DeleteVoiceConnectorGroup
+    Amazonka.Chime.DeleteVoiceConnectorOrigination
+    Amazonka.Chime.DeleteVoiceConnectorProxy
+    Amazonka.Chime.DeleteVoiceConnectorStreamingConfiguration
+    Amazonka.Chime.DeleteVoiceConnectorTermination
+    Amazonka.Chime.DeleteVoiceConnectorTerminationCredentials
+    Amazonka.Chime.DescribeAppInstance
+    Amazonka.Chime.DescribeAppInstanceAdmin
+    Amazonka.Chime.DescribeAppInstanceUser
+    Amazonka.Chime.DescribeChannel
+    Amazonka.Chime.DescribeChannelBan
+    Amazonka.Chime.DescribeChannelMembership
+    Amazonka.Chime.DescribeChannelMembershipForAppInstanceUser
+    Amazonka.Chime.DescribeChannelModeratedByAppInstanceUser
+    Amazonka.Chime.DescribeChannelModerator
+    Amazonka.Chime.DisassociatePhoneNumberFromUser
+    Amazonka.Chime.DisassociatePhoneNumbersFromVoiceConnector
+    Amazonka.Chime.DisassociatePhoneNumbersFromVoiceConnectorGroup
+    Amazonka.Chime.DisassociateSigninDelegateGroupsFromAccount
+    Amazonka.Chime.GetAccount
+    Amazonka.Chime.GetAccountSettings
+    Amazonka.Chime.GetAppInstanceRetentionSettings
+    Amazonka.Chime.GetAppInstanceStreamingConfigurations
+    Amazonka.Chime.GetAttendee
+    Amazonka.Chime.GetBot
+    Amazonka.Chime.GetChannelMessage
+    Amazonka.Chime.GetEventsConfiguration
+    Amazonka.Chime.GetGlobalSettings
+    Amazonka.Chime.GetMediaCapturePipeline
+    Amazonka.Chime.GetMeeting
+    Amazonka.Chime.GetMessagingSessionEndpoint
+    Amazonka.Chime.GetPhoneNumber
+    Amazonka.Chime.GetPhoneNumberOrder
+    Amazonka.Chime.GetPhoneNumberSettings
+    Amazonka.Chime.GetProxySession
+    Amazonka.Chime.GetRetentionSettings
+    Amazonka.Chime.GetRoom
+    Amazonka.Chime.GetSipMediaApplication
+    Amazonka.Chime.GetSipMediaApplicationLoggingConfiguration
+    Amazonka.Chime.GetSipRule
+    Amazonka.Chime.GetUser
+    Amazonka.Chime.GetUserSettings
+    Amazonka.Chime.GetVoiceConnector
+    Amazonka.Chime.GetVoiceConnectorEmergencyCallingConfiguration
+    Amazonka.Chime.GetVoiceConnectorGroup
+    Amazonka.Chime.GetVoiceConnectorLoggingConfiguration
+    Amazonka.Chime.GetVoiceConnectorOrigination
+    Amazonka.Chime.GetVoiceConnectorProxy
+    Amazonka.Chime.GetVoiceConnectorStreamingConfiguration
+    Amazonka.Chime.GetVoiceConnectorTermination
+    Amazonka.Chime.GetVoiceConnectorTerminationHealth
+    Amazonka.Chime.InviteUsers
+    Amazonka.Chime.Lens
+    Amazonka.Chime.ListAccounts
+    Amazonka.Chime.ListAppInstanceAdmins
+    Amazonka.Chime.ListAppInstances
+    Amazonka.Chime.ListAppInstanceUsers
+    Amazonka.Chime.ListAttendees
+    Amazonka.Chime.ListAttendeeTags
+    Amazonka.Chime.ListBots
+    Amazonka.Chime.ListChannelBans
+    Amazonka.Chime.ListChannelMemberships
+    Amazonka.Chime.ListChannelMembershipsForAppInstanceUser
+    Amazonka.Chime.ListChannelMessages
+    Amazonka.Chime.ListChannelModerators
+    Amazonka.Chime.ListChannels
+    Amazonka.Chime.ListChannelsModeratedByAppInstanceUser
+    Amazonka.Chime.ListMediaCapturePipelines
+    Amazonka.Chime.ListMeetings
+    Amazonka.Chime.ListMeetingTags
+    Amazonka.Chime.ListPhoneNumberOrders
+    Amazonka.Chime.ListPhoneNumbers
+    Amazonka.Chime.ListProxySessions
+    Amazonka.Chime.ListRoomMemberships
+    Amazonka.Chime.ListRooms
+    Amazonka.Chime.ListSipMediaApplications
+    Amazonka.Chime.ListSipRules
+    Amazonka.Chime.ListSupportedPhoneNumberCountries
+    Amazonka.Chime.ListTagsForResource
+    Amazonka.Chime.ListUsers
+    Amazonka.Chime.ListVoiceConnectorGroups
+    Amazonka.Chime.ListVoiceConnectors
+    Amazonka.Chime.ListVoiceConnectorTerminationCredentials
+    Amazonka.Chime.LogoutUser
+    Amazonka.Chime.PutAppInstanceRetentionSettings
+    Amazonka.Chime.PutAppInstanceStreamingConfigurations
+    Amazonka.Chime.PutEventsConfiguration
+    Amazonka.Chime.PutRetentionSettings
+    Amazonka.Chime.PutSipMediaApplicationLoggingConfiguration
+    Amazonka.Chime.PutVoiceConnectorEmergencyCallingConfiguration
+    Amazonka.Chime.PutVoiceConnectorLoggingConfiguration
+    Amazonka.Chime.PutVoiceConnectorOrigination
+    Amazonka.Chime.PutVoiceConnectorProxy
+    Amazonka.Chime.PutVoiceConnectorStreamingConfiguration
+    Amazonka.Chime.PutVoiceConnectorTermination
+    Amazonka.Chime.PutVoiceConnectorTerminationCredentials
+    Amazonka.Chime.RedactChannelMessage
+    Amazonka.Chime.RedactConversationMessage
+    Amazonka.Chime.RedactRoomMessage
+    Amazonka.Chime.RegenerateSecurityToken
+    Amazonka.Chime.ResetPersonalPIN
+    Amazonka.Chime.RestorePhoneNumber
+    Amazonka.Chime.SearchAvailablePhoneNumbers
+    Amazonka.Chime.SendChannelMessage
+    Amazonka.Chime.StartMeetingTranscription
+    Amazonka.Chime.StopMeetingTranscription
+    Amazonka.Chime.TagAttendee
+    Amazonka.Chime.TagMeeting
+    Amazonka.Chime.TagResource
+    Amazonka.Chime.Types
+    Amazonka.Chime.Types.Account
+    Amazonka.Chime.Types.AccountSettings
+    Amazonka.Chime.Types.AccountStatus
+    Amazonka.Chime.Types.AccountType
+    Amazonka.Chime.Types.Address
+    Amazonka.Chime.Types.AlexaForBusinessMetadata
+    Amazonka.Chime.Types.AppInstance
+    Amazonka.Chime.Types.AppInstanceAdmin
+    Amazonka.Chime.Types.AppInstanceAdminSummary
+    Amazonka.Chime.Types.AppInstanceDataType
+    Amazonka.Chime.Types.AppInstanceRetentionSettings
+    Amazonka.Chime.Types.AppInstanceStreamingConfiguration
+    Amazonka.Chime.Types.AppInstanceSummary
+    Amazonka.Chime.Types.AppInstanceUser
+    Amazonka.Chime.Types.AppInstanceUserMembershipSummary
+    Amazonka.Chime.Types.AppInstanceUserSummary
+    Amazonka.Chime.Types.ArtifactsConfiguration
+    Amazonka.Chime.Types.ArtifactsState
+    Amazonka.Chime.Types.Attendee
+    Amazonka.Chime.Types.AudioArtifactsConfiguration
+    Amazonka.Chime.Types.AudioMuxType
+    Amazonka.Chime.Types.BatchChannelMemberships
+    Amazonka.Chime.Types.BatchCreateChannelMembershipError
+    Amazonka.Chime.Types.Bot
+    Amazonka.Chime.Types.BotType
+    Amazonka.Chime.Types.BusinessCallingSettings
+    Amazonka.Chime.Types.CallingNameStatus
+    Amazonka.Chime.Types.CandidateAddress
+    Amazonka.Chime.Types.Capability
+    Amazonka.Chime.Types.Channel
+    Amazonka.Chime.Types.ChannelBan
+    Amazonka.Chime.Types.ChannelBanSummary
+    Amazonka.Chime.Types.ChannelMembership
+    Amazonka.Chime.Types.ChannelMembershipForAppInstanceUserSummary
+    Amazonka.Chime.Types.ChannelMembershipSummary
+    Amazonka.Chime.Types.ChannelMembershipType
+    Amazonka.Chime.Types.ChannelMessage
+    Amazonka.Chime.Types.ChannelMessagePersistenceType
+    Amazonka.Chime.Types.ChannelMessageSummary
+    Amazonka.Chime.Types.ChannelMessageType
+    Amazonka.Chime.Types.ChannelMode
+    Amazonka.Chime.Types.ChannelModeratedByAppInstanceUserSummary
+    Amazonka.Chime.Types.ChannelModerator
+    Amazonka.Chime.Types.ChannelModeratorSummary
+    Amazonka.Chime.Types.ChannelPrivacy
+    Amazonka.Chime.Types.ChannelRetentionSettings
+    Amazonka.Chime.Types.ChannelSummary
+    Amazonka.Chime.Types.ChimeSdkMeetingConfiguration
+    Amazonka.Chime.Types.ContentArtifactsConfiguration
+    Amazonka.Chime.Types.ContentMuxType
+    Amazonka.Chime.Types.ConversationRetentionSettings
+    Amazonka.Chime.Types.CreateAttendeeError
+    Amazonka.Chime.Types.CreateAttendeeRequestItem
+    Amazonka.Chime.Types.Credential
+    Amazonka.Chime.Types.DNISEmergencyCallingConfiguration
+    Amazonka.Chime.Types.EmailStatus
+    Amazonka.Chime.Types.EmergencyCallingConfiguration
+    Amazonka.Chime.Types.EngineTranscribeMedicalSettings
+    Amazonka.Chime.Types.EngineTranscribeSettings
+    Amazonka.Chime.Types.ErrorCode
+    Amazonka.Chime.Types.EventsConfiguration
+    Amazonka.Chime.Types.GeoMatchLevel
+    Amazonka.Chime.Types.GeoMatchParams
+    Amazonka.Chime.Types.Identity
+    Amazonka.Chime.Types.Invite
+    Amazonka.Chime.Types.InviteStatus
+    Amazonka.Chime.Types.License
+    Amazonka.Chime.Types.LoggingConfiguration
+    Amazonka.Chime.Types.MediaCapturePipeline
+    Amazonka.Chime.Types.MediaPipelineSinkType
+    Amazonka.Chime.Types.MediaPipelineSourceType
+    Amazonka.Chime.Types.MediaPipelineStatus
+    Amazonka.Chime.Types.MediaPlacement
+    Amazonka.Chime.Types.Meeting
+    Amazonka.Chime.Types.MeetingNotificationConfiguration
+    Amazonka.Chime.Types.Member
+    Amazonka.Chime.Types.MemberError
+    Amazonka.Chime.Types.MembershipItem
+    Amazonka.Chime.Types.MemberType
+    Amazonka.Chime.Types.MessagingSessionEndpoint
+    Amazonka.Chime.Types.NotificationTarget
+    Amazonka.Chime.Types.NumberSelectionBehavior
+    Amazonka.Chime.Types.OrderedPhoneNumber
+    Amazonka.Chime.Types.OrderedPhoneNumberStatus
+    Amazonka.Chime.Types.Origination
+    Amazonka.Chime.Types.OriginationRoute
+    Amazonka.Chime.Types.OriginationRouteProtocol
+    Amazonka.Chime.Types.Participant
+    Amazonka.Chime.Types.PhoneNumber
+    Amazonka.Chime.Types.PhoneNumberAssociation
+    Amazonka.Chime.Types.PhoneNumberAssociationName
+    Amazonka.Chime.Types.PhoneNumberCapabilities
+    Amazonka.Chime.Types.PhoneNumberCountry
+    Amazonka.Chime.Types.PhoneNumberError
+    Amazonka.Chime.Types.PhoneNumberOrder
+    Amazonka.Chime.Types.PhoneNumberOrderStatus
+    Amazonka.Chime.Types.PhoneNumberProductType
+    Amazonka.Chime.Types.PhoneNumberStatus
+    Amazonka.Chime.Types.PhoneNumberType
+    Amazonka.Chime.Types.Proxy
+    Amazonka.Chime.Types.ProxySession
+    Amazonka.Chime.Types.ProxySessionStatus
+    Amazonka.Chime.Types.RegistrationStatus
+    Amazonka.Chime.Types.RetentionSettings
+    Amazonka.Chime.Types.Room
+    Amazonka.Chime.Types.RoomMembership
+    Amazonka.Chime.Types.RoomMembershipRole
+    Amazonka.Chime.Types.RoomRetentionSettings
+    Amazonka.Chime.Types.SelectedVideoStreams
+    Amazonka.Chime.Types.SigninDelegateGroup
+    Amazonka.Chime.Types.SipMediaApplication
+    Amazonka.Chime.Types.SipMediaApplicationCall
+    Amazonka.Chime.Types.SipMediaApplicationEndpoint
+    Amazonka.Chime.Types.SipMediaApplicationLoggingConfiguration
+    Amazonka.Chime.Types.SipRule
+    Amazonka.Chime.Types.SipRuleTargetApplication
+    Amazonka.Chime.Types.SipRuleTriggerType
+    Amazonka.Chime.Types.SortOrder
+    Amazonka.Chime.Types.SourceConfiguration
+    Amazonka.Chime.Types.StreamingConfiguration
+    Amazonka.Chime.Types.StreamingNotificationTarget
+    Amazonka.Chime.Types.Tag
+    Amazonka.Chime.Types.TelephonySettings
+    Amazonka.Chime.Types.Termination
+    Amazonka.Chime.Types.TerminationHealth
+    Amazonka.Chime.Types.TranscribeContentIdentificationType
+    Amazonka.Chime.Types.TranscribeContentRedactionType
+    Amazonka.Chime.Types.TranscribeLanguageCode
+    Amazonka.Chime.Types.TranscribeMedicalContentIdentificationType
+    Amazonka.Chime.Types.TranscribeMedicalLanguageCode
+    Amazonka.Chime.Types.TranscribeMedicalRegion
+    Amazonka.Chime.Types.TranscribeMedicalSpecialty
+    Amazonka.Chime.Types.TranscribeMedicalType
+    Amazonka.Chime.Types.TranscribePartialResultsStability
+    Amazonka.Chime.Types.TranscribeRegion
+    Amazonka.Chime.Types.TranscribeVocabularyFilterMethod
+    Amazonka.Chime.Types.TranscriptionConfiguration
+    Amazonka.Chime.Types.UpdatePhoneNumberRequestItem
+    Amazonka.Chime.Types.UpdateUserRequestItem
+    Amazonka.Chime.Types.User
+    Amazonka.Chime.Types.UserError
+    Amazonka.Chime.Types.UserSettings
+    Amazonka.Chime.Types.UserType
+    Amazonka.Chime.Types.VideoArtifactsConfiguration
+    Amazonka.Chime.Types.VideoMuxType
+    Amazonka.Chime.Types.VoiceConnector
+    Amazonka.Chime.Types.VoiceConnectorAwsRegion
+    Amazonka.Chime.Types.VoiceConnectorGroup
+    Amazonka.Chime.Types.VoiceConnectorItem
+    Amazonka.Chime.Types.VoiceConnectorSettings
+    Amazonka.Chime.UntagAttendee
+    Amazonka.Chime.UntagMeeting
+    Amazonka.Chime.UntagResource
+    Amazonka.Chime.UpdateAccount
+    Amazonka.Chime.UpdateAccountSettings
+    Amazonka.Chime.UpdateAppInstance
+    Amazonka.Chime.UpdateAppInstanceUser
+    Amazonka.Chime.UpdateBot
+    Amazonka.Chime.UpdateChannel
+    Amazonka.Chime.UpdateChannelMessage
+    Amazonka.Chime.UpdateChannelReadMarker
+    Amazonka.Chime.UpdateGlobalSettings
+    Amazonka.Chime.UpdatePhoneNumber
+    Amazonka.Chime.UpdatePhoneNumberSettings
+    Amazonka.Chime.UpdateProxySession
+    Amazonka.Chime.UpdateRoom
+    Amazonka.Chime.UpdateRoomMembership
+    Amazonka.Chime.UpdateSipMediaApplication
+    Amazonka.Chime.UpdateSipMediaApplicationCall
+    Amazonka.Chime.UpdateSipRule
+    Amazonka.Chime.UpdateUser
+    Amazonka.Chime.UpdateUserSettings
+    Amazonka.Chime.UpdateVoiceConnector
+    Amazonka.Chime.UpdateVoiceConnectorGroup
+    Amazonka.Chime.ValidateE911Address
+    Amazonka.Chime.Waiters
+
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
+
+test-suite amazonka-chime-test
+  type:             exitcode-stdio-1.0
+  default-language: Haskell2010
+  hs-source-dirs:   test
+  main-is:          Main.hs
+  ghc-options:      -Wall -threaded
+
+  -- This section is encoded by the template and any modules added by
+  -- hand outside these namespaces will not correctly be added to the
+  -- distribution package.
+  other-modules:
+    Test.Amazonka.Chime
+    Test.Amazonka.Chime.Internal
+    Test.Amazonka.Gen.Chime
+
+  build-depends:
+    , amazonka-chime
+    , amazonka-core         >=2.0 && <2.1
+    , amazonka-test         >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/AssociatePhoneNumberWithUser.yaml b/fixture/AssociatePhoneNumberWithUser.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/AssociatePhoneNumberWithUser.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/AssociatePhoneNumberWithUserResponse.proto b/fixture/AssociatePhoneNumberWithUserResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/AssociatePhoneNumberWithUserResponse.proto
diff --git a/fixture/AssociatePhoneNumbersWithVoiceConnector.yaml b/fixture/AssociatePhoneNumbersWithVoiceConnector.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/AssociatePhoneNumbersWithVoiceConnector.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/AssociatePhoneNumbersWithVoiceConnectorGroup.yaml b/fixture/AssociatePhoneNumbersWithVoiceConnectorGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/AssociatePhoneNumbersWithVoiceConnectorGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/AssociatePhoneNumbersWithVoiceConnectorGroupResponse.proto b/fixture/AssociatePhoneNumbersWithVoiceConnectorGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/AssociatePhoneNumbersWithVoiceConnectorGroupResponse.proto
diff --git a/fixture/AssociatePhoneNumbersWithVoiceConnectorResponse.proto b/fixture/AssociatePhoneNumbersWithVoiceConnectorResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/AssociatePhoneNumbersWithVoiceConnectorResponse.proto
diff --git a/fixture/AssociateSigninDelegateGroupsWithAccount.yaml b/fixture/AssociateSigninDelegateGroupsWithAccount.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/AssociateSigninDelegateGroupsWithAccount.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/AssociateSigninDelegateGroupsWithAccountResponse.proto b/fixture/AssociateSigninDelegateGroupsWithAccountResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/AssociateSigninDelegateGroupsWithAccountResponse.proto
diff --git a/fixture/BatchCreateAttendee.yaml b/fixture/BatchCreateAttendee.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/BatchCreateAttendee.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/BatchCreateAttendeeResponse.proto b/fixture/BatchCreateAttendeeResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/BatchCreateAttendeeResponse.proto
diff --git a/fixture/BatchCreateChannelMembership.yaml b/fixture/BatchCreateChannelMembership.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/BatchCreateChannelMembership.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/BatchCreateChannelMembershipResponse.proto b/fixture/BatchCreateChannelMembershipResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/BatchCreateChannelMembershipResponse.proto
diff --git a/fixture/BatchCreateRoomMembership.yaml b/fixture/BatchCreateRoomMembership.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/BatchCreateRoomMembership.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/BatchCreateRoomMembershipResponse.proto b/fixture/BatchCreateRoomMembershipResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/BatchCreateRoomMembershipResponse.proto
diff --git a/fixture/BatchDeletePhoneNumber.yaml b/fixture/BatchDeletePhoneNumber.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/BatchDeletePhoneNumber.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/BatchDeletePhoneNumberResponse.proto b/fixture/BatchDeletePhoneNumberResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/BatchDeletePhoneNumberResponse.proto
diff --git a/fixture/BatchSuspendUser.yaml b/fixture/BatchSuspendUser.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/BatchSuspendUser.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/BatchSuspendUserResponse.proto b/fixture/BatchSuspendUserResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/BatchSuspendUserResponse.proto
diff --git a/fixture/BatchUnsuspendUser.yaml b/fixture/BatchUnsuspendUser.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/BatchUnsuspendUser.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/BatchUnsuspendUserResponse.proto b/fixture/BatchUnsuspendUserResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/BatchUnsuspendUserResponse.proto
diff --git a/fixture/BatchUpdatePhoneNumber.yaml b/fixture/BatchUpdatePhoneNumber.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/BatchUpdatePhoneNumber.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/BatchUpdatePhoneNumberResponse.proto b/fixture/BatchUpdatePhoneNumberResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/BatchUpdatePhoneNumberResponse.proto
diff --git a/fixture/BatchUpdateUser.yaml b/fixture/BatchUpdateUser.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/BatchUpdateUser.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/BatchUpdateUserResponse.proto b/fixture/BatchUpdateUserResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/BatchUpdateUserResponse.proto
diff --git a/fixture/CreateAccount.yaml b/fixture/CreateAccount.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateAccount.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateAccountResponse.proto b/fixture/CreateAccountResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateAccountResponse.proto
diff --git a/fixture/CreateAppInstance.yaml b/fixture/CreateAppInstance.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateAppInstance.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateAppInstanceAdmin.yaml b/fixture/CreateAppInstanceAdmin.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateAppInstanceAdmin.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateAppInstanceAdminResponse.proto b/fixture/CreateAppInstanceAdminResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateAppInstanceAdminResponse.proto
diff --git a/fixture/CreateAppInstanceResponse.proto b/fixture/CreateAppInstanceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateAppInstanceResponse.proto
diff --git a/fixture/CreateAppInstanceUser.yaml b/fixture/CreateAppInstanceUser.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateAppInstanceUser.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateAppInstanceUserResponse.proto b/fixture/CreateAppInstanceUserResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateAppInstanceUserResponse.proto
diff --git a/fixture/CreateAttendee.yaml b/fixture/CreateAttendee.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateAttendee.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateAttendeeResponse.proto b/fixture/CreateAttendeeResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateAttendeeResponse.proto
diff --git a/fixture/CreateBot.yaml b/fixture/CreateBot.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateBot.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateBotResponse.proto b/fixture/CreateBotResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateBotResponse.proto
diff --git a/fixture/CreateChannel.yaml b/fixture/CreateChannel.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateChannel.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateChannelBan.yaml b/fixture/CreateChannelBan.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateChannelBan.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateChannelBanResponse.proto b/fixture/CreateChannelBanResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateChannelBanResponse.proto
diff --git a/fixture/CreateChannelMembership.yaml b/fixture/CreateChannelMembership.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateChannelMembership.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateChannelMembershipResponse.proto b/fixture/CreateChannelMembershipResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateChannelMembershipResponse.proto
diff --git a/fixture/CreateChannelModerator.yaml b/fixture/CreateChannelModerator.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateChannelModerator.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateChannelModeratorResponse.proto b/fixture/CreateChannelModeratorResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateChannelModeratorResponse.proto
diff --git a/fixture/CreateChannelResponse.proto b/fixture/CreateChannelResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateChannelResponse.proto
diff --git a/fixture/CreateMediaCapturePipeline.yaml b/fixture/CreateMediaCapturePipeline.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateMediaCapturePipeline.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateMediaCapturePipelineResponse.proto b/fixture/CreateMediaCapturePipelineResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateMediaCapturePipelineResponse.proto
diff --git a/fixture/CreateMeeting.yaml b/fixture/CreateMeeting.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateMeeting.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateMeetingDialOut.yaml b/fixture/CreateMeetingDialOut.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateMeetingDialOut.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateMeetingDialOutResponse.proto b/fixture/CreateMeetingDialOutResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateMeetingDialOutResponse.proto
diff --git a/fixture/CreateMeetingResponse.proto b/fixture/CreateMeetingResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateMeetingResponse.proto
diff --git a/fixture/CreateMeetingWithAttendees.yaml b/fixture/CreateMeetingWithAttendees.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateMeetingWithAttendees.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateMeetingWithAttendeesResponse.proto b/fixture/CreateMeetingWithAttendeesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateMeetingWithAttendeesResponse.proto
diff --git a/fixture/CreatePhoneNumberOrder.yaml b/fixture/CreatePhoneNumberOrder.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreatePhoneNumberOrder.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreatePhoneNumberOrderResponse.proto b/fixture/CreatePhoneNumberOrderResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreatePhoneNumberOrderResponse.proto
diff --git a/fixture/CreateProxySession.yaml b/fixture/CreateProxySession.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateProxySession.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateProxySessionResponse.proto b/fixture/CreateProxySessionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateProxySessionResponse.proto
diff --git a/fixture/CreateRoom.yaml b/fixture/CreateRoom.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateRoom.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateRoomMembership.yaml b/fixture/CreateRoomMembership.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateRoomMembership.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateRoomMembershipResponse.proto b/fixture/CreateRoomMembershipResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateRoomMembershipResponse.proto
diff --git a/fixture/CreateRoomResponse.proto b/fixture/CreateRoomResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateRoomResponse.proto
diff --git a/fixture/CreateSipMediaApplication.yaml b/fixture/CreateSipMediaApplication.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateSipMediaApplication.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateSipMediaApplicationCall.yaml b/fixture/CreateSipMediaApplicationCall.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateSipMediaApplicationCall.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateSipMediaApplicationCallResponse.proto b/fixture/CreateSipMediaApplicationCallResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateSipMediaApplicationCallResponse.proto
diff --git a/fixture/CreateSipMediaApplicationResponse.proto b/fixture/CreateSipMediaApplicationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateSipMediaApplicationResponse.proto
diff --git a/fixture/CreateSipRule.yaml b/fixture/CreateSipRule.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateSipRule.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateSipRuleResponse.proto b/fixture/CreateSipRuleResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateSipRuleResponse.proto
diff --git a/fixture/CreateUser.yaml b/fixture/CreateUser.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateUser.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateUserResponse.proto b/fixture/CreateUserResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateUserResponse.proto
diff --git a/fixture/CreateVoiceConnector.yaml b/fixture/CreateVoiceConnector.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateVoiceConnector.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateVoiceConnectorGroup.yaml b/fixture/CreateVoiceConnectorGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateVoiceConnectorGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateVoiceConnectorGroupResponse.proto b/fixture/CreateVoiceConnectorGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateVoiceConnectorGroupResponse.proto
diff --git a/fixture/CreateVoiceConnectorResponse.proto b/fixture/CreateVoiceConnectorResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateVoiceConnectorResponse.proto
diff --git a/fixture/DeleteAccount.yaml b/fixture/DeleteAccount.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAccount.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteAccountResponse.proto b/fixture/DeleteAccountResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAccountResponse.proto
diff --git a/fixture/DeleteAppInstance.yaml b/fixture/DeleteAppInstance.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAppInstance.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteAppInstanceAdmin.yaml b/fixture/DeleteAppInstanceAdmin.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAppInstanceAdmin.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteAppInstanceAdminResponse.proto b/fixture/DeleteAppInstanceAdminResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAppInstanceAdminResponse.proto
diff --git a/fixture/DeleteAppInstanceResponse.proto b/fixture/DeleteAppInstanceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAppInstanceResponse.proto
diff --git a/fixture/DeleteAppInstanceStreamingConfigurations.yaml b/fixture/DeleteAppInstanceStreamingConfigurations.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAppInstanceStreamingConfigurations.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteAppInstanceStreamingConfigurationsResponse.proto b/fixture/DeleteAppInstanceStreamingConfigurationsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAppInstanceStreamingConfigurationsResponse.proto
diff --git a/fixture/DeleteAppInstanceUser.yaml b/fixture/DeleteAppInstanceUser.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAppInstanceUser.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteAppInstanceUserResponse.proto b/fixture/DeleteAppInstanceUserResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAppInstanceUserResponse.proto
diff --git a/fixture/DeleteAttendee.yaml b/fixture/DeleteAttendee.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAttendee.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteAttendeeResponse.proto b/fixture/DeleteAttendeeResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAttendeeResponse.proto
diff --git a/fixture/DeleteChannel.yaml b/fixture/DeleteChannel.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteChannel.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteChannelBan.yaml b/fixture/DeleteChannelBan.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteChannelBan.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteChannelBanResponse.proto b/fixture/DeleteChannelBanResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteChannelBanResponse.proto
diff --git a/fixture/DeleteChannelMembership.yaml b/fixture/DeleteChannelMembership.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteChannelMembership.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteChannelMembershipResponse.proto b/fixture/DeleteChannelMembershipResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteChannelMembershipResponse.proto
diff --git a/fixture/DeleteChannelMessage.yaml b/fixture/DeleteChannelMessage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteChannelMessage.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteChannelMessageResponse.proto b/fixture/DeleteChannelMessageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteChannelMessageResponse.proto
diff --git a/fixture/DeleteChannelModerator.yaml b/fixture/DeleteChannelModerator.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteChannelModerator.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteChannelModeratorResponse.proto b/fixture/DeleteChannelModeratorResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteChannelModeratorResponse.proto
diff --git a/fixture/DeleteChannelResponse.proto b/fixture/DeleteChannelResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteChannelResponse.proto
diff --git a/fixture/DeleteEventsConfiguration.yaml b/fixture/DeleteEventsConfiguration.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteEventsConfiguration.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteEventsConfigurationResponse.proto b/fixture/DeleteEventsConfigurationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteEventsConfigurationResponse.proto
diff --git a/fixture/DeleteMediaCapturePipeline.yaml b/fixture/DeleteMediaCapturePipeline.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteMediaCapturePipeline.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteMediaCapturePipelineResponse.proto b/fixture/DeleteMediaCapturePipelineResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteMediaCapturePipelineResponse.proto
diff --git a/fixture/DeleteMeeting.yaml b/fixture/DeleteMeeting.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteMeeting.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteMeetingResponse.proto b/fixture/DeleteMeetingResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteMeetingResponse.proto
diff --git a/fixture/DeletePhoneNumber.yaml b/fixture/DeletePhoneNumber.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeletePhoneNumber.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeletePhoneNumberResponse.proto b/fixture/DeletePhoneNumberResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeletePhoneNumberResponse.proto
diff --git a/fixture/DeleteProxySession.yaml b/fixture/DeleteProxySession.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteProxySession.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteProxySessionResponse.proto b/fixture/DeleteProxySessionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteProxySessionResponse.proto
diff --git a/fixture/DeleteRoom.yaml b/fixture/DeleteRoom.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteRoom.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteRoomMembership.yaml b/fixture/DeleteRoomMembership.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteRoomMembership.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteRoomMembershipResponse.proto b/fixture/DeleteRoomMembershipResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteRoomMembershipResponse.proto
diff --git a/fixture/DeleteRoomResponse.proto b/fixture/DeleteRoomResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteRoomResponse.proto
diff --git a/fixture/DeleteSipMediaApplication.yaml b/fixture/DeleteSipMediaApplication.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteSipMediaApplication.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteSipMediaApplicationResponse.proto b/fixture/DeleteSipMediaApplicationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteSipMediaApplicationResponse.proto
diff --git a/fixture/DeleteSipRule.yaml b/fixture/DeleteSipRule.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteSipRule.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteSipRuleResponse.proto b/fixture/DeleteSipRuleResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteSipRuleResponse.proto
diff --git a/fixture/DeleteVoiceConnector.yaml b/fixture/DeleteVoiceConnector.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteVoiceConnector.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteVoiceConnectorEmergencyCallingConfiguration.yaml b/fixture/DeleteVoiceConnectorEmergencyCallingConfiguration.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteVoiceConnectorEmergencyCallingConfiguration.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteVoiceConnectorEmergencyCallingConfigurationResponse.proto b/fixture/DeleteVoiceConnectorEmergencyCallingConfigurationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteVoiceConnectorEmergencyCallingConfigurationResponse.proto
diff --git a/fixture/DeleteVoiceConnectorGroup.yaml b/fixture/DeleteVoiceConnectorGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteVoiceConnectorGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteVoiceConnectorGroupResponse.proto b/fixture/DeleteVoiceConnectorGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteVoiceConnectorGroupResponse.proto
diff --git a/fixture/DeleteVoiceConnectorOrigination.yaml b/fixture/DeleteVoiceConnectorOrigination.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteVoiceConnectorOrigination.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteVoiceConnectorOriginationResponse.proto b/fixture/DeleteVoiceConnectorOriginationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteVoiceConnectorOriginationResponse.proto
diff --git a/fixture/DeleteVoiceConnectorProxy.yaml b/fixture/DeleteVoiceConnectorProxy.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteVoiceConnectorProxy.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteVoiceConnectorProxyResponse.proto b/fixture/DeleteVoiceConnectorProxyResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteVoiceConnectorProxyResponse.proto
diff --git a/fixture/DeleteVoiceConnectorResponse.proto b/fixture/DeleteVoiceConnectorResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteVoiceConnectorResponse.proto
diff --git a/fixture/DeleteVoiceConnectorStreamingConfiguration.yaml b/fixture/DeleteVoiceConnectorStreamingConfiguration.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteVoiceConnectorStreamingConfiguration.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteVoiceConnectorStreamingConfigurationResponse.proto b/fixture/DeleteVoiceConnectorStreamingConfigurationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteVoiceConnectorStreamingConfigurationResponse.proto
diff --git a/fixture/DeleteVoiceConnectorTermination.yaml b/fixture/DeleteVoiceConnectorTermination.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteVoiceConnectorTermination.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteVoiceConnectorTerminationCredentials.yaml b/fixture/DeleteVoiceConnectorTerminationCredentials.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteVoiceConnectorTerminationCredentials.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteVoiceConnectorTerminationCredentialsResponse.proto b/fixture/DeleteVoiceConnectorTerminationCredentialsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteVoiceConnectorTerminationCredentialsResponse.proto
diff --git a/fixture/DeleteVoiceConnectorTerminationResponse.proto b/fixture/DeleteVoiceConnectorTerminationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteVoiceConnectorTerminationResponse.proto
diff --git a/fixture/DescribeAppInstance.yaml b/fixture/DescribeAppInstance.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeAppInstance.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeAppInstanceAdmin.yaml b/fixture/DescribeAppInstanceAdmin.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeAppInstanceAdmin.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeAppInstanceAdminResponse.proto b/fixture/DescribeAppInstanceAdminResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeAppInstanceAdminResponse.proto
diff --git a/fixture/DescribeAppInstanceResponse.proto b/fixture/DescribeAppInstanceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeAppInstanceResponse.proto
diff --git a/fixture/DescribeAppInstanceUser.yaml b/fixture/DescribeAppInstanceUser.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeAppInstanceUser.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeAppInstanceUserResponse.proto b/fixture/DescribeAppInstanceUserResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeAppInstanceUserResponse.proto
diff --git a/fixture/DescribeChannel.yaml b/fixture/DescribeChannel.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeChannel.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeChannelBan.yaml b/fixture/DescribeChannelBan.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeChannelBan.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeChannelBanResponse.proto b/fixture/DescribeChannelBanResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeChannelBanResponse.proto
diff --git a/fixture/DescribeChannelMembership.yaml b/fixture/DescribeChannelMembership.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeChannelMembership.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeChannelMembershipForAppInstanceUser.yaml b/fixture/DescribeChannelMembershipForAppInstanceUser.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeChannelMembershipForAppInstanceUser.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeChannelMembershipForAppInstanceUserResponse.proto b/fixture/DescribeChannelMembershipForAppInstanceUserResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeChannelMembershipForAppInstanceUserResponse.proto
diff --git a/fixture/DescribeChannelMembershipResponse.proto b/fixture/DescribeChannelMembershipResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeChannelMembershipResponse.proto
diff --git a/fixture/DescribeChannelModeratedByAppInstanceUser.yaml b/fixture/DescribeChannelModeratedByAppInstanceUser.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeChannelModeratedByAppInstanceUser.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeChannelModeratedByAppInstanceUserResponse.proto b/fixture/DescribeChannelModeratedByAppInstanceUserResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeChannelModeratedByAppInstanceUserResponse.proto
diff --git a/fixture/DescribeChannelModerator.yaml b/fixture/DescribeChannelModerator.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeChannelModerator.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeChannelModeratorResponse.proto b/fixture/DescribeChannelModeratorResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeChannelModeratorResponse.proto
diff --git a/fixture/DescribeChannelResponse.proto b/fixture/DescribeChannelResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeChannelResponse.proto
diff --git a/fixture/DisassociatePhoneNumberFromUser.yaml b/fixture/DisassociatePhoneNumberFromUser.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociatePhoneNumberFromUser.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DisassociatePhoneNumberFromUserResponse.proto b/fixture/DisassociatePhoneNumberFromUserResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociatePhoneNumberFromUserResponse.proto
diff --git a/fixture/DisassociatePhoneNumbersFromVoiceConnector.yaml b/fixture/DisassociatePhoneNumbersFromVoiceConnector.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociatePhoneNumbersFromVoiceConnector.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DisassociatePhoneNumbersFromVoiceConnectorGroup.yaml b/fixture/DisassociatePhoneNumbersFromVoiceConnectorGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociatePhoneNumbersFromVoiceConnectorGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DisassociatePhoneNumbersFromVoiceConnectorGroupResponse.proto b/fixture/DisassociatePhoneNumbersFromVoiceConnectorGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociatePhoneNumbersFromVoiceConnectorGroupResponse.proto
diff --git a/fixture/DisassociatePhoneNumbersFromVoiceConnectorResponse.proto b/fixture/DisassociatePhoneNumbersFromVoiceConnectorResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociatePhoneNumbersFromVoiceConnectorResponse.proto
diff --git a/fixture/DisassociateSigninDelegateGroupsFromAccount.yaml b/fixture/DisassociateSigninDelegateGroupsFromAccount.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociateSigninDelegateGroupsFromAccount.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DisassociateSigninDelegateGroupsFromAccountResponse.proto b/fixture/DisassociateSigninDelegateGroupsFromAccountResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociateSigninDelegateGroupsFromAccountResponse.proto
diff --git a/fixture/GetAccount.yaml b/fixture/GetAccount.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetAccount.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetAccountResponse.proto b/fixture/GetAccountResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetAccountResponse.proto
diff --git a/fixture/GetAccountSettings.yaml b/fixture/GetAccountSettings.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetAccountSettings.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetAccountSettingsResponse.proto b/fixture/GetAccountSettingsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetAccountSettingsResponse.proto
diff --git a/fixture/GetAppInstanceRetentionSettings.yaml b/fixture/GetAppInstanceRetentionSettings.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetAppInstanceRetentionSettings.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetAppInstanceRetentionSettingsResponse.proto b/fixture/GetAppInstanceRetentionSettingsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetAppInstanceRetentionSettingsResponse.proto
diff --git a/fixture/GetAppInstanceStreamingConfigurations.yaml b/fixture/GetAppInstanceStreamingConfigurations.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetAppInstanceStreamingConfigurations.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetAppInstanceStreamingConfigurationsResponse.proto b/fixture/GetAppInstanceStreamingConfigurationsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetAppInstanceStreamingConfigurationsResponse.proto
diff --git a/fixture/GetAttendee.yaml b/fixture/GetAttendee.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetAttendee.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetAttendeeResponse.proto b/fixture/GetAttendeeResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetAttendeeResponse.proto
diff --git a/fixture/GetBot.yaml b/fixture/GetBot.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetBot.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetBotResponse.proto b/fixture/GetBotResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetBotResponse.proto
diff --git a/fixture/GetChannelMessage.yaml b/fixture/GetChannelMessage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetChannelMessage.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetChannelMessageResponse.proto b/fixture/GetChannelMessageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetChannelMessageResponse.proto
diff --git a/fixture/GetEventsConfiguration.yaml b/fixture/GetEventsConfiguration.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetEventsConfiguration.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetEventsConfigurationResponse.proto b/fixture/GetEventsConfigurationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetEventsConfigurationResponse.proto
diff --git a/fixture/GetGlobalSettings.yaml b/fixture/GetGlobalSettings.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetGlobalSettings.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetGlobalSettingsResponse.proto b/fixture/GetGlobalSettingsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetGlobalSettingsResponse.proto
diff --git a/fixture/GetMediaCapturePipeline.yaml b/fixture/GetMediaCapturePipeline.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetMediaCapturePipeline.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetMediaCapturePipelineResponse.proto b/fixture/GetMediaCapturePipelineResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetMediaCapturePipelineResponse.proto
diff --git a/fixture/GetMeeting.yaml b/fixture/GetMeeting.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetMeeting.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetMeetingResponse.proto b/fixture/GetMeetingResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetMeetingResponse.proto
diff --git a/fixture/GetMessagingSessionEndpoint.yaml b/fixture/GetMessagingSessionEndpoint.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetMessagingSessionEndpoint.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetMessagingSessionEndpointResponse.proto b/fixture/GetMessagingSessionEndpointResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetMessagingSessionEndpointResponse.proto
diff --git a/fixture/GetPhoneNumber.yaml b/fixture/GetPhoneNumber.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetPhoneNumber.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetPhoneNumberOrder.yaml b/fixture/GetPhoneNumberOrder.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetPhoneNumberOrder.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetPhoneNumberOrderResponse.proto b/fixture/GetPhoneNumberOrderResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetPhoneNumberOrderResponse.proto
diff --git a/fixture/GetPhoneNumberResponse.proto b/fixture/GetPhoneNumberResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetPhoneNumberResponse.proto
diff --git a/fixture/GetPhoneNumberSettings.yaml b/fixture/GetPhoneNumberSettings.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetPhoneNumberSettings.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetPhoneNumberSettingsResponse.proto b/fixture/GetPhoneNumberSettingsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetPhoneNumberSettingsResponse.proto
diff --git a/fixture/GetProxySession.yaml b/fixture/GetProxySession.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetProxySession.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetProxySessionResponse.proto b/fixture/GetProxySessionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetProxySessionResponse.proto
diff --git a/fixture/GetRetentionSettings.yaml b/fixture/GetRetentionSettings.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetRetentionSettings.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetRetentionSettingsResponse.proto b/fixture/GetRetentionSettingsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetRetentionSettingsResponse.proto
diff --git a/fixture/GetRoom.yaml b/fixture/GetRoom.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetRoom.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetRoomResponse.proto b/fixture/GetRoomResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetRoomResponse.proto
diff --git a/fixture/GetSipMediaApplication.yaml b/fixture/GetSipMediaApplication.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetSipMediaApplication.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetSipMediaApplicationLoggingConfiguration.yaml b/fixture/GetSipMediaApplicationLoggingConfiguration.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetSipMediaApplicationLoggingConfiguration.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetSipMediaApplicationLoggingConfigurationResponse.proto b/fixture/GetSipMediaApplicationLoggingConfigurationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetSipMediaApplicationLoggingConfigurationResponse.proto
diff --git a/fixture/GetSipMediaApplicationResponse.proto b/fixture/GetSipMediaApplicationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetSipMediaApplicationResponse.proto
diff --git a/fixture/GetSipRule.yaml b/fixture/GetSipRule.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetSipRule.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetSipRuleResponse.proto b/fixture/GetSipRuleResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetSipRuleResponse.proto
diff --git a/fixture/GetUser.yaml b/fixture/GetUser.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetUser.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetUserResponse.proto b/fixture/GetUserResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetUserResponse.proto
diff --git a/fixture/GetUserSettings.yaml b/fixture/GetUserSettings.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetUserSettings.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetUserSettingsResponse.proto b/fixture/GetUserSettingsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetUserSettingsResponse.proto
diff --git a/fixture/GetVoiceConnector.yaml b/fixture/GetVoiceConnector.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetVoiceConnector.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetVoiceConnectorEmergencyCallingConfiguration.yaml b/fixture/GetVoiceConnectorEmergencyCallingConfiguration.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetVoiceConnectorEmergencyCallingConfiguration.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetVoiceConnectorEmergencyCallingConfigurationResponse.proto b/fixture/GetVoiceConnectorEmergencyCallingConfigurationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetVoiceConnectorEmergencyCallingConfigurationResponse.proto
diff --git a/fixture/GetVoiceConnectorGroup.yaml b/fixture/GetVoiceConnectorGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetVoiceConnectorGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetVoiceConnectorGroupResponse.proto b/fixture/GetVoiceConnectorGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetVoiceConnectorGroupResponse.proto
diff --git a/fixture/GetVoiceConnectorLoggingConfiguration.yaml b/fixture/GetVoiceConnectorLoggingConfiguration.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetVoiceConnectorLoggingConfiguration.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetVoiceConnectorLoggingConfigurationResponse.proto b/fixture/GetVoiceConnectorLoggingConfigurationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetVoiceConnectorLoggingConfigurationResponse.proto
diff --git a/fixture/GetVoiceConnectorOrigination.yaml b/fixture/GetVoiceConnectorOrigination.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetVoiceConnectorOrigination.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetVoiceConnectorOriginationResponse.proto b/fixture/GetVoiceConnectorOriginationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetVoiceConnectorOriginationResponse.proto
diff --git a/fixture/GetVoiceConnectorProxy.yaml b/fixture/GetVoiceConnectorProxy.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetVoiceConnectorProxy.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetVoiceConnectorProxyResponse.proto b/fixture/GetVoiceConnectorProxyResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetVoiceConnectorProxyResponse.proto
diff --git a/fixture/GetVoiceConnectorResponse.proto b/fixture/GetVoiceConnectorResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetVoiceConnectorResponse.proto
diff --git a/fixture/GetVoiceConnectorStreamingConfiguration.yaml b/fixture/GetVoiceConnectorStreamingConfiguration.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetVoiceConnectorStreamingConfiguration.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetVoiceConnectorStreamingConfigurationResponse.proto b/fixture/GetVoiceConnectorStreamingConfigurationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetVoiceConnectorStreamingConfigurationResponse.proto
diff --git a/fixture/GetVoiceConnectorTermination.yaml b/fixture/GetVoiceConnectorTermination.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetVoiceConnectorTermination.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetVoiceConnectorTerminationHealth.yaml b/fixture/GetVoiceConnectorTerminationHealth.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetVoiceConnectorTerminationHealth.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetVoiceConnectorTerminationHealthResponse.proto b/fixture/GetVoiceConnectorTerminationHealthResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetVoiceConnectorTerminationHealthResponse.proto
diff --git a/fixture/GetVoiceConnectorTerminationResponse.proto b/fixture/GetVoiceConnectorTerminationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetVoiceConnectorTerminationResponse.proto
diff --git a/fixture/InviteUsers.yaml b/fixture/InviteUsers.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/InviteUsers.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/InviteUsersResponse.proto b/fixture/InviteUsersResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/InviteUsersResponse.proto
diff --git a/fixture/ListAccounts.yaml b/fixture/ListAccounts.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListAccounts.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListAccountsResponse.proto b/fixture/ListAccountsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListAccountsResponse.proto
diff --git a/fixture/ListAppInstanceAdmins.yaml b/fixture/ListAppInstanceAdmins.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListAppInstanceAdmins.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListAppInstanceAdminsResponse.proto b/fixture/ListAppInstanceAdminsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListAppInstanceAdminsResponse.proto
diff --git a/fixture/ListAppInstanceUsers.yaml b/fixture/ListAppInstanceUsers.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListAppInstanceUsers.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListAppInstanceUsersResponse.proto b/fixture/ListAppInstanceUsersResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListAppInstanceUsersResponse.proto
diff --git a/fixture/ListAppInstances.yaml b/fixture/ListAppInstances.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListAppInstances.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListAppInstancesResponse.proto b/fixture/ListAppInstancesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListAppInstancesResponse.proto
diff --git a/fixture/ListAttendeeTags.yaml b/fixture/ListAttendeeTags.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListAttendeeTags.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListAttendeeTagsResponse.proto b/fixture/ListAttendeeTagsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListAttendeeTagsResponse.proto
diff --git a/fixture/ListAttendees.yaml b/fixture/ListAttendees.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListAttendees.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListAttendeesResponse.proto b/fixture/ListAttendeesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListAttendeesResponse.proto
diff --git a/fixture/ListBots.yaml b/fixture/ListBots.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListBots.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListBotsResponse.proto b/fixture/ListBotsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListBotsResponse.proto
diff --git a/fixture/ListChannelBans.yaml b/fixture/ListChannelBans.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListChannelBans.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListChannelBansResponse.proto b/fixture/ListChannelBansResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListChannelBansResponse.proto
diff --git a/fixture/ListChannelMemberships.yaml b/fixture/ListChannelMemberships.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListChannelMemberships.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListChannelMembershipsForAppInstanceUser.yaml b/fixture/ListChannelMembershipsForAppInstanceUser.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListChannelMembershipsForAppInstanceUser.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListChannelMembershipsForAppInstanceUserResponse.proto b/fixture/ListChannelMembershipsForAppInstanceUserResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListChannelMembershipsForAppInstanceUserResponse.proto
diff --git a/fixture/ListChannelMembershipsResponse.proto b/fixture/ListChannelMembershipsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListChannelMembershipsResponse.proto
diff --git a/fixture/ListChannelMessages.yaml b/fixture/ListChannelMessages.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListChannelMessages.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListChannelMessagesResponse.proto b/fixture/ListChannelMessagesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListChannelMessagesResponse.proto
diff --git a/fixture/ListChannelModerators.yaml b/fixture/ListChannelModerators.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListChannelModerators.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListChannelModeratorsResponse.proto b/fixture/ListChannelModeratorsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListChannelModeratorsResponse.proto
diff --git a/fixture/ListChannels.yaml b/fixture/ListChannels.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListChannels.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListChannelsModeratedByAppInstanceUser.yaml b/fixture/ListChannelsModeratedByAppInstanceUser.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListChannelsModeratedByAppInstanceUser.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListChannelsModeratedByAppInstanceUserResponse.proto b/fixture/ListChannelsModeratedByAppInstanceUserResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListChannelsModeratedByAppInstanceUserResponse.proto
diff --git a/fixture/ListChannelsResponse.proto b/fixture/ListChannelsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListChannelsResponse.proto
diff --git a/fixture/ListMediaCapturePipelines.yaml b/fixture/ListMediaCapturePipelines.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListMediaCapturePipelines.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListMediaCapturePipelinesResponse.proto b/fixture/ListMediaCapturePipelinesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListMediaCapturePipelinesResponse.proto
diff --git a/fixture/ListMeetingTags.yaml b/fixture/ListMeetingTags.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListMeetingTags.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListMeetingTagsResponse.proto b/fixture/ListMeetingTagsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListMeetingTagsResponse.proto
diff --git a/fixture/ListMeetings.yaml b/fixture/ListMeetings.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListMeetings.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListMeetingsResponse.proto b/fixture/ListMeetingsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListMeetingsResponse.proto
diff --git a/fixture/ListPhoneNumberOrders.yaml b/fixture/ListPhoneNumberOrders.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListPhoneNumberOrders.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListPhoneNumberOrdersResponse.proto b/fixture/ListPhoneNumberOrdersResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListPhoneNumberOrdersResponse.proto
diff --git a/fixture/ListPhoneNumbers.yaml b/fixture/ListPhoneNumbers.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListPhoneNumbers.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListPhoneNumbersResponse.proto b/fixture/ListPhoneNumbersResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListPhoneNumbersResponse.proto
diff --git a/fixture/ListProxySessions.yaml b/fixture/ListProxySessions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListProxySessions.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListProxySessionsResponse.proto b/fixture/ListProxySessionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListProxySessionsResponse.proto
diff --git a/fixture/ListRoomMemberships.yaml b/fixture/ListRoomMemberships.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListRoomMemberships.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListRoomMembershipsResponse.proto b/fixture/ListRoomMembershipsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListRoomMembershipsResponse.proto
diff --git a/fixture/ListRooms.yaml b/fixture/ListRooms.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListRooms.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListRoomsResponse.proto b/fixture/ListRoomsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListRoomsResponse.proto
diff --git a/fixture/ListSipMediaApplications.yaml b/fixture/ListSipMediaApplications.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListSipMediaApplications.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListSipMediaApplicationsResponse.proto b/fixture/ListSipMediaApplicationsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListSipMediaApplicationsResponse.proto
diff --git a/fixture/ListSipRules.yaml b/fixture/ListSipRules.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListSipRules.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListSipRulesResponse.proto b/fixture/ListSipRulesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListSipRulesResponse.proto
diff --git a/fixture/ListSupportedPhoneNumberCountries.yaml b/fixture/ListSupportedPhoneNumberCountries.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListSupportedPhoneNumberCountries.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListSupportedPhoneNumberCountriesResponse.proto b/fixture/ListSupportedPhoneNumberCountriesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListSupportedPhoneNumberCountriesResponse.proto
diff --git a/fixture/ListTagsForResource.yaml b/fixture/ListTagsForResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsForResource.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListTagsForResourceResponse.proto b/fixture/ListTagsForResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsForResourceResponse.proto
diff --git a/fixture/ListUsers.yaml b/fixture/ListUsers.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListUsers.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListUsersResponse.proto b/fixture/ListUsersResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListUsersResponse.proto
diff --git a/fixture/ListVoiceConnectorGroups.yaml b/fixture/ListVoiceConnectorGroups.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListVoiceConnectorGroups.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListVoiceConnectorGroupsResponse.proto b/fixture/ListVoiceConnectorGroupsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListVoiceConnectorGroupsResponse.proto
diff --git a/fixture/ListVoiceConnectorTerminationCredentials.yaml b/fixture/ListVoiceConnectorTerminationCredentials.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListVoiceConnectorTerminationCredentials.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListVoiceConnectorTerminationCredentialsResponse.proto b/fixture/ListVoiceConnectorTerminationCredentialsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListVoiceConnectorTerminationCredentialsResponse.proto
diff --git a/fixture/ListVoiceConnectors.yaml b/fixture/ListVoiceConnectors.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListVoiceConnectors.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListVoiceConnectorsResponse.proto b/fixture/ListVoiceConnectorsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListVoiceConnectorsResponse.proto
diff --git a/fixture/LogoutUser.yaml b/fixture/LogoutUser.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/LogoutUser.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/LogoutUserResponse.proto b/fixture/LogoutUserResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/LogoutUserResponse.proto
diff --git a/fixture/PutAppInstanceRetentionSettings.yaml b/fixture/PutAppInstanceRetentionSettings.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PutAppInstanceRetentionSettings.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/PutAppInstanceRetentionSettingsResponse.proto b/fixture/PutAppInstanceRetentionSettingsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PutAppInstanceRetentionSettingsResponse.proto
diff --git a/fixture/PutAppInstanceStreamingConfigurations.yaml b/fixture/PutAppInstanceStreamingConfigurations.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PutAppInstanceStreamingConfigurations.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/PutAppInstanceStreamingConfigurationsResponse.proto b/fixture/PutAppInstanceStreamingConfigurationsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PutAppInstanceStreamingConfigurationsResponse.proto
diff --git a/fixture/PutEventsConfiguration.yaml b/fixture/PutEventsConfiguration.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PutEventsConfiguration.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/PutEventsConfigurationResponse.proto b/fixture/PutEventsConfigurationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PutEventsConfigurationResponse.proto
diff --git a/fixture/PutRetentionSettings.yaml b/fixture/PutRetentionSettings.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PutRetentionSettings.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/PutRetentionSettingsResponse.proto b/fixture/PutRetentionSettingsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PutRetentionSettingsResponse.proto
diff --git a/fixture/PutSipMediaApplicationLoggingConfiguration.yaml b/fixture/PutSipMediaApplicationLoggingConfiguration.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PutSipMediaApplicationLoggingConfiguration.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/PutSipMediaApplicationLoggingConfigurationResponse.proto b/fixture/PutSipMediaApplicationLoggingConfigurationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PutSipMediaApplicationLoggingConfigurationResponse.proto
diff --git a/fixture/PutVoiceConnectorEmergencyCallingConfiguration.yaml b/fixture/PutVoiceConnectorEmergencyCallingConfiguration.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PutVoiceConnectorEmergencyCallingConfiguration.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/PutVoiceConnectorEmergencyCallingConfigurationResponse.proto b/fixture/PutVoiceConnectorEmergencyCallingConfigurationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PutVoiceConnectorEmergencyCallingConfigurationResponse.proto
diff --git a/fixture/PutVoiceConnectorLoggingConfiguration.yaml b/fixture/PutVoiceConnectorLoggingConfiguration.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PutVoiceConnectorLoggingConfiguration.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/PutVoiceConnectorLoggingConfigurationResponse.proto b/fixture/PutVoiceConnectorLoggingConfigurationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PutVoiceConnectorLoggingConfigurationResponse.proto
diff --git a/fixture/PutVoiceConnectorOrigination.yaml b/fixture/PutVoiceConnectorOrigination.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PutVoiceConnectorOrigination.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/PutVoiceConnectorOriginationResponse.proto b/fixture/PutVoiceConnectorOriginationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PutVoiceConnectorOriginationResponse.proto
diff --git a/fixture/PutVoiceConnectorProxy.yaml b/fixture/PutVoiceConnectorProxy.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PutVoiceConnectorProxy.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/PutVoiceConnectorProxyResponse.proto b/fixture/PutVoiceConnectorProxyResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PutVoiceConnectorProxyResponse.proto
diff --git a/fixture/PutVoiceConnectorStreamingConfiguration.yaml b/fixture/PutVoiceConnectorStreamingConfiguration.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PutVoiceConnectorStreamingConfiguration.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/PutVoiceConnectorStreamingConfigurationResponse.proto b/fixture/PutVoiceConnectorStreamingConfigurationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PutVoiceConnectorStreamingConfigurationResponse.proto
diff --git a/fixture/PutVoiceConnectorTermination.yaml b/fixture/PutVoiceConnectorTermination.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PutVoiceConnectorTermination.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/PutVoiceConnectorTerminationCredentials.yaml b/fixture/PutVoiceConnectorTerminationCredentials.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PutVoiceConnectorTerminationCredentials.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/PutVoiceConnectorTerminationCredentialsResponse.proto b/fixture/PutVoiceConnectorTerminationCredentialsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PutVoiceConnectorTerminationCredentialsResponse.proto
diff --git a/fixture/PutVoiceConnectorTerminationResponse.proto b/fixture/PutVoiceConnectorTerminationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PutVoiceConnectorTerminationResponse.proto
diff --git a/fixture/RedactChannelMessage.yaml b/fixture/RedactChannelMessage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RedactChannelMessage.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/RedactChannelMessageResponse.proto b/fixture/RedactChannelMessageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RedactChannelMessageResponse.proto
diff --git a/fixture/RedactConversationMessage.yaml b/fixture/RedactConversationMessage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RedactConversationMessage.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/RedactConversationMessageResponse.proto b/fixture/RedactConversationMessageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RedactConversationMessageResponse.proto
diff --git a/fixture/RedactRoomMessage.yaml b/fixture/RedactRoomMessage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RedactRoomMessage.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/RedactRoomMessageResponse.proto b/fixture/RedactRoomMessageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RedactRoomMessageResponse.proto
diff --git a/fixture/RegenerateSecurityToken.yaml b/fixture/RegenerateSecurityToken.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RegenerateSecurityToken.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/RegenerateSecurityTokenResponse.proto b/fixture/RegenerateSecurityTokenResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RegenerateSecurityTokenResponse.proto
diff --git a/fixture/ResetPersonalPIN.yaml b/fixture/ResetPersonalPIN.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ResetPersonalPIN.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ResetPersonalPINResponse.proto b/fixture/ResetPersonalPINResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ResetPersonalPINResponse.proto
diff --git a/fixture/RestorePhoneNumber.yaml b/fixture/RestorePhoneNumber.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RestorePhoneNumber.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/RestorePhoneNumberResponse.proto b/fixture/RestorePhoneNumberResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RestorePhoneNumberResponse.proto
diff --git a/fixture/SearchAvailablePhoneNumbers.yaml b/fixture/SearchAvailablePhoneNumbers.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/SearchAvailablePhoneNumbers.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/SearchAvailablePhoneNumbersResponse.proto b/fixture/SearchAvailablePhoneNumbersResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/SearchAvailablePhoneNumbersResponse.proto
diff --git a/fixture/SendChannelMessage.yaml b/fixture/SendChannelMessage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/SendChannelMessage.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/SendChannelMessageResponse.proto b/fixture/SendChannelMessageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/SendChannelMessageResponse.proto
diff --git a/fixture/StartMeetingTranscription.yaml b/fixture/StartMeetingTranscription.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StartMeetingTranscription.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StartMeetingTranscriptionResponse.proto b/fixture/StartMeetingTranscriptionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StartMeetingTranscriptionResponse.proto
diff --git a/fixture/StopMeetingTranscription.yaml b/fixture/StopMeetingTranscription.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StopMeetingTranscription.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StopMeetingTranscriptionResponse.proto b/fixture/StopMeetingTranscriptionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StopMeetingTranscriptionResponse.proto
diff --git a/fixture/TagAttendee.yaml b/fixture/TagAttendee.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/TagAttendee.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/TagAttendeeResponse.proto b/fixture/TagAttendeeResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/TagAttendeeResponse.proto
diff --git a/fixture/TagMeeting.yaml b/fixture/TagMeeting.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/TagMeeting.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/TagMeetingResponse.proto b/fixture/TagMeetingResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/TagMeetingResponse.proto
diff --git a/fixture/TagResource.yaml b/fixture/TagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/TagResource.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/TagResourceResponse.proto b/fixture/TagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/TagResourceResponse.proto
diff --git a/fixture/UntagAttendee.yaml b/fixture/UntagAttendee.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UntagAttendee.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UntagAttendeeResponse.proto b/fixture/UntagAttendeeResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UntagAttendeeResponse.proto
diff --git a/fixture/UntagMeeting.yaml b/fixture/UntagMeeting.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UntagMeeting.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UntagMeetingResponse.proto b/fixture/UntagMeetingResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UntagMeetingResponse.proto
diff --git a/fixture/UntagResource.yaml b/fixture/UntagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResource.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UntagResourceResponse.proto b/fixture/UntagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResourceResponse.proto
diff --git a/fixture/UpdateAccount.yaml b/fixture/UpdateAccount.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateAccount.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateAccountResponse.proto b/fixture/UpdateAccountResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateAccountResponse.proto
diff --git a/fixture/UpdateAccountSettings.yaml b/fixture/UpdateAccountSettings.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateAccountSettings.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateAccountSettingsResponse.proto b/fixture/UpdateAccountSettingsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateAccountSettingsResponse.proto
diff --git a/fixture/UpdateAppInstance.yaml b/fixture/UpdateAppInstance.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateAppInstance.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateAppInstanceResponse.proto b/fixture/UpdateAppInstanceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateAppInstanceResponse.proto
diff --git a/fixture/UpdateAppInstanceUser.yaml b/fixture/UpdateAppInstanceUser.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateAppInstanceUser.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateAppInstanceUserResponse.proto b/fixture/UpdateAppInstanceUserResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateAppInstanceUserResponse.proto
diff --git a/fixture/UpdateBot.yaml b/fixture/UpdateBot.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateBot.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateBotResponse.proto b/fixture/UpdateBotResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateBotResponse.proto
diff --git a/fixture/UpdateChannel.yaml b/fixture/UpdateChannel.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateChannel.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateChannelMessage.yaml b/fixture/UpdateChannelMessage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateChannelMessage.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateChannelMessageResponse.proto b/fixture/UpdateChannelMessageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateChannelMessageResponse.proto
diff --git a/fixture/UpdateChannelReadMarker.yaml b/fixture/UpdateChannelReadMarker.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateChannelReadMarker.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateChannelReadMarkerResponse.proto b/fixture/UpdateChannelReadMarkerResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateChannelReadMarkerResponse.proto
diff --git a/fixture/UpdateChannelResponse.proto b/fixture/UpdateChannelResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateChannelResponse.proto
diff --git a/fixture/UpdateGlobalSettings.yaml b/fixture/UpdateGlobalSettings.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateGlobalSettings.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateGlobalSettingsResponse.proto b/fixture/UpdateGlobalSettingsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateGlobalSettingsResponse.proto
diff --git a/fixture/UpdatePhoneNumber.yaml b/fixture/UpdatePhoneNumber.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdatePhoneNumber.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdatePhoneNumberResponse.proto b/fixture/UpdatePhoneNumberResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdatePhoneNumberResponse.proto
diff --git a/fixture/UpdatePhoneNumberSettings.yaml b/fixture/UpdatePhoneNumberSettings.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdatePhoneNumberSettings.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdatePhoneNumberSettingsResponse.proto b/fixture/UpdatePhoneNumberSettingsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdatePhoneNumberSettingsResponse.proto
diff --git a/fixture/UpdateProxySession.yaml b/fixture/UpdateProxySession.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateProxySession.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateProxySessionResponse.proto b/fixture/UpdateProxySessionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateProxySessionResponse.proto
diff --git a/fixture/UpdateRoom.yaml b/fixture/UpdateRoom.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateRoom.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateRoomMembership.yaml b/fixture/UpdateRoomMembership.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateRoomMembership.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateRoomMembershipResponse.proto b/fixture/UpdateRoomMembershipResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateRoomMembershipResponse.proto
diff --git a/fixture/UpdateRoomResponse.proto b/fixture/UpdateRoomResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateRoomResponse.proto
diff --git a/fixture/UpdateSipMediaApplication.yaml b/fixture/UpdateSipMediaApplication.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateSipMediaApplication.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateSipMediaApplicationCall.yaml b/fixture/UpdateSipMediaApplicationCall.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateSipMediaApplicationCall.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateSipMediaApplicationCallResponse.proto b/fixture/UpdateSipMediaApplicationCallResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateSipMediaApplicationCallResponse.proto
diff --git a/fixture/UpdateSipMediaApplicationResponse.proto b/fixture/UpdateSipMediaApplicationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateSipMediaApplicationResponse.proto
diff --git a/fixture/UpdateSipRule.yaml b/fixture/UpdateSipRule.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateSipRule.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateSipRuleResponse.proto b/fixture/UpdateSipRuleResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateSipRuleResponse.proto
diff --git a/fixture/UpdateUser.yaml b/fixture/UpdateUser.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateUser.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateUserResponse.proto b/fixture/UpdateUserResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateUserResponse.proto
diff --git a/fixture/UpdateUserSettings.yaml b/fixture/UpdateUserSettings.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateUserSettings.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateUserSettingsResponse.proto b/fixture/UpdateUserSettingsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateUserSettingsResponse.proto
diff --git a/fixture/UpdateVoiceConnector.yaml b/fixture/UpdateVoiceConnector.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateVoiceConnector.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateVoiceConnectorGroup.yaml b/fixture/UpdateVoiceConnectorGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateVoiceConnectorGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateVoiceConnectorGroupResponse.proto b/fixture/UpdateVoiceConnectorGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateVoiceConnectorGroupResponse.proto
diff --git a/fixture/UpdateVoiceConnectorResponse.proto b/fixture/UpdateVoiceConnectorResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateVoiceConnectorResponse.proto
diff --git a/fixture/ValidateE911Address.yaml b/fixture/ValidateE911Address.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ValidateE911Address.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ValidateE911AddressResponse.proto b/fixture/ValidateE911AddressResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ValidateE911AddressResponse.proto
diff --git a/gen/Amazonka/Chime.hs b/gen/Amazonka/Chime.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime.hs
@@ -0,0 +1,2024 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.Chime
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from API version @2018-05-01@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- The Amazon Chime API (application programming interface) is designed for
+-- developers to perform key tasks, such as creating and managing Amazon
+-- Chime accounts, users, and Voice Connectors. This guide provides
+-- detailed information about the Amazon Chime API, including operations,
+-- types, inputs and outputs, and error codes. It also includes API actions
+-- for use with the Amazon Chime SDK, which developers use to build their
+-- own communication applications. For more information about the Amazon
+-- Chime SDK, see
+-- <https://docs.aws.amazon.com/chime/latest/dg/meetings-sdk.html Using the Amazon Chime SDK>
+-- in the /Amazon Chime Developer Guide/.
+--
+-- You can use an AWS SDK, the AWS Command Line Interface (AWS CLI), or the
+-- REST API to make API calls. We recommend using an AWS SDK or the AWS
+-- CLI. Each API operation includes links to information about using it
+-- with a language-specific AWS SDK or the AWS CLI.
+--
+-- [Using an AWS SDK]
+--     You don\'t need to write code to calculate a signature for request
+--     authentication. The SDK clients authenticate your requests by using
+--     access keys that you provide. For more information about AWS SDKs,
+--     see the <http://aws.amazon.com/developer/ AWS Developer Center>.
+--
+-- [Using the AWS CLI]
+--     Use your access keys with the AWS CLI to make API calls. For
+--     information about setting up the AWS CLI, see
+--     <https://docs.aws.amazon.com/cli/latest/userguide/installing.html Installing the AWS Command Line Interface>
+--     in the /AWS Command Line Interface User Guide/. For a list of
+--     available Amazon Chime commands, see the
+--     <https://docs.aws.amazon.com/cli/latest/reference/chime/index.html Amazon Chime commands>
+--     in the /AWS CLI Command Reference/.
+--
+-- [Using REST APIs]
+--     If you use REST to make API calls, you must authenticate your
+--     request by providing a signature. Amazon Chime supports signature
+--     version 4. For more information, see
+--     <https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html Signature Version 4 Signing Process>
+--     in the /Amazon Web Services General Reference/.
+--
+--     When making REST API calls, use the service name @chime@ and REST
+--     endpoint @https:\/\/service.chime.aws.amazon.com@.
+--
+-- Administrative permissions are controlled using AWS Identity and Access
+-- Management (IAM). For more information, see
+-- <https://docs.aws.amazon.com/chime/latest/ag/security-iam.html Identity and Access Management for Amazon Chime>
+-- in the /Amazon Chime Administration Guide/.
+module Amazonka.Chime
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** AccessDeniedException
+    _AccessDeniedException,
+
+    -- ** BadRequestException
+    _BadRequestException,
+
+    -- ** ConflictException
+    _ConflictException,
+
+    -- ** ForbiddenException
+    _ForbiddenException,
+
+    -- ** NotFoundException
+    _NotFoundException,
+
+    -- ** ResourceLimitExceededException
+    _ResourceLimitExceededException,
+
+    -- ** ServiceFailureException
+    _ServiceFailureException,
+
+    -- ** ServiceUnavailableException
+    _ServiceUnavailableException,
+
+    -- ** ThrottledClientException
+    _ThrottledClientException,
+
+    -- ** UnauthorizedClientException
+    _UnauthorizedClientException,
+
+    -- ** UnprocessableEntityException
+    _UnprocessableEntityException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** AssociatePhoneNumberWithUser
+    AssociatePhoneNumberWithUser (AssociatePhoneNumberWithUser'),
+    newAssociatePhoneNumberWithUser,
+    AssociatePhoneNumberWithUserResponse (AssociatePhoneNumberWithUserResponse'),
+    newAssociatePhoneNumberWithUserResponse,
+
+    -- ** AssociatePhoneNumbersWithVoiceConnector
+    AssociatePhoneNumbersWithVoiceConnector (AssociatePhoneNumbersWithVoiceConnector'),
+    newAssociatePhoneNumbersWithVoiceConnector,
+    AssociatePhoneNumbersWithVoiceConnectorResponse (AssociatePhoneNumbersWithVoiceConnectorResponse'),
+    newAssociatePhoneNumbersWithVoiceConnectorResponse,
+
+    -- ** AssociatePhoneNumbersWithVoiceConnectorGroup
+    AssociatePhoneNumbersWithVoiceConnectorGroup (AssociatePhoneNumbersWithVoiceConnectorGroup'),
+    newAssociatePhoneNumbersWithVoiceConnectorGroup,
+    AssociatePhoneNumbersWithVoiceConnectorGroupResponse (AssociatePhoneNumbersWithVoiceConnectorGroupResponse'),
+    newAssociatePhoneNumbersWithVoiceConnectorGroupResponse,
+
+    -- ** AssociateSigninDelegateGroupsWithAccount
+    AssociateSigninDelegateGroupsWithAccount (AssociateSigninDelegateGroupsWithAccount'),
+    newAssociateSigninDelegateGroupsWithAccount,
+    AssociateSigninDelegateGroupsWithAccountResponse (AssociateSigninDelegateGroupsWithAccountResponse'),
+    newAssociateSigninDelegateGroupsWithAccountResponse,
+
+    -- ** BatchCreateAttendee
+    BatchCreateAttendee (BatchCreateAttendee'),
+    newBatchCreateAttendee,
+    BatchCreateAttendeeResponse (BatchCreateAttendeeResponse'),
+    newBatchCreateAttendeeResponse,
+
+    -- ** BatchCreateChannelMembership
+    BatchCreateChannelMembership (BatchCreateChannelMembership'),
+    newBatchCreateChannelMembership,
+    BatchCreateChannelMembershipResponse (BatchCreateChannelMembershipResponse'),
+    newBatchCreateChannelMembershipResponse,
+
+    -- ** BatchCreateRoomMembership
+    BatchCreateRoomMembership (BatchCreateRoomMembership'),
+    newBatchCreateRoomMembership,
+    BatchCreateRoomMembershipResponse (BatchCreateRoomMembershipResponse'),
+    newBatchCreateRoomMembershipResponse,
+
+    -- ** BatchDeletePhoneNumber
+    BatchDeletePhoneNumber (BatchDeletePhoneNumber'),
+    newBatchDeletePhoneNumber,
+    BatchDeletePhoneNumberResponse (BatchDeletePhoneNumberResponse'),
+    newBatchDeletePhoneNumberResponse,
+
+    -- ** BatchSuspendUser
+    BatchSuspendUser (BatchSuspendUser'),
+    newBatchSuspendUser,
+    BatchSuspendUserResponse (BatchSuspendUserResponse'),
+    newBatchSuspendUserResponse,
+
+    -- ** BatchUnsuspendUser
+    BatchUnsuspendUser (BatchUnsuspendUser'),
+    newBatchUnsuspendUser,
+    BatchUnsuspendUserResponse (BatchUnsuspendUserResponse'),
+    newBatchUnsuspendUserResponse,
+
+    -- ** BatchUpdatePhoneNumber
+    BatchUpdatePhoneNumber (BatchUpdatePhoneNumber'),
+    newBatchUpdatePhoneNumber,
+    BatchUpdatePhoneNumberResponse (BatchUpdatePhoneNumberResponse'),
+    newBatchUpdatePhoneNumberResponse,
+
+    -- ** BatchUpdateUser
+    BatchUpdateUser (BatchUpdateUser'),
+    newBatchUpdateUser,
+    BatchUpdateUserResponse (BatchUpdateUserResponse'),
+    newBatchUpdateUserResponse,
+
+    -- ** CreateAccount
+    CreateAccount (CreateAccount'),
+    newCreateAccount,
+    CreateAccountResponse (CreateAccountResponse'),
+    newCreateAccountResponse,
+
+    -- ** CreateAppInstance
+    CreateAppInstance (CreateAppInstance'),
+    newCreateAppInstance,
+    CreateAppInstanceResponse (CreateAppInstanceResponse'),
+    newCreateAppInstanceResponse,
+
+    -- ** CreateAppInstanceAdmin
+    CreateAppInstanceAdmin (CreateAppInstanceAdmin'),
+    newCreateAppInstanceAdmin,
+    CreateAppInstanceAdminResponse (CreateAppInstanceAdminResponse'),
+    newCreateAppInstanceAdminResponse,
+
+    -- ** CreateAppInstanceUser
+    CreateAppInstanceUser (CreateAppInstanceUser'),
+    newCreateAppInstanceUser,
+    CreateAppInstanceUserResponse (CreateAppInstanceUserResponse'),
+    newCreateAppInstanceUserResponse,
+
+    -- ** CreateAttendee
+    CreateAttendee (CreateAttendee'),
+    newCreateAttendee,
+    CreateAttendeeResponse (CreateAttendeeResponse'),
+    newCreateAttendeeResponse,
+
+    -- ** CreateBot
+    CreateBot (CreateBot'),
+    newCreateBot,
+    CreateBotResponse (CreateBotResponse'),
+    newCreateBotResponse,
+
+    -- ** CreateChannel
+    CreateChannel (CreateChannel'),
+    newCreateChannel,
+    CreateChannelResponse (CreateChannelResponse'),
+    newCreateChannelResponse,
+
+    -- ** CreateChannelBan
+    CreateChannelBan (CreateChannelBan'),
+    newCreateChannelBan,
+    CreateChannelBanResponse (CreateChannelBanResponse'),
+    newCreateChannelBanResponse,
+
+    -- ** CreateChannelMembership
+    CreateChannelMembership (CreateChannelMembership'),
+    newCreateChannelMembership,
+    CreateChannelMembershipResponse (CreateChannelMembershipResponse'),
+    newCreateChannelMembershipResponse,
+
+    -- ** CreateChannelModerator
+    CreateChannelModerator (CreateChannelModerator'),
+    newCreateChannelModerator,
+    CreateChannelModeratorResponse (CreateChannelModeratorResponse'),
+    newCreateChannelModeratorResponse,
+
+    -- ** CreateMediaCapturePipeline
+    CreateMediaCapturePipeline (CreateMediaCapturePipeline'),
+    newCreateMediaCapturePipeline,
+    CreateMediaCapturePipelineResponse (CreateMediaCapturePipelineResponse'),
+    newCreateMediaCapturePipelineResponse,
+
+    -- ** CreateMeeting
+    CreateMeeting (CreateMeeting'),
+    newCreateMeeting,
+    CreateMeetingResponse (CreateMeetingResponse'),
+    newCreateMeetingResponse,
+
+    -- ** CreateMeetingDialOut
+    CreateMeetingDialOut (CreateMeetingDialOut'),
+    newCreateMeetingDialOut,
+    CreateMeetingDialOutResponse (CreateMeetingDialOutResponse'),
+    newCreateMeetingDialOutResponse,
+
+    -- ** CreateMeetingWithAttendees
+    CreateMeetingWithAttendees (CreateMeetingWithAttendees'),
+    newCreateMeetingWithAttendees,
+    CreateMeetingWithAttendeesResponse (CreateMeetingWithAttendeesResponse'),
+    newCreateMeetingWithAttendeesResponse,
+
+    -- ** CreatePhoneNumberOrder
+    CreatePhoneNumberOrder (CreatePhoneNumberOrder'),
+    newCreatePhoneNumberOrder,
+    CreatePhoneNumberOrderResponse (CreatePhoneNumberOrderResponse'),
+    newCreatePhoneNumberOrderResponse,
+
+    -- ** CreateProxySession
+    CreateProxySession (CreateProxySession'),
+    newCreateProxySession,
+    CreateProxySessionResponse (CreateProxySessionResponse'),
+    newCreateProxySessionResponse,
+
+    -- ** CreateRoom
+    CreateRoom (CreateRoom'),
+    newCreateRoom,
+    CreateRoomResponse (CreateRoomResponse'),
+    newCreateRoomResponse,
+
+    -- ** CreateRoomMembership
+    CreateRoomMembership (CreateRoomMembership'),
+    newCreateRoomMembership,
+    CreateRoomMembershipResponse (CreateRoomMembershipResponse'),
+    newCreateRoomMembershipResponse,
+
+    -- ** CreateSipMediaApplication
+    CreateSipMediaApplication (CreateSipMediaApplication'),
+    newCreateSipMediaApplication,
+    CreateSipMediaApplicationResponse (CreateSipMediaApplicationResponse'),
+    newCreateSipMediaApplicationResponse,
+
+    -- ** CreateSipMediaApplicationCall
+    CreateSipMediaApplicationCall (CreateSipMediaApplicationCall'),
+    newCreateSipMediaApplicationCall,
+    CreateSipMediaApplicationCallResponse (CreateSipMediaApplicationCallResponse'),
+    newCreateSipMediaApplicationCallResponse,
+
+    -- ** CreateSipRule
+    CreateSipRule (CreateSipRule'),
+    newCreateSipRule,
+    CreateSipRuleResponse (CreateSipRuleResponse'),
+    newCreateSipRuleResponse,
+
+    -- ** CreateUser
+    CreateUser (CreateUser'),
+    newCreateUser,
+    CreateUserResponse (CreateUserResponse'),
+    newCreateUserResponse,
+
+    -- ** CreateVoiceConnector
+    CreateVoiceConnector (CreateVoiceConnector'),
+    newCreateVoiceConnector,
+    CreateVoiceConnectorResponse (CreateVoiceConnectorResponse'),
+    newCreateVoiceConnectorResponse,
+
+    -- ** CreateVoiceConnectorGroup
+    CreateVoiceConnectorGroup (CreateVoiceConnectorGroup'),
+    newCreateVoiceConnectorGroup,
+    CreateVoiceConnectorGroupResponse (CreateVoiceConnectorGroupResponse'),
+    newCreateVoiceConnectorGroupResponse,
+
+    -- ** DeleteAccount
+    DeleteAccount (DeleteAccount'),
+    newDeleteAccount,
+    DeleteAccountResponse (DeleteAccountResponse'),
+    newDeleteAccountResponse,
+
+    -- ** DeleteAppInstance
+    DeleteAppInstance (DeleteAppInstance'),
+    newDeleteAppInstance,
+    DeleteAppInstanceResponse (DeleteAppInstanceResponse'),
+    newDeleteAppInstanceResponse,
+
+    -- ** DeleteAppInstanceAdmin
+    DeleteAppInstanceAdmin (DeleteAppInstanceAdmin'),
+    newDeleteAppInstanceAdmin,
+    DeleteAppInstanceAdminResponse (DeleteAppInstanceAdminResponse'),
+    newDeleteAppInstanceAdminResponse,
+
+    -- ** DeleteAppInstanceStreamingConfigurations
+    DeleteAppInstanceStreamingConfigurations (DeleteAppInstanceStreamingConfigurations'),
+    newDeleteAppInstanceStreamingConfigurations,
+    DeleteAppInstanceStreamingConfigurationsResponse (DeleteAppInstanceStreamingConfigurationsResponse'),
+    newDeleteAppInstanceStreamingConfigurationsResponse,
+
+    -- ** DeleteAppInstanceUser
+    DeleteAppInstanceUser (DeleteAppInstanceUser'),
+    newDeleteAppInstanceUser,
+    DeleteAppInstanceUserResponse (DeleteAppInstanceUserResponse'),
+    newDeleteAppInstanceUserResponse,
+
+    -- ** DeleteAttendee
+    DeleteAttendee (DeleteAttendee'),
+    newDeleteAttendee,
+    DeleteAttendeeResponse (DeleteAttendeeResponse'),
+    newDeleteAttendeeResponse,
+
+    -- ** DeleteChannel
+    DeleteChannel (DeleteChannel'),
+    newDeleteChannel,
+    DeleteChannelResponse (DeleteChannelResponse'),
+    newDeleteChannelResponse,
+
+    -- ** DeleteChannelBan
+    DeleteChannelBan (DeleteChannelBan'),
+    newDeleteChannelBan,
+    DeleteChannelBanResponse (DeleteChannelBanResponse'),
+    newDeleteChannelBanResponse,
+
+    -- ** DeleteChannelMembership
+    DeleteChannelMembership (DeleteChannelMembership'),
+    newDeleteChannelMembership,
+    DeleteChannelMembershipResponse (DeleteChannelMembershipResponse'),
+    newDeleteChannelMembershipResponse,
+
+    -- ** DeleteChannelMessage
+    DeleteChannelMessage (DeleteChannelMessage'),
+    newDeleteChannelMessage,
+    DeleteChannelMessageResponse (DeleteChannelMessageResponse'),
+    newDeleteChannelMessageResponse,
+
+    -- ** DeleteChannelModerator
+    DeleteChannelModerator (DeleteChannelModerator'),
+    newDeleteChannelModerator,
+    DeleteChannelModeratorResponse (DeleteChannelModeratorResponse'),
+    newDeleteChannelModeratorResponse,
+
+    -- ** DeleteEventsConfiguration
+    DeleteEventsConfiguration (DeleteEventsConfiguration'),
+    newDeleteEventsConfiguration,
+    DeleteEventsConfigurationResponse (DeleteEventsConfigurationResponse'),
+    newDeleteEventsConfigurationResponse,
+
+    -- ** DeleteMediaCapturePipeline
+    DeleteMediaCapturePipeline (DeleteMediaCapturePipeline'),
+    newDeleteMediaCapturePipeline,
+    DeleteMediaCapturePipelineResponse (DeleteMediaCapturePipelineResponse'),
+    newDeleteMediaCapturePipelineResponse,
+
+    -- ** DeleteMeeting
+    DeleteMeeting (DeleteMeeting'),
+    newDeleteMeeting,
+    DeleteMeetingResponse (DeleteMeetingResponse'),
+    newDeleteMeetingResponse,
+
+    -- ** DeletePhoneNumber
+    DeletePhoneNumber (DeletePhoneNumber'),
+    newDeletePhoneNumber,
+    DeletePhoneNumberResponse (DeletePhoneNumberResponse'),
+    newDeletePhoneNumberResponse,
+
+    -- ** DeleteProxySession
+    DeleteProxySession (DeleteProxySession'),
+    newDeleteProxySession,
+    DeleteProxySessionResponse (DeleteProxySessionResponse'),
+    newDeleteProxySessionResponse,
+
+    -- ** DeleteRoom
+    DeleteRoom (DeleteRoom'),
+    newDeleteRoom,
+    DeleteRoomResponse (DeleteRoomResponse'),
+    newDeleteRoomResponse,
+
+    -- ** DeleteRoomMembership
+    DeleteRoomMembership (DeleteRoomMembership'),
+    newDeleteRoomMembership,
+    DeleteRoomMembershipResponse (DeleteRoomMembershipResponse'),
+    newDeleteRoomMembershipResponse,
+
+    -- ** DeleteSipMediaApplication
+    DeleteSipMediaApplication (DeleteSipMediaApplication'),
+    newDeleteSipMediaApplication,
+    DeleteSipMediaApplicationResponse (DeleteSipMediaApplicationResponse'),
+    newDeleteSipMediaApplicationResponse,
+
+    -- ** DeleteSipRule
+    DeleteSipRule (DeleteSipRule'),
+    newDeleteSipRule,
+    DeleteSipRuleResponse (DeleteSipRuleResponse'),
+    newDeleteSipRuleResponse,
+
+    -- ** DeleteVoiceConnector
+    DeleteVoiceConnector (DeleteVoiceConnector'),
+    newDeleteVoiceConnector,
+    DeleteVoiceConnectorResponse (DeleteVoiceConnectorResponse'),
+    newDeleteVoiceConnectorResponse,
+
+    -- ** DeleteVoiceConnectorEmergencyCallingConfiguration
+    DeleteVoiceConnectorEmergencyCallingConfiguration (DeleteVoiceConnectorEmergencyCallingConfiguration'),
+    newDeleteVoiceConnectorEmergencyCallingConfiguration,
+    DeleteVoiceConnectorEmergencyCallingConfigurationResponse (DeleteVoiceConnectorEmergencyCallingConfigurationResponse'),
+    newDeleteVoiceConnectorEmergencyCallingConfigurationResponse,
+
+    -- ** DeleteVoiceConnectorGroup
+    DeleteVoiceConnectorGroup (DeleteVoiceConnectorGroup'),
+    newDeleteVoiceConnectorGroup,
+    DeleteVoiceConnectorGroupResponse (DeleteVoiceConnectorGroupResponse'),
+    newDeleteVoiceConnectorGroupResponse,
+
+    -- ** DeleteVoiceConnectorOrigination
+    DeleteVoiceConnectorOrigination (DeleteVoiceConnectorOrigination'),
+    newDeleteVoiceConnectorOrigination,
+    DeleteVoiceConnectorOriginationResponse (DeleteVoiceConnectorOriginationResponse'),
+    newDeleteVoiceConnectorOriginationResponse,
+
+    -- ** DeleteVoiceConnectorProxy
+    DeleteVoiceConnectorProxy (DeleteVoiceConnectorProxy'),
+    newDeleteVoiceConnectorProxy,
+    DeleteVoiceConnectorProxyResponse (DeleteVoiceConnectorProxyResponse'),
+    newDeleteVoiceConnectorProxyResponse,
+
+    -- ** DeleteVoiceConnectorStreamingConfiguration
+    DeleteVoiceConnectorStreamingConfiguration (DeleteVoiceConnectorStreamingConfiguration'),
+    newDeleteVoiceConnectorStreamingConfiguration,
+    DeleteVoiceConnectorStreamingConfigurationResponse (DeleteVoiceConnectorStreamingConfigurationResponse'),
+    newDeleteVoiceConnectorStreamingConfigurationResponse,
+
+    -- ** DeleteVoiceConnectorTermination
+    DeleteVoiceConnectorTermination (DeleteVoiceConnectorTermination'),
+    newDeleteVoiceConnectorTermination,
+    DeleteVoiceConnectorTerminationResponse (DeleteVoiceConnectorTerminationResponse'),
+    newDeleteVoiceConnectorTerminationResponse,
+
+    -- ** DeleteVoiceConnectorTerminationCredentials
+    DeleteVoiceConnectorTerminationCredentials (DeleteVoiceConnectorTerminationCredentials'),
+    newDeleteVoiceConnectorTerminationCredentials,
+    DeleteVoiceConnectorTerminationCredentialsResponse (DeleteVoiceConnectorTerminationCredentialsResponse'),
+    newDeleteVoiceConnectorTerminationCredentialsResponse,
+
+    -- ** DescribeAppInstance
+    DescribeAppInstance (DescribeAppInstance'),
+    newDescribeAppInstance,
+    DescribeAppInstanceResponse (DescribeAppInstanceResponse'),
+    newDescribeAppInstanceResponse,
+
+    -- ** DescribeAppInstanceAdmin
+    DescribeAppInstanceAdmin (DescribeAppInstanceAdmin'),
+    newDescribeAppInstanceAdmin,
+    DescribeAppInstanceAdminResponse (DescribeAppInstanceAdminResponse'),
+    newDescribeAppInstanceAdminResponse,
+
+    -- ** DescribeAppInstanceUser
+    DescribeAppInstanceUser (DescribeAppInstanceUser'),
+    newDescribeAppInstanceUser,
+    DescribeAppInstanceUserResponse (DescribeAppInstanceUserResponse'),
+    newDescribeAppInstanceUserResponse,
+
+    -- ** DescribeChannel
+    DescribeChannel (DescribeChannel'),
+    newDescribeChannel,
+    DescribeChannelResponse (DescribeChannelResponse'),
+    newDescribeChannelResponse,
+
+    -- ** DescribeChannelBan
+    DescribeChannelBan (DescribeChannelBan'),
+    newDescribeChannelBan,
+    DescribeChannelBanResponse (DescribeChannelBanResponse'),
+    newDescribeChannelBanResponse,
+
+    -- ** DescribeChannelMembership
+    DescribeChannelMembership (DescribeChannelMembership'),
+    newDescribeChannelMembership,
+    DescribeChannelMembershipResponse (DescribeChannelMembershipResponse'),
+    newDescribeChannelMembershipResponse,
+
+    -- ** DescribeChannelMembershipForAppInstanceUser
+    DescribeChannelMembershipForAppInstanceUser (DescribeChannelMembershipForAppInstanceUser'),
+    newDescribeChannelMembershipForAppInstanceUser,
+    DescribeChannelMembershipForAppInstanceUserResponse (DescribeChannelMembershipForAppInstanceUserResponse'),
+    newDescribeChannelMembershipForAppInstanceUserResponse,
+
+    -- ** DescribeChannelModeratedByAppInstanceUser
+    DescribeChannelModeratedByAppInstanceUser (DescribeChannelModeratedByAppInstanceUser'),
+    newDescribeChannelModeratedByAppInstanceUser,
+    DescribeChannelModeratedByAppInstanceUserResponse (DescribeChannelModeratedByAppInstanceUserResponse'),
+    newDescribeChannelModeratedByAppInstanceUserResponse,
+
+    -- ** DescribeChannelModerator
+    DescribeChannelModerator (DescribeChannelModerator'),
+    newDescribeChannelModerator,
+    DescribeChannelModeratorResponse (DescribeChannelModeratorResponse'),
+    newDescribeChannelModeratorResponse,
+
+    -- ** DisassociatePhoneNumberFromUser
+    DisassociatePhoneNumberFromUser (DisassociatePhoneNumberFromUser'),
+    newDisassociatePhoneNumberFromUser,
+    DisassociatePhoneNumberFromUserResponse (DisassociatePhoneNumberFromUserResponse'),
+    newDisassociatePhoneNumberFromUserResponse,
+
+    -- ** DisassociatePhoneNumbersFromVoiceConnector
+    DisassociatePhoneNumbersFromVoiceConnector (DisassociatePhoneNumbersFromVoiceConnector'),
+    newDisassociatePhoneNumbersFromVoiceConnector,
+    DisassociatePhoneNumbersFromVoiceConnectorResponse (DisassociatePhoneNumbersFromVoiceConnectorResponse'),
+    newDisassociatePhoneNumbersFromVoiceConnectorResponse,
+
+    -- ** DisassociatePhoneNumbersFromVoiceConnectorGroup
+    DisassociatePhoneNumbersFromVoiceConnectorGroup (DisassociatePhoneNumbersFromVoiceConnectorGroup'),
+    newDisassociatePhoneNumbersFromVoiceConnectorGroup,
+    DisassociatePhoneNumbersFromVoiceConnectorGroupResponse (DisassociatePhoneNumbersFromVoiceConnectorGroupResponse'),
+    newDisassociatePhoneNumbersFromVoiceConnectorGroupResponse,
+
+    -- ** DisassociateSigninDelegateGroupsFromAccount
+    DisassociateSigninDelegateGroupsFromAccount (DisassociateSigninDelegateGroupsFromAccount'),
+    newDisassociateSigninDelegateGroupsFromAccount,
+    DisassociateSigninDelegateGroupsFromAccountResponse (DisassociateSigninDelegateGroupsFromAccountResponse'),
+    newDisassociateSigninDelegateGroupsFromAccountResponse,
+
+    -- ** GetAccount
+    GetAccount (GetAccount'),
+    newGetAccount,
+    GetAccountResponse (GetAccountResponse'),
+    newGetAccountResponse,
+
+    -- ** GetAccountSettings
+    GetAccountSettings (GetAccountSettings'),
+    newGetAccountSettings,
+    GetAccountSettingsResponse (GetAccountSettingsResponse'),
+    newGetAccountSettingsResponse,
+
+    -- ** GetAppInstanceRetentionSettings
+    GetAppInstanceRetentionSettings (GetAppInstanceRetentionSettings'),
+    newGetAppInstanceRetentionSettings,
+    GetAppInstanceRetentionSettingsResponse (GetAppInstanceRetentionSettingsResponse'),
+    newGetAppInstanceRetentionSettingsResponse,
+
+    -- ** GetAppInstanceStreamingConfigurations
+    GetAppInstanceStreamingConfigurations (GetAppInstanceStreamingConfigurations'),
+    newGetAppInstanceStreamingConfigurations,
+    GetAppInstanceStreamingConfigurationsResponse (GetAppInstanceStreamingConfigurationsResponse'),
+    newGetAppInstanceStreamingConfigurationsResponse,
+
+    -- ** GetAttendee
+    GetAttendee (GetAttendee'),
+    newGetAttendee,
+    GetAttendeeResponse (GetAttendeeResponse'),
+    newGetAttendeeResponse,
+
+    -- ** GetBot
+    GetBot (GetBot'),
+    newGetBot,
+    GetBotResponse (GetBotResponse'),
+    newGetBotResponse,
+
+    -- ** GetChannelMessage
+    GetChannelMessage (GetChannelMessage'),
+    newGetChannelMessage,
+    GetChannelMessageResponse (GetChannelMessageResponse'),
+    newGetChannelMessageResponse,
+
+    -- ** GetEventsConfiguration
+    GetEventsConfiguration (GetEventsConfiguration'),
+    newGetEventsConfiguration,
+    GetEventsConfigurationResponse (GetEventsConfigurationResponse'),
+    newGetEventsConfigurationResponse,
+
+    -- ** GetGlobalSettings
+    GetGlobalSettings (GetGlobalSettings'),
+    newGetGlobalSettings,
+    GetGlobalSettingsResponse (GetGlobalSettingsResponse'),
+    newGetGlobalSettingsResponse,
+
+    -- ** GetMediaCapturePipeline
+    GetMediaCapturePipeline (GetMediaCapturePipeline'),
+    newGetMediaCapturePipeline,
+    GetMediaCapturePipelineResponse (GetMediaCapturePipelineResponse'),
+    newGetMediaCapturePipelineResponse,
+
+    -- ** GetMeeting
+    GetMeeting (GetMeeting'),
+    newGetMeeting,
+    GetMeetingResponse (GetMeetingResponse'),
+    newGetMeetingResponse,
+
+    -- ** GetMessagingSessionEndpoint
+    GetMessagingSessionEndpoint (GetMessagingSessionEndpoint'),
+    newGetMessagingSessionEndpoint,
+    GetMessagingSessionEndpointResponse (GetMessagingSessionEndpointResponse'),
+    newGetMessagingSessionEndpointResponse,
+
+    -- ** GetPhoneNumber
+    GetPhoneNumber (GetPhoneNumber'),
+    newGetPhoneNumber,
+    GetPhoneNumberResponse (GetPhoneNumberResponse'),
+    newGetPhoneNumberResponse,
+
+    -- ** GetPhoneNumberOrder
+    GetPhoneNumberOrder (GetPhoneNumberOrder'),
+    newGetPhoneNumberOrder,
+    GetPhoneNumberOrderResponse (GetPhoneNumberOrderResponse'),
+    newGetPhoneNumberOrderResponse,
+
+    -- ** GetPhoneNumberSettings
+    GetPhoneNumberSettings (GetPhoneNumberSettings'),
+    newGetPhoneNumberSettings,
+    GetPhoneNumberSettingsResponse (GetPhoneNumberSettingsResponse'),
+    newGetPhoneNumberSettingsResponse,
+
+    -- ** GetProxySession
+    GetProxySession (GetProxySession'),
+    newGetProxySession,
+    GetProxySessionResponse (GetProxySessionResponse'),
+    newGetProxySessionResponse,
+
+    -- ** GetRetentionSettings
+    GetRetentionSettings (GetRetentionSettings'),
+    newGetRetentionSettings,
+    GetRetentionSettingsResponse (GetRetentionSettingsResponse'),
+    newGetRetentionSettingsResponse,
+
+    -- ** GetRoom
+    GetRoom (GetRoom'),
+    newGetRoom,
+    GetRoomResponse (GetRoomResponse'),
+    newGetRoomResponse,
+
+    -- ** GetSipMediaApplication
+    GetSipMediaApplication (GetSipMediaApplication'),
+    newGetSipMediaApplication,
+    GetSipMediaApplicationResponse (GetSipMediaApplicationResponse'),
+    newGetSipMediaApplicationResponse,
+
+    -- ** GetSipMediaApplicationLoggingConfiguration
+    GetSipMediaApplicationLoggingConfiguration (GetSipMediaApplicationLoggingConfiguration'),
+    newGetSipMediaApplicationLoggingConfiguration,
+    GetSipMediaApplicationLoggingConfigurationResponse (GetSipMediaApplicationLoggingConfigurationResponse'),
+    newGetSipMediaApplicationLoggingConfigurationResponse,
+
+    -- ** GetSipRule
+    GetSipRule (GetSipRule'),
+    newGetSipRule,
+    GetSipRuleResponse (GetSipRuleResponse'),
+    newGetSipRuleResponse,
+
+    -- ** GetUser
+    GetUser (GetUser'),
+    newGetUser,
+    GetUserResponse (GetUserResponse'),
+    newGetUserResponse,
+
+    -- ** GetUserSettings
+    GetUserSettings (GetUserSettings'),
+    newGetUserSettings,
+    GetUserSettingsResponse (GetUserSettingsResponse'),
+    newGetUserSettingsResponse,
+
+    -- ** GetVoiceConnector
+    GetVoiceConnector (GetVoiceConnector'),
+    newGetVoiceConnector,
+    GetVoiceConnectorResponse (GetVoiceConnectorResponse'),
+    newGetVoiceConnectorResponse,
+
+    -- ** GetVoiceConnectorEmergencyCallingConfiguration
+    GetVoiceConnectorEmergencyCallingConfiguration (GetVoiceConnectorEmergencyCallingConfiguration'),
+    newGetVoiceConnectorEmergencyCallingConfiguration,
+    GetVoiceConnectorEmergencyCallingConfigurationResponse (GetVoiceConnectorEmergencyCallingConfigurationResponse'),
+    newGetVoiceConnectorEmergencyCallingConfigurationResponse,
+
+    -- ** GetVoiceConnectorGroup
+    GetVoiceConnectorGroup (GetVoiceConnectorGroup'),
+    newGetVoiceConnectorGroup,
+    GetVoiceConnectorGroupResponse (GetVoiceConnectorGroupResponse'),
+    newGetVoiceConnectorGroupResponse,
+
+    -- ** GetVoiceConnectorLoggingConfiguration
+    GetVoiceConnectorLoggingConfiguration (GetVoiceConnectorLoggingConfiguration'),
+    newGetVoiceConnectorLoggingConfiguration,
+    GetVoiceConnectorLoggingConfigurationResponse (GetVoiceConnectorLoggingConfigurationResponse'),
+    newGetVoiceConnectorLoggingConfigurationResponse,
+
+    -- ** GetVoiceConnectorOrigination
+    GetVoiceConnectorOrigination (GetVoiceConnectorOrigination'),
+    newGetVoiceConnectorOrigination,
+    GetVoiceConnectorOriginationResponse (GetVoiceConnectorOriginationResponse'),
+    newGetVoiceConnectorOriginationResponse,
+
+    -- ** GetVoiceConnectorProxy
+    GetVoiceConnectorProxy (GetVoiceConnectorProxy'),
+    newGetVoiceConnectorProxy,
+    GetVoiceConnectorProxyResponse (GetVoiceConnectorProxyResponse'),
+    newGetVoiceConnectorProxyResponse,
+
+    -- ** GetVoiceConnectorStreamingConfiguration
+    GetVoiceConnectorStreamingConfiguration (GetVoiceConnectorStreamingConfiguration'),
+    newGetVoiceConnectorStreamingConfiguration,
+    GetVoiceConnectorStreamingConfigurationResponse (GetVoiceConnectorStreamingConfigurationResponse'),
+    newGetVoiceConnectorStreamingConfigurationResponse,
+
+    -- ** GetVoiceConnectorTermination
+    GetVoiceConnectorTermination (GetVoiceConnectorTermination'),
+    newGetVoiceConnectorTermination,
+    GetVoiceConnectorTerminationResponse (GetVoiceConnectorTerminationResponse'),
+    newGetVoiceConnectorTerminationResponse,
+
+    -- ** GetVoiceConnectorTerminationHealth
+    GetVoiceConnectorTerminationHealth (GetVoiceConnectorTerminationHealth'),
+    newGetVoiceConnectorTerminationHealth,
+    GetVoiceConnectorTerminationHealthResponse (GetVoiceConnectorTerminationHealthResponse'),
+    newGetVoiceConnectorTerminationHealthResponse,
+
+    -- ** InviteUsers
+    InviteUsers (InviteUsers'),
+    newInviteUsers,
+    InviteUsersResponse (InviteUsersResponse'),
+    newInviteUsersResponse,
+
+    -- ** ListAccounts (Paginated)
+    ListAccounts (ListAccounts'),
+    newListAccounts,
+    ListAccountsResponse (ListAccountsResponse'),
+    newListAccountsResponse,
+
+    -- ** ListAppInstanceAdmins
+    ListAppInstanceAdmins (ListAppInstanceAdmins'),
+    newListAppInstanceAdmins,
+    ListAppInstanceAdminsResponse (ListAppInstanceAdminsResponse'),
+    newListAppInstanceAdminsResponse,
+
+    -- ** ListAppInstanceUsers
+    ListAppInstanceUsers (ListAppInstanceUsers'),
+    newListAppInstanceUsers,
+    ListAppInstanceUsersResponse (ListAppInstanceUsersResponse'),
+    newListAppInstanceUsersResponse,
+
+    -- ** ListAppInstances
+    ListAppInstances (ListAppInstances'),
+    newListAppInstances,
+    ListAppInstancesResponse (ListAppInstancesResponse'),
+    newListAppInstancesResponse,
+
+    -- ** ListAttendeeTags
+    ListAttendeeTags (ListAttendeeTags'),
+    newListAttendeeTags,
+    ListAttendeeTagsResponse (ListAttendeeTagsResponse'),
+    newListAttendeeTagsResponse,
+
+    -- ** ListAttendees
+    ListAttendees (ListAttendees'),
+    newListAttendees,
+    ListAttendeesResponse (ListAttendeesResponse'),
+    newListAttendeesResponse,
+
+    -- ** ListBots
+    ListBots (ListBots'),
+    newListBots,
+    ListBotsResponse (ListBotsResponse'),
+    newListBotsResponse,
+
+    -- ** ListChannelBans
+    ListChannelBans (ListChannelBans'),
+    newListChannelBans,
+    ListChannelBansResponse (ListChannelBansResponse'),
+    newListChannelBansResponse,
+
+    -- ** ListChannelMemberships
+    ListChannelMemberships (ListChannelMemberships'),
+    newListChannelMemberships,
+    ListChannelMembershipsResponse (ListChannelMembershipsResponse'),
+    newListChannelMembershipsResponse,
+
+    -- ** ListChannelMembershipsForAppInstanceUser
+    ListChannelMembershipsForAppInstanceUser (ListChannelMembershipsForAppInstanceUser'),
+    newListChannelMembershipsForAppInstanceUser,
+    ListChannelMembershipsForAppInstanceUserResponse (ListChannelMembershipsForAppInstanceUserResponse'),
+    newListChannelMembershipsForAppInstanceUserResponse,
+
+    -- ** ListChannelMessages
+    ListChannelMessages (ListChannelMessages'),
+    newListChannelMessages,
+    ListChannelMessagesResponse (ListChannelMessagesResponse'),
+    newListChannelMessagesResponse,
+
+    -- ** ListChannelModerators
+    ListChannelModerators (ListChannelModerators'),
+    newListChannelModerators,
+    ListChannelModeratorsResponse (ListChannelModeratorsResponse'),
+    newListChannelModeratorsResponse,
+
+    -- ** ListChannels
+    ListChannels (ListChannels'),
+    newListChannels,
+    ListChannelsResponse (ListChannelsResponse'),
+    newListChannelsResponse,
+
+    -- ** ListChannelsModeratedByAppInstanceUser
+    ListChannelsModeratedByAppInstanceUser (ListChannelsModeratedByAppInstanceUser'),
+    newListChannelsModeratedByAppInstanceUser,
+    ListChannelsModeratedByAppInstanceUserResponse (ListChannelsModeratedByAppInstanceUserResponse'),
+    newListChannelsModeratedByAppInstanceUserResponse,
+
+    -- ** ListMediaCapturePipelines
+    ListMediaCapturePipelines (ListMediaCapturePipelines'),
+    newListMediaCapturePipelines,
+    ListMediaCapturePipelinesResponse (ListMediaCapturePipelinesResponse'),
+    newListMediaCapturePipelinesResponse,
+
+    -- ** ListMeetingTags
+    ListMeetingTags (ListMeetingTags'),
+    newListMeetingTags,
+    ListMeetingTagsResponse (ListMeetingTagsResponse'),
+    newListMeetingTagsResponse,
+
+    -- ** ListMeetings
+    ListMeetings (ListMeetings'),
+    newListMeetings,
+    ListMeetingsResponse (ListMeetingsResponse'),
+    newListMeetingsResponse,
+
+    -- ** ListPhoneNumberOrders
+    ListPhoneNumberOrders (ListPhoneNumberOrders'),
+    newListPhoneNumberOrders,
+    ListPhoneNumberOrdersResponse (ListPhoneNumberOrdersResponse'),
+    newListPhoneNumberOrdersResponse,
+
+    -- ** ListPhoneNumbers
+    ListPhoneNumbers (ListPhoneNumbers'),
+    newListPhoneNumbers,
+    ListPhoneNumbersResponse (ListPhoneNumbersResponse'),
+    newListPhoneNumbersResponse,
+
+    -- ** ListProxySessions
+    ListProxySessions (ListProxySessions'),
+    newListProxySessions,
+    ListProxySessionsResponse (ListProxySessionsResponse'),
+    newListProxySessionsResponse,
+
+    -- ** ListRoomMemberships
+    ListRoomMemberships (ListRoomMemberships'),
+    newListRoomMemberships,
+    ListRoomMembershipsResponse (ListRoomMembershipsResponse'),
+    newListRoomMembershipsResponse,
+
+    -- ** ListRooms
+    ListRooms (ListRooms'),
+    newListRooms,
+    ListRoomsResponse (ListRoomsResponse'),
+    newListRoomsResponse,
+
+    -- ** ListSipMediaApplications
+    ListSipMediaApplications (ListSipMediaApplications'),
+    newListSipMediaApplications,
+    ListSipMediaApplicationsResponse (ListSipMediaApplicationsResponse'),
+    newListSipMediaApplicationsResponse,
+
+    -- ** ListSipRules
+    ListSipRules (ListSipRules'),
+    newListSipRules,
+    ListSipRulesResponse (ListSipRulesResponse'),
+    newListSipRulesResponse,
+
+    -- ** ListSupportedPhoneNumberCountries
+    ListSupportedPhoneNumberCountries (ListSupportedPhoneNumberCountries'),
+    newListSupportedPhoneNumberCountries,
+    ListSupportedPhoneNumberCountriesResponse (ListSupportedPhoneNumberCountriesResponse'),
+    newListSupportedPhoneNumberCountriesResponse,
+
+    -- ** ListTagsForResource
+    ListTagsForResource (ListTagsForResource'),
+    newListTagsForResource,
+    ListTagsForResourceResponse (ListTagsForResourceResponse'),
+    newListTagsForResourceResponse,
+
+    -- ** ListUsers (Paginated)
+    ListUsers (ListUsers'),
+    newListUsers,
+    ListUsersResponse (ListUsersResponse'),
+    newListUsersResponse,
+
+    -- ** ListVoiceConnectorGroups
+    ListVoiceConnectorGroups (ListVoiceConnectorGroups'),
+    newListVoiceConnectorGroups,
+    ListVoiceConnectorGroupsResponse (ListVoiceConnectorGroupsResponse'),
+    newListVoiceConnectorGroupsResponse,
+
+    -- ** ListVoiceConnectorTerminationCredentials
+    ListVoiceConnectorTerminationCredentials (ListVoiceConnectorTerminationCredentials'),
+    newListVoiceConnectorTerminationCredentials,
+    ListVoiceConnectorTerminationCredentialsResponse (ListVoiceConnectorTerminationCredentialsResponse'),
+    newListVoiceConnectorTerminationCredentialsResponse,
+
+    -- ** ListVoiceConnectors
+    ListVoiceConnectors (ListVoiceConnectors'),
+    newListVoiceConnectors,
+    ListVoiceConnectorsResponse (ListVoiceConnectorsResponse'),
+    newListVoiceConnectorsResponse,
+
+    -- ** LogoutUser
+    LogoutUser (LogoutUser'),
+    newLogoutUser,
+    LogoutUserResponse (LogoutUserResponse'),
+    newLogoutUserResponse,
+
+    -- ** PutAppInstanceRetentionSettings
+    PutAppInstanceRetentionSettings (PutAppInstanceRetentionSettings'),
+    newPutAppInstanceRetentionSettings,
+    PutAppInstanceRetentionSettingsResponse (PutAppInstanceRetentionSettingsResponse'),
+    newPutAppInstanceRetentionSettingsResponse,
+
+    -- ** PutAppInstanceStreamingConfigurations
+    PutAppInstanceStreamingConfigurations (PutAppInstanceStreamingConfigurations'),
+    newPutAppInstanceStreamingConfigurations,
+    PutAppInstanceStreamingConfigurationsResponse (PutAppInstanceStreamingConfigurationsResponse'),
+    newPutAppInstanceStreamingConfigurationsResponse,
+
+    -- ** PutEventsConfiguration
+    PutEventsConfiguration (PutEventsConfiguration'),
+    newPutEventsConfiguration,
+    PutEventsConfigurationResponse (PutEventsConfigurationResponse'),
+    newPutEventsConfigurationResponse,
+
+    -- ** PutRetentionSettings
+    PutRetentionSettings (PutRetentionSettings'),
+    newPutRetentionSettings,
+    PutRetentionSettingsResponse (PutRetentionSettingsResponse'),
+    newPutRetentionSettingsResponse,
+
+    -- ** PutSipMediaApplicationLoggingConfiguration
+    PutSipMediaApplicationLoggingConfiguration (PutSipMediaApplicationLoggingConfiguration'),
+    newPutSipMediaApplicationLoggingConfiguration,
+    PutSipMediaApplicationLoggingConfigurationResponse (PutSipMediaApplicationLoggingConfigurationResponse'),
+    newPutSipMediaApplicationLoggingConfigurationResponse,
+
+    -- ** PutVoiceConnectorEmergencyCallingConfiguration
+    PutVoiceConnectorEmergencyCallingConfiguration (PutVoiceConnectorEmergencyCallingConfiguration'),
+    newPutVoiceConnectorEmergencyCallingConfiguration,
+    PutVoiceConnectorEmergencyCallingConfigurationResponse (PutVoiceConnectorEmergencyCallingConfigurationResponse'),
+    newPutVoiceConnectorEmergencyCallingConfigurationResponse,
+
+    -- ** PutVoiceConnectorLoggingConfiguration
+    PutVoiceConnectorLoggingConfiguration (PutVoiceConnectorLoggingConfiguration'),
+    newPutVoiceConnectorLoggingConfiguration,
+    PutVoiceConnectorLoggingConfigurationResponse (PutVoiceConnectorLoggingConfigurationResponse'),
+    newPutVoiceConnectorLoggingConfigurationResponse,
+
+    -- ** PutVoiceConnectorOrigination
+    PutVoiceConnectorOrigination (PutVoiceConnectorOrigination'),
+    newPutVoiceConnectorOrigination,
+    PutVoiceConnectorOriginationResponse (PutVoiceConnectorOriginationResponse'),
+    newPutVoiceConnectorOriginationResponse,
+
+    -- ** PutVoiceConnectorProxy
+    PutVoiceConnectorProxy (PutVoiceConnectorProxy'),
+    newPutVoiceConnectorProxy,
+    PutVoiceConnectorProxyResponse (PutVoiceConnectorProxyResponse'),
+    newPutVoiceConnectorProxyResponse,
+
+    -- ** PutVoiceConnectorStreamingConfiguration
+    PutVoiceConnectorStreamingConfiguration (PutVoiceConnectorStreamingConfiguration'),
+    newPutVoiceConnectorStreamingConfiguration,
+    PutVoiceConnectorStreamingConfigurationResponse (PutVoiceConnectorStreamingConfigurationResponse'),
+    newPutVoiceConnectorStreamingConfigurationResponse,
+
+    -- ** PutVoiceConnectorTermination
+    PutVoiceConnectorTermination (PutVoiceConnectorTermination'),
+    newPutVoiceConnectorTermination,
+    PutVoiceConnectorTerminationResponse (PutVoiceConnectorTerminationResponse'),
+    newPutVoiceConnectorTerminationResponse,
+
+    -- ** PutVoiceConnectorTerminationCredentials
+    PutVoiceConnectorTerminationCredentials (PutVoiceConnectorTerminationCredentials'),
+    newPutVoiceConnectorTerminationCredentials,
+    PutVoiceConnectorTerminationCredentialsResponse (PutVoiceConnectorTerminationCredentialsResponse'),
+    newPutVoiceConnectorTerminationCredentialsResponse,
+
+    -- ** RedactChannelMessage
+    RedactChannelMessage (RedactChannelMessage'),
+    newRedactChannelMessage,
+    RedactChannelMessageResponse (RedactChannelMessageResponse'),
+    newRedactChannelMessageResponse,
+
+    -- ** RedactConversationMessage
+    RedactConversationMessage (RedactConversationMessage'),
+    newRedactConversationMessage,
+    RedactConversationMessageResponse (RedactConversationMessageResponse'),
+    newRedactConversationMessageResponse,
+
+    -- ** RedactRoomMessage
+    RedactRoomMessage (RedactRoomMessage'),
+    newRedactRoomMessage,
+    RedactRoomMessageResponse (RedactRoomMessageResponse'),
+    newRedactRoomMessageResponse,
+
+    -- ** RegenerateSecurityToken
+    RegenerateSecurityToken (RegenerateSecurityToken'),
+    newRegenerateSecurityToken,
+    RegenerateSecurityTokenResponse (RegenerateSecurityTokenResponse'),
+    newRegenerateSecurityTokenResponse,
+
+    -- ** ResetPersonalPIN
+    ResetPersonalPIN (ResetPersonalPIN'),
+    newResetPersonalPIN,
+    ResetPersonalPINResponse (ResetPersonalPINResponse'),
+    newResetPersonalPINResponse,
+
+    -- ** RestorePhoneNumber
+    RestorePhoneNumber (RestorePhoneNumber'),
+    newRestorePhoneNumber,
+    RestorePhoneNumberResponse (RestorePhoneNumberResponse'),
+    newRestorePhoneNumberResponse,
+
+    -- ** SearchAvailablePhoneNumbers
+    SearchAvailablePhoneNumbers (SearchAvailablePhoneNumbers'),
+    newSearchAvailablePhoneNumbers,
+    SearchAvailablePhoneNumbersResponse (SearchAvailablePhoneNumbersResponse'),
+    newSearchAvailablePhoneNumbersResponse,
+
+    -- ** SendChannelMessage
+    SendChannelMessage (SendChannelMessage'),
+    newSendChannelMessage,
+    SendChannelMessageResponse (SendChannelMessageResponse'),
+    newSendChannelMessageResponse,
+
+    -- ** StartMeetingTranscription
+    StartMeetingTranscription (StartMeetingTranscription'),
+    newStartMeetingTranscription,
+    StartMeetingTranscriptionResponse (StartMeetingTranscriptionResponse'),
+    newStartMeetingTranscriptionResponse,
+
+    -- ** StopMeetingTranscription
+    StopMeetingTranscription (StopMeetingTranscription'),
+    newStopMeetingTranscription,
+    StopMeetingTranscriptionResponse (StopMeetingTranscriptionResponse'),
+    newStopMeetingTranscriptionResponse,
+
+    -- ** TagAttendee
+    TagAttendee (TagAttendee'),
+    newTagAttendee,
+    TagAttendeeResponse (TagAttendeeResponse'),
+    newTagAttendeeResponse,
+
+    -- ** TagMeeting
+    TagMeeting (TagMeeting'),
+    newTagMeeting,
+    TagMeetingResponse (TagMeetingResponse'),
+    newTagMeetingResponse,
+
+    -- ** TagResource
+    TagResource (TagResource'),
+    newTagResource,
+    TagResourceResponse (TagResourceResponse'),
+    newTagResourceResponse,
+
+    -- ** UntagAttendee
+    UntagAttendee (UntagAttendee'),
+    newUntagAttendee,
+    UntagAttendeeResponse (UntagAttendeeResponse'),
+    newUntagAttendeeResponse,
+
+    -- ** UntagMeeting
+    UntagMeeting (UntagMeeting'),
+    newUntagMeeting,
+    UntagMeetingResponse (UntagMeetingResponse'),
+    newUntagMeetingResponse,
+
+    -- ** UntagResource
+    UntagResource (UntagResource'),
+    newUntagResource,
+    UntagResourceResponse (UntagResourceResponse'),
+    newUntagResourceResponse,
+
+    -- ** UpdateAccount
+    UpdateAccount (UpdateAccount'),
+    newUpdateAccount,
+    UpdateAccountResponse (UpdateAccountResponse'),
+    newUpdateAccountResponse,
+
+    -- ** UpdateAccountSettings
+    UpdateAccountSettings (UpdateAccountSettings'),
+    newUpdateAccountSettings,
+    UpdateAccountSettingsResponse (UpdateAccountSettingsResponse'),
+    newUpdateAccountSettingsResponse,
+
+    -- ** UpdateAppInstance
+    UpdateAppInstance (UpdateAppInstance'),
+    newUpdateAppInstance,
+    UpdateAppInstanceResponse (UpdateAppInstanceResponse'),
+    newUpdateAppInstanceResponse,
+
+    -- ** UpdateAppInstanceUser
+    UpdateAppInstanceUser (UpdateAppInstanceUser'),
+    newUpdateAppInstanceUser,
+    UpdateAppInstanceUserResponse (UpdateAppInstanceUserResponse'),
+    newUpdateAppInstanceUserResponse,
+
+    -- ** UpdateBot
+    UpdateBot (UpdateBot'),
+    newUpdateBot,
+    UpdateBotResponse (UpdateBotResponse'),
+    newUpdateBotResponse,
+
+    -- ** UpdateChannel
+    UpdateChannel (UpdateChannel'),
+    newUpdateChannel,
+    UpdateChannelResponse (UpdateChannelResponse'),
+    newUpdateChannelResponse,
+
+    -- ** UpdateChannelMessage
+    UpdateChannelMessage (UpdateChannelMessage'),
+    newUpdateChannelMessage,
+    UpdateChannelMessageResponse (UpdateChannelMessageResponse'),
+    newUpdateChannelMessageResponse,
+
+    -- ** UpdateChannelReadMarker
+    UpdateChannelReadMarker (UpdateChannelReadMarker'),
+    newUpdateChannelReadMarker,
+    UpdateChannelReadMarkerResponse (UpdateChannelReadMarkerResponse'),
+    newUpdateChannelReadMarkerResponse,
+
+    -- ** UpdateGlobalSettings
+    UpdateGlobalSettings (UpdateGlobalSettings'),
+    newUpdateGlobalSettings,
+    UpdateGlobalSettingsResponse (UpdateGlobalSettingsResponse'),
+    newUpdateGlobalSettingsResponse,
+
+    -- ** UpdatePhoneNumber
+    UpdatePhoneNumber (UpdatePhoneNumber'),
+    newUpdatePhoneNumber,
+    UpdatePhoneNumberResponse (UpdatePhoneNumberResponse'),
+    newUpdatePhoneNumberResponse,
+
+    -- ** UpdatePhoneNumberSettings
+    UpdatePhoneNumberSettings (UpdatePhoneNumberSettings'),
+    newUpdatePhoneNumberSettings,
+    UpdatePhoneNumberSettingsResponse (UpdatePhoneNumberSettingsResponse'),
+    newUpdatePhoneNumberSettingsResponse,
+
+    -- ** UpdateProxySession
+    UpdateProxySession (UpdateProxySession'),
+    newUpdateProxySession,
+    UpdateProxySessionResponse (UpdateProxySessionResponse'),
+    newUpdateProxySessionResponse,
+
+    -- ** UpdateRoom
+    UpdateRoom (UpdateRoom'),
+    newUpdateRoom,
+    UpdateRoomResponse (UpdateRoomResponse'),
+    newUpdateRoomResponse,
+
+    -- ** UpdateRoomMembership
+    UpdateRoomMembership (UpdateRoomMembership'),
+    newUpdateRoomMembership,
+    UpdateRoomMembershipResponse (UpdateRoomMembershipResponse'),
+    newUpdateRoomMembershipResponse,
+
+    -- ** UpdateSipMediaApplication
+    UpdateSipMediaApplication (UpdateSipMediaApplication'),
+    newUpdateSipMediaApplication,
+    UpdateSipMediaApplicationResponse (UpdateSipMediaApplicationResponse'),
+    newUpdateSipMediaApplicationResponse,
+
+    -- ** UpdateSipMediaApplicationCall
+    UpdateSipMediaApplicationCall (UpdateSipMediaApplicationCall'),
+    newUpdateSipMediaApplicationCall,
+    UpdateSipMediaApplicationCallResponse (UpdateSipMediaApplicationCallResponse'),
+    newUpdateSipMediaApplicationCallResponse,
+
+    -- ** UpdateSipRule
+    UpdateSipRule (UpdateSipRule'),
+    newUpdateSipRule,
+    UpdateSipRuleResponse (UpdateSipRuleResponse'),
+    newUpdateSipRuleResponse,
+
+    -- ** UpdateUser
+    UpdateUser (UpdateUser'),
+    newUpdateUser,
+    UpdateUserResponse (UpdateUserResponse'),
+    newUpdateUserResponse,
+
+    -- ** UpdateUserSettings
+    UpdateUserSettings (UpdateUserSettings'),
+    newUpdateUserSettings,
+    UpdateUserSettingsResponse (UpdateUserSettingsResponse'),
+    newUpdateUserSettingsResponse,
+
+    -- ** UpdateVoiceConnector
+    UpdateVoiceConnector (UpdateVoiceConnector'),
+    newUpdateVoiceConnector,
+    UpdateVoiceConnectorResponse (UpdateVoiceConnectorResponse'),
+    newUpdateVoiceConnectorResponse,
+
+    -- ** UpdateVoiceConnectorGroup
+    UpdateVoiceConnectorGroup (UpdateVoiceConnectorGroup'),
+    newUpdateVoiceConnectorGroup,
+    UpdateVoiceConnectorGroupResponse (UpdateVoiceConnectorGroupResponse'),
+    newUpdateVoiceConnectorGroupResponse,
+
+    -- ** ValidateE911Address
+    ValidateE911Address (ValidateE911Address'),
+    newValidateE911Address,
+    ValidateE911AddressResponse (ValidateE911AddressResponse'),
+    newValidateE911AddressResponse,
+
+    -- * Types
+
+    -- ** AccountStatus
+    AccountStatus (..),
+
+    -- ** AccountType
+    AccountType (..),
+
+    -- ** AppInstanceDataType
+    AppInstanceDataType (..),
+
+    -- ** ArtifactsState
+    ArtifactsState (..),
+
+    -- ** AudioMuxType
+    AudioMuxType (..),
+
+    -- ** BotType
+    BotType (..),
+
+    -- ** CallingNameStatus
+    CallingNameStatus (..),
+
+    -- ** Capability
+    Capability (..),
+
+    -- ** ChannelMembershipType
+    ChannelMembershipType (..),
+
+    -- ** ChannelMessagePersistenceType
+    ChannelMessagePersistenceType (..),
+
+    -- ** ChannelMessageType
+    ChannelMessageType (..),
+
+    -- ** ChannelMode
+    ChannelMode (..),
+
+    -- ** ChannelPrivacy
+    ChannelPrivacy (..),
+
+    -- ** ContentMuxType
+    ContentMuxType (..),
+
+    -- ** EmailStatus
+    EmailStatus (..),
+
+    -- ** ErrorCode
+    ErrorCode (..),
+
+    -- ** GeoMatchLevel
+    GeoMatchLevel (..),
+
+    -- ** InviteStatus
+    InviteStatus (..),
+
+    -- ** License
+    License (..),
+
+    -- ** MediaPipelineSinkType
+    MediaPipelineSinkType (..),
+
+    -- ** MediaPipelineSourceType
+    MediaPipelineSourceType (..),
+
+    -- ** MediaPipelineStatus
+    MediaPipelineStatus (..),
+
+    -- ** MemberType
+    MemberType (..),
+
+    -- ** NotificationTarget
+    NotificationTarget (..),
+
+    -- ** NumberSelectionBehavior
+    NumberSelectionBehavior (..),
+
+    -- ** OrderedPhoneNumberStatus
+    OrderedPhoneNumberStatus (..),
+
+    -- ** OriginationRouteProtocol
+    OriginationRouteProtocol (..),
+
+    -- ** PhoneNumberAssociationName
+    PhoneNumberAssociationName (..),
+
+    -- ** PhoneNumberOrderStatus
+    PhoneNumberOrderStatus (..),
+
+    -- ** PhoneNumberProductType
+    PhoneNumberProductType (..),
+
+    -- ** PhoneNumberStatus
+    PhoneNumberStatus (..),
+
+    -- ** PhoneNumberType
+    PhoneNumberType (..),
+
+    -- ** ProxySessionStatus
+    ProxySessionStatus (..),
+
+    -- ** RegistrationStatus
+    RegistrationStatus (..),
+
+    -- ** RoomMembershipRole
+    RoomMembershipRole (..),
+
+    -- ** SipRuleTriggerType
+    SipRuleTriggerType (..),
+
+    -- ** SortOrder
+    SortOrder (..),
+
+    -- ** TranscribeContentIdentificationType
+    TranscribeContentIdentificationType (..),
+
+    -- ** TranscribeContentRedactionType
+    TranscribeContentRedactionType (..),
+
+    -- ** TranscribeLanguageCode
+    TranscribeLanguageCode (..),
+
+    -- ** TranscribeMedicalContentIdentificationType
+    TranscribeMedicalContentIdentificationType (..),
+
+    -- ** TranscribeMedicalLanguageCode
+    TranscribeMedicalLanguageCode (..),
+
+    -- ** TranscribeMedicalRegion
+    TranscribeMedicalRegion (..),
+
+    -- ** TranscribeMedicalSpecialty
+    TranscribeMedicalSpecialty (..),
+
+    -- ** TranscribeMedicalType
+    TranscribeMedicalType (..),
+
+    -- ** TranscribePartialResultsStability
+    TranscribePartialResultsStability (..),
+
+    -- ** TranscribeRegion
+    TranscribeRegion (..),
+
+    -- ** TranscribeVocabularyFilterMethod
+    TranscribeVocabularyFilterMethod (..),
+
+    -- ** UserType
+    UserType (..),
+
+    -- ** VideoMuxType
+    VideoMuxType (..),
+
+    -- ** VoiceConnectorAwsRegion
+    VoiceConnectorAwsRegion (..),
+
+    -- ** Account
+    Account (Account'),
+    newAccount,
+
+    -- ** AccountSettings
+    AccountSettings (AccountSettings'),
+    newAccountSettings,
+
+    -- ** Address
+    Address (Address'),
+    newAddress,
+
+    -- ** AlexaForBusinessMetadata
+    AlexaForBusinessMetadata (AlexaForBusinessMetadata'),
+    newAlexaForBusinessMetadata,
+
+    -- ** AppInstance
+    AppInstance (AppInstance'),
+    newAppInstance,
+
+    -- ** AppInstanceAdmin
+    AppInstanceAdmin (AppInstanceAdmin'),
+    newAppInstanceAdmin,
+
+    -- ** AppInstanceAdminSummary
+    AppInstanceAdminSummary (AppInstanceAdminSummary'),
+    newAppInstanceAdminSummary,
+
+    -- ** AppInstanceRetentionSettings
+    AppInstanceRetentionSettings (AppInstanceRetentionSettings'),
+    newAppInstanceRetentionSettings,
+
+    -- ** AppInstanceStreamingConfiguration
+    AppInstanceStreamingConfiguration (AppInstanceStreamingConfiguration'),
+    newAppInstanceStreamingConfiguration,
+
+    -- ** AppInstanceSummary
+    AppInstanceSummary (AppInstanceSummary'),
+    newAppInstanceSummary,
+
+    -- ** AppInstanceUser
+    AppInstanceUser (AppInstanceUser'),
+    newAppInstanceUser,
+
+    -- ** AppInstanceUserMembershipSummary
+    AppInstanceUserMembershipSummary (AppInstanceUserMembershipSummary'),
+    newAppInstanceUserMembershipSummary,
+
+    -- ** AppInstanceUserSummary
+    AppInstanceUserSummary (AppInstanceUserSummary'),
+    newAppInstanceUserSummary,
+
+    -- ** ArtifactsConfiguration
+    ArtifactsConfiguration (ArtifactsConfiguration'),
+    newArtifactsConfiguration,
+
+    -- ** Attendee
+    Attendee (Attendee'),
+    newAttendee,
+
+    -- ** AudioArtifactsConfiguration
+    AudioArtifactsConfiguration (AudioArtifactsConfiguration'),
+    newAudioArtifactsConfiguration,
+
+    -- ** BatchChannelMemberships
+    BatchChannelMemberships (BatchChannelMemberships'),
+    newBatchChannelMemberships,
+
+    -- ** BatchCreateChannelMembershipError
+    BatchCreateChannelMembershipError (BatchCreateChannelMembershipError'),
+    newBatchCreateChannelMembershipError,
+
+    -- ** Bot
+    Bot (Bot'),
+    newBot,
+
+    -- ** BusinessCallingSettings
+    BusinessCallingSettings (BusinessCallingSettings'),
+    newBusinessCallingSettings,
+
+    -- ** CandidateAddress
+    CandidateAddress (CandidateAddress'),
+    newCandidateAddress,
+
+    -- ** Channel
+    Channel (Channel'),
+    newChannel,
+
+    -- ** ChannelBan
+    ChannelBan (ChannelBan'),
+    newChannelBan,
+
+    -- ** ChannelBanSummary
+    ChannelBanSummary (ChannelBanSummary'),
+    newChannelBanSummary,
+
+    -- ** ChannelMembership
+    ChannelMembership (ChannelMembership'),
+    newChannelMembership,
+
+    -- ** ChannelMembershipForAppInstanceUserSummary
+    ChannelMembershipForAppInstanceUserSummary (ChannelMembershipForAppInstanceUserSummary'),
+    newChannelMembershipForAppInstanceUserSummary,
+
+    -- ** ChannelMembershipSummary
+    ChannelMembershipSummary (ChannelMembershipSummary'),
+    newChannelMembershipSummary,
+
+    -- ** ChannelMessage
+    ChannelMessage (ChannelMessage'),
+    newChannelMessage,
+
+    -- ** ChannelMessageSummary
+    ChannelMessageSummary (ChannelMessageSummary'),
+    newChannelMessageSummary,
+
+    -- ** ChannelModeratedByAppInstanceUserSummary
+    ChannelModeratedByAppInstanceUserSummary (ChannelModeratedByAppInstanceUserSummary'),
+    newChannelModeratedByAppInstanceUserSummary,
+
+    -- ** ChannelModerator
+    ChannelModerator (ChannelModerator'),
+    newChannelModerator,
+
+    -- ** ChannelModeratorSummary
+    ChannelModeratorSummary (ChannelModeratorSummary'),
+    newChannelModeratorSummary,
+
+    -- ** ChannelRetentionSettings
+    ChannelRetentionSettings (ChannelRetentionSettings'),
+    newChannelRetentionSettings,
+
+    -- ** ChannelSummary
+    ChannelSummary (ChannelSummary'),
+    newChannelSummary,
+
+    -- ** ChimeSdkMeetingConfiguration
+    ChimeSdkMeetingConfiguration (ChimeSdkMeetingConfiguration'),
+    newChimeSdkMeetingConfiguration,
+
+    -- ** ContentArtifactsConfiguration
+    ContentArtifactsConfiguration (ContentArtifactsConfiguration'),
+    newContentArtifactsConfiguration,
+
+    -- ** ConversationRetentionSettings
+    ConversationRetentionSettings (ConversationRetentionSettings'),
+    newConversationRetentionSettings,
+
+    -- ** CreateAttendeeError
+    CreateAttendeeError (CreateAttendeeError'),
+    newCreateAttendeeError,
+
+    -- ** CreateAttendeeRequestItem
+    CreateAttendeeRequestItem (CreateAttendeeRequestItem'),
+    newCreateAttendeeRequestItem,
+
+    -- ** Credential
+    Credential (Credential'),
+    newCredential,
+
+    -- ** DNISEmergencyCallingConfiguration
+    DNISEmergencyCallingConfiguration (DNISEmergencyCallingConfiguration'),
+    newDNISEmergencyCallingConfiguration,
+
+    -- ** EmergencyCallingConfiguration
+    EmergencyCallingConfiguration (EmergencyCallingConfiguration'),
+    newEmergencyCallingConfiguration,
+
+    -- ** EngineTranscribeMedicalSettings
+    EngineTranscribeMedicalSettings (EngineTranscribeMedicalSettings'),
+    newEngineTranscribeMedicalSettings,
+
+    -- ** EngineTranscribeSettings
+    EngineTranscribeSettings (EngineTranscribeSettings'),
+    newEngineTranscribeSettings,
+
+    -- ** EventsConfiguration
+    EventsConfiguration (EventsConfiguration'),
+    newEventsConfiguration,
+
+    -- ** GeoMatchParams
+    GeoMatchParams (GeoMatchParams'),
+    newGeoMatchParams,
+
+    -- ** Identity
+    Identity (Identity'),
+    newIdentity,
+
+    -- ** Invite
+    Invite (Invite'),
+    newInvite,
+
+    -- ** LoggingConfiguration
+    LoggingConfiguration (LoggingConfiguration'),
+    newLoggingConfiguration,
+
+    -- ** MediaCapturePipeline
+    MediaCapturePipeline (MediaCapturePipeline'),
+    newMediaCapturePipeline,
+
+    -- ** MediaPlacement
+    MediaPlacement (MediaPlacement'),
+    newMediaPlacement,
+
+    -- ** Meeting
+    Meeting (Meeting'),
+    newMeeting,
+
+    -- ** MeetingNotificationConfiguration
+    MeetingNotificationConfiguration (MeetingNotificationConfiguration'),
+    newMeetingNotificationConfiguration,
+
+    -- ** Member
+    Member (Member'),
+    newMember,
+
+    -- ** MemberError
+    MemberError (MemberError'),
+    newMemberError,
+
+    -- ** MembershipItem
+    MembershipItem (MembershipItem'),
+    newMembershipItem,
+
+    -- ** MessagingSessionEndpoint
+    MessagingSessionEndpoint (MessagingSessionEndpoint'),
+    newMessagingSessionEndpoint,
+
+    -- ** OrderedPhoneNumber
+    OrderedPhoneNumber (OrderedPhoneNumber'),
+    newOrderedPhoneNumber,
+
+    -- ** Origination
+    Origination (Origination'),
+    newOrigination,
+
+    -- ** OriginationRoute
+    OriginationRoute (OriginationRoute'),
+    newOriginationRoute,
+
+    -- ** Participant
+    Participant (Participant'),
+    newParticipant,
+
+    -- ** PhoneNumber
+    PhoneNumber (PhoneNumber'),
+    newPhoneNumber,
+
+    -- ** PhoneNumberAssociation
+    PhoneNumberAssociation (PhoneNumberAssociation'),
+    newPhoneNumberAssociation,
+
+    -- ** PhoneNumberCapabilities
+    PhoneNumberCapabilities (PhoneNumberCapabilities'),
+    newPhoneNumberCapabilities,
+
+    -- ** PhoneNumberCountry
+    PhoneNumberCountry (PhoneNumberCountry'),
+    newPhoneNumberCountry,
+
+    -- ** PhoneNumberError
+    PhoneNumberError (PhoneNumberError'),
+    newPhoneNumberError,
+
+    -- ** PhoneNumberOrder
+    PhoneNumberOrder (PhoneNumberOrder'),
+    newPhoneNumberOrder,
+
+    -- ** Proxy
+    Proxy (Proxy'),
+    newProxy,
+
+    -- ** ProxySession
+    ProxySession (ProxySession'),
+    newProxySession,
+
+    -- ** RetentionSettings
+    RetentionSettings (RetentionSettings'),
+    newRetentionSettings,
+
+    -- ** Room
+    Room (Room'),
+    newRoom,
+
+    -- ** RoomMembership
+    RoomMembership (RoomMembership'),
+    newRoomMembership,
+
+    -- ** RoomRetentionSettings
+    RoomRetentionSettings (RoomRetentionSettings'),
+    newRoomRetentionSettings,
+
+    -- ** SelectedVideoStreams
+    SelectedVideoStreams (SelectedVideoStreams'),
+    newSelectedVideoStreams,
+
+    -- ** SigninDelegateGroup
+    SigninDelegateGroup (SigninDelegateGroup'),
+    newSigninDelegateGroup,
+
+    -- ** SipMediaApplication
+    SipMediaApplication (SipMediaApplication'),
+    newSipMediaApplication,
+
+    -- ** SipMediaApplicationCall
+    SipMediaApplicationCall (SipMediaApplicationCall'),
+    newSipMediaApplicationCall,
+
+    -- ** SipMediaApplicationEndpoint
+    SipMediaApplicationEndpoint (SipMediaApplicationEndpoint'),
+    newSipMediaApplicationEndpoint,
+
+    -- ** SipMediaApplicationLoggingConfiguration
+    SipMediaApplicationLoggingConfiguration (SipMediaApplicationLoggingConfiguration'),
+    newSipMediaApplicationLoggingConfiguration,
+
+    -- ** SipRule
+    SipRule (SipRule'),
+    newSipRule,
+
+    -- ** SipRuleTargetApplication
+    SipRuleTargetApplication (SipRuleTargetApplication'),
+    newSipRuleTargetApplication,
+
+    -- ** SourceConfiguration
+    SourceConfiguration (SourceConfiguration'),
+    newSourceConfiguration,
+
+    -- ** StreamingConfiguration
+    StreamingConfiguration (StreamingConfiguration'),
+    newStreamingConfiguration,
+
+    -- ** StreamingNotificationTarget
+    StreamingNotificationTarget (StreamingNotificationTarget'),
+    newStreamingNotificationTarget,
+
+    -- ** Tag
+    Tag (Tag'),
+    newTag,
+
+    -- ** TelephonySettings
+    TelephonySettings (TelephonySettings'),
+    newTelephonySettings,
+
+    -- ** Termination
+    Termination (Termination'),
+    newTermination,
+
+    -- ** TerminationHealth
+    TerminationHealth (TerminationHealth'),
+    newTerminationHealth,
+
+    -- ** TranscriptionConfiguration
+    TranscriptionConfiguration (TranscriptionConfiguration'),
+    newTranscriptionConfiguration,
+
+    -- ** UpdatePhoneNumberRequestItem
+    UpdatePhoneNumberRequestItem (UpdatePhoneNumberRequestItem'),
+    newUpdatePhoneNumberRequestItem,
+
+    -- ** UpdateUserRequestItem
+    UpdateUserRequestItem (UpdateUserRequestItem'),
+    newUpdateUserRequestItem,
+
+    -- ** User
+    User (User'),
+    newUser,
+
+    -- ** UserError
+    UserError (UserError'),
+    newUserError,
+
+    -- ** UserSettings
+    UserSettings (UserSettings'),
+    newUserSettings,
+
+    -- ** VideoArtifactsConfiguration
+    VideoArtifactsConfiguration (VideoArtifactsConfiguration'),
+    newVideoArtifactsConfiguration,
+
+    -- ** VoiceConnector
+    VoiceConnector (VoiceConnector'),
+    newVoiceConnector,
+
+    -- ** VoiceConnectorGroup
+    VoiceConnectorGroup (VoiceConnectorGroup'),
+    newVoiceConnectorGroup,
+
+    -- ** VoiceConnectorItem
+    VoiceConnectorItem (VoiceConnectorItem'),
+    newVoiceConnectorItem,
+
+    -- ** VoiceConnectorSettings
+    VoiceConnectorSettings (VoiceConnectorSettings'),
+    newVoiceConnectorSettings,
+  )
+where
+
+import Amazonka.Chime.AssociatePhoneNumberWithUser
+import Amazonka.Chime.AssociatePhoneNumbersWithVoiceConnector
+import Amazonka.Chime.AssociatePhoneNumbersWithVoiceConnectorGroup
+import Amazonka.Chime.AssociateSigninDelegateGroupsWithAccount
+import Amazonka.Chime.BatchCreateAttendee
+import Amazonka.Chime.BatchCreateChannelMembership
+import Amazonka.Chime.BatchCreateRoomMembership
+import Amazonka.Chime.BatchDeletePhoneNumber
+import Amazonka.Chime.BatchSuspendUser
+import Amazonka.Chime.BatchUnsuspendUser
+import Amazonka.Chime.BatchUpdatePhoneNumber
+import Amazonka.Chime.BatchUpdateUser
+import Amazonka.Chime.CreateAccount
+import Amazonka.Chime.CreateAppInstance
+import Amazonka.Chime.CreateAppInstanceAdmin
+import Amazonka.Chime.CreateAppInstanceUser
+import Amazonka.Chime.CreateAttendee
+import Amazonka.Chime.CreateBot
+import Amazonka.Chime.CreateChannel
+import Amazonka.Chime.CreateChannelBan
+import Amazonka.Chime.CreateChannelMembership
+import Amazonka.Chime.CreateChannelModerator
+import Amazonka.Chime.CreateMediaCapturePipeline
+import Amazonka.Chime.CreateMeeting
+import Amazonka.Chime.CreateMeetingDialOut
+import Amazonka.Chime.CreateMeetingWithAttendees
+import Amazonka.Chime.CreatePhoneNumberOrder
+import Amazonka.Chime.CreateProxySession
+import Amazonka.Chime.CreateRoom
+import Amazonka.Chime.CreateRoomMembership
+import Amazonka.Chime.CreateSipMediaApplication
+import Amazonka.Chime.CreateSipMediaApplicationCall
+import Amazonka.Chime.CreateSipRule
+import Amazonka.Chime.CreateUser
+import Amazonka.Chime.CreateVoiceConnector
+import Amazonka.Chime.CreateVoiceConnectorGroup
+import Amazonka.Chime.DeleteAccount
+import Amazonka.Chime.DeleteAppInstance
+import Amazonka.Chime.DeleteAppInstanceAdmin
+import Amazonka.Chime.DeleteAppInstanceStreamingConfigurations
+import Amazonka.Chime.DeleteAppInstanceUser
+import Amazonka.Chime.DeleteAttendee
+import Amazonka.Chime.DeleteChannel
+import Amazonka.Chime.DeleteChannelBan
+import Amazonka.Chime.DeleteChannelMembership
+import Amazonka.Chime.DeleteChannelMessage
+import Amazonka.Chime.DeleteChannelModerator
+import Amazonka.Chime.DeleteEventsConfiguration
+import Amazonka.Chime.DeleteMediaCapturePipeline
+import Amazonka.Chime.DeleteMeeting
+import Amazonka.Chime.DeletePhoneNumber
+import Amazonka.Chime.DeleteProxySession
+import Amazonka.Chime.DeleteRoom
+import Amazonka.Chime.DeleteRoomMembership
+import Amazonka.Chime.DeleteSipMediaApplication
+import Amazonka.Chime.DeleteSipRule
+import Amazonka.Chime.DeleteVoiceConnector
+import Amazonka.Chime.DeleteVoiceConnectorEmergencyCallingConfiguration
+import Amazonka.Chime.DeleteVoiceConnectorGroup
+import Amazonka.Chime.DeleteVoiceConnectorOrigination
+import Amazonka.Chime.DeleteVoiceConnectorProxy
+import Amazonka.Chime.DeleteVoiceConnectorStreamingConfiguration
+import Amazonka.Chime.DeleteVoiceConnectorTermination
+import Amazonka.Chime.DeleteVoiceConnectorTerminationCredentials
+import Amazonka.Chime.DescribeAppInstance
+import Amazonka.Chime.DescribeAppInstanceAdmin
+import Amazonka.Chime.DescribeAppInstanceUser
+import Amazonka.Chime.DescribeChannel
+import Amazonka.Chime.DescribeChannelBan
+import Amazonka.Chime.DescribeChannelMembership
+import Amazonka.Chime.DescribeChannelMembershipForAppInstanceUser
+import Amazonka.Chime.DescribeChannelModeratedByAppInstanceUser
+import Amazonka.Chime.DescribeChannelModerator
+import Amazonka.Chime.DisassociatePhoneNumberFromUser
+import Amazonka.Chime.DisassociatePhoneNumbersFromVoiceConnector
+import Amazonka.Chime.DisassociatePhoneNumbersFromVoiceConnectorGroup
+import Amazonka.Chime.DisassociateSigninDelegateGroupsFromAccount
+import Amazonka.Chime.GetAccount
+import Amazonka.Chime.GetAccountSettings
+import Amazonka.Chime.GetAppInstanceRetentionSettings
+import Amazonka.Chime.GetAppInstanceStreamingConfigurations
+import Amazonka.Chime.GetAttendee
+import Amazonka.Chime.GetBot
+import Amazonka.Chime.GetChannelMessage
+import Amazonka.Chime.GetEventsConfiguration
+import Amazonka.Chime.GetGlobalSettings
+import Amazonka.Chime.GetMediaCapturePipeline
+import Amazonka.Chime.GetMeeting
+import Amazonka.Chime.GetMessagingSessionEndpoint
+import Amazonka.Chime.GetPhoneNumber
+import Amazonka.Chime.GetPhoneNumberOrder
+import Amazonka.Chime.GetPhoneNumberSettings
+import Amazonka.Chime.GetProxySession
+import Amazonka.Chime.GetRetentionSettings
+import Amazonka.Chime.GetRoom
+import Amazonka.Chime.GetSipMediaApplication
+import Amazonka.Chime.GetSipMediaApplicationLoggingConfiguration
+import Amazonka.Chime.GetSipRule
+import Amazonka.Chime.GetUser
+import Amazonka.Chime.GetUserSettings
+import Amazonka.Chime.GetVoiceConnector
+import Amazonka.Chime.GetVoiceConnectorEmergencyCallingConfiguration
+import Amazonka.Chime.GetVoiceConnectorGroup
+import Amazonka.Chime.GetVoiceConnectorLoggingConfiguration
+import Amazonka.Chime.GetVoiceConnectorOrigination
+import Amazonka.Chime.GetVoiceConnectorProxy
+import Amazonka.Chime.GetVoiceConnectorStreamingConfiguration
+import Amazonka.Chime.GetVoiceConnectorTermination
+import Amazonka.Chime.GetVoiceConnectorTerminationHealth
+import Amazonka.Chime.InviteUsers
+import Amazonka.Chime.Lens
+import Amazonka.Chime.ListAccounts
+import Amazonka.Chime.ListAppInstanceAdmins
+import Amazonka.Chime.ListAppInstanceUsers
+import Amazonka.Chime.ListAppInstances
+import Amazonka.Chime.ListAttendeeTags
+import Amazonka.Chime.ListAttendees
+import Amazonka.Chime.ListBots
+import Amazonka.Chime.ListChannelBans
+import Amazonka.Chime.ListChannelMemberships
+import Amazonka.Chime.ListChannelMembershipsForAppInstanceUser
+import Amazonka.Chime.ListChannelMessages
+import Amazonka.Chime.ListChannelModerators
+import Amazonka.Chime.ListChannels
+import Amazonka.Chime.ListChannelsModeratedByAppInstanceUser
+import Amazonka.Chime.ListMediaCapturePipelines
+import Amazonka.Chime.ListMeetingTags
+import Amazonka.Chime.ListMeetings
+import Amazonka.Chime.ListPhoneNumberOrders
+import Amazonka.Chime.ListPhoneNumbers
+import Amazonka.Chime.ListProxySessions
+import Amazonka.Chime.ListRoomMemberships
+import Amazonka.Chime.ListRooms
+import Amazonka.Chime.ListSipMediaApplications
+import Amazonka.Chime.ListSipRules
+import Amazonka.Chime.ListSupportedPhoneNumberCountries
+import Amazonka.Chime.ListTagsForResource
+import Amazonka.Chime.ListUsers
+import Amazonka.Chime.ListVoiceConnectorGroups
+import Amazonka.Chime.ListVoiceConnectorTerminationCredentials
+import Amazonka.Chime.ListVoiceConnectors
+import Amazonka.Chime.LogoutUser
+import Amazonka.Chime.PutAppInstanceRetentionSettings
+import Amazonka.Chime.PutAppInstanceStreamingConfigurations
+import Amazonka.Chime.PutEventsConfiguration
+import Amazonka.Chime.PutRetentionSettings
+import Amazonka.Chime.PutSipMediaApplicationLoggingConfiguration
+import Amazonka.Chime.PutVoiceConnectorEmergencyCallingConfiguration
+import Amazonka.Chime.PutVoiceConnectorLoggingConfiguration
+import Amazonka.Chime.PutVoiceConnectorOrigination
+import Amazonka.Chime.PutVoiceConnectorProxy
+import Amazonka.Chime.PutVoiceConnectorStreamingConfiguration
+import Amazonka.Chime.PutVoiceConnectorTermination
+import Amazonka.Chime.PutVoiceConnectorTerminationCredentials
+import Amazonka.Chime.RedactChannelMessage
+import Amazonka.Chime.RedactConversationMessage
+import Amazonka.Chime.RedactRoomMessage
+import Amazonka.Chime.RegenerateSecurityToken
+import Amazonka.Chime.ResetPersonalPIN
+import Amazonka.Chime.RestorePhoneNumber
+import Amazonka.Chime.SearchAvailablePhoneNumbers
+import Amazonka.Chime.SendChannelMessage
+import Amazonka.Chime.StartMeetingTranscription
+import Amazonka.Chime.StopMeetingTranscription
+import Amazonka.Chime.TagAttendee
+import Amazonka.Chime.TagMeeting
+import Amazonka.Chime.TagResource
+import Amazonka.Chime.Types
+import Amazonka.Chime.UntagAttendee
+import Amazonka.Chime.UntagMeeting
+import Amazonka.Chime.UntagResource
+import Amazonka.Chime.UpdateAccount
+import Amazonka.Chime.UpdateAccountSettings
+import Amazonka.Chime.UpdateAppInstance
+import Amazonka.Chime.UpdateAppInstanceUser
+import Amazonka.Chime.UpdateBot
+import Amazonka.Chime.UpdateChannel
+import Amazonka.Chime.UpdateChannelMessage
+import Amazonka.Chime.UpdateChannelReadMarker
+import Amazonka.Chime.UpdateGlobalSettings
+import Amazonka.Chime.UpdatePhoneNumber
+import Amazonka.Chime.UpdatePhoneNumberSettings
+import Amazonka.Chime.UpdateProxySession
+import Amazonka.Chime.UpdateRoom
+import Amazonka.Chime.UpdateRoomMembership
+import Amazonka.Chime.UpdateSipMediaApplication
+import Amazonka.Chime.UpdateSipMediaApplicationCall
+import Amazonka.Chime.UpdateSipRule
+import Amazonka.Chime.UpdateUser
+import Amazonka.Chime.UpdateUserSettings
+import Amazonka.Chime.UpdateVoiceConnector
+import Amazonka.Chime.UpdateVoiceConnectorGroup
+import Amazonka.Chime.ValidateE911Address
+import Amazonka.Chime.Waiters
+
+-- $errors
+-- Error matchers are designed for use with the functions provided by
+-- <http://hackage.haskell.org/package/lens/docs/Control-Exception-Lens.html Control.Exception.Lens>.
+-- This allows catching (and rethrowing) service specific errors returned
+-- by 'Chime'.
+
+-- $operations
+-- Some AWS operations return results that are incomplete and require subsequent
+-- requests in order to obtain the entire result set. The process of sending
+-- subsequent requests to continue where a previous request left off is called
+-- pagination. For example, the 'ListObjects' operation of Amazon S3 returns up to
+-- 1000 objects at a time, and you must send subsequent requests with the
+-- appropriate Marker in order to retrieve the next page of results.
+--
+-- Operations that have an 'AWSPager' instance can transparently perform subsequent
+-- requests, correctly setting Markers and other request facets to iterate through
+-- the entire result set of a truncated API operation. Operations which support
+-- this have an additional note in the documentation.
+--
+-- Many operations have the ability to filter results on the server side. See the
+-- individual operation parameters for details.
+
+-- $waiters
+-- Waiters poll by repeatedly sending a request until some remote success condition
+-- configured by the 'Wait' specification is fulfilled. The 'Wait' specification
+-- determines how many attempts should be made, in addition to delay and retry strategies.
diff --git a/gen/Amazonka/Chime/AssociatePhoneNumberWithUser.hs b/gen/Amazonka/Chime/AssociatePhoneNumberWithUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/AssociatePhoneNumberWithUser.hs
@@ -0,0 +1,199 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.AssociatePhoneNumberWithUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Associates a phone number with the specified Amazon Chime user.
+module Amazonka.Chime.AssociatePhoneNumberWithUser
+  ( -- * Creating a Request
+    AssociatePhoneNumberWithUser (..),
+    newAssociatePhoneNumberWithUser,
+
+    -- * Request Lenses
+    associatePhoneNumberWithUser_accountId,
+    associatePhoneNumberWithUser_userId,
+    associatePhoneNumberWithUser_e164PhoneNumber,
+
+    -- * Destructuring the Response
+    AssociatePhoneNumberWithUserResponse (..),
+    newAssociatePhoneNumberWithUserResponse,
+
+    -- * Response Lenses
+    associatePhoneNumberWithUserResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newAssociatePhoneNumberWithUser' smart constructor.
+data AssociatePhoneNumberWithUser = AssociatePhoneNumberWithUser'
+  { -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The user ID.
+    userId :: Prelude.Text,
+    -- | The phone number, in E.164 format.
+    e164PhoneNumber :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociatePhoneNumberWithUser' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'associatePhoneNumberWithUser_accountId' - The Amazon Chime account ID.
+--
+-- 'userId', 'associatePhoneNumberWithUser_userId' - The user ID.
+--
+-- 'e164PhoneNumber', 'associatePhoneNumberWithUser_e164PhoneNumber' - The phone number, in E.164 format.
+newAssociatePhoneNumberWithUser ::
+  -- | 'accountId'
+  Prelude.Text ->
+  -- | 'userId'
+  Prelude.Text ->
+  -- | 'e164PhoneNumber'
+  Prelude.Text ->
+  AssociatePhoneNumberWithUser
+newAssociatePhoneNumberWithUser
+  pAccountId_
+  pUserId_
+  pE164PhoneNumber_ =
+    AssociatePhoneNumberWithUser'
+      { accountId =
+          pAccountId_,
+        userId = pUserId_,
+        e164PhoneNumber =
+          Data._Sensitive Lens.# pE164PhoneNumber_
+      }
+
+-- | The Amazon Chime account ID.
+associatePhoneNumberWithUser_accountId :: Lens.Lens' AssociatePhoneNumberWithUser Prelude.Text
+associatePhoneNumberWithUser_accountId = Lens.lens (\AssociatePhoneNumberWithUser' {accountId} -> accountId) (\s@AssociatePhoneNumberWithUser' {} a -> s {accountId = a} :: AssociatePhoneNumberWithUser)
+
+-- | The user ID.
+associatePhoneNumberWithUser_userId :: Lens.Lens' AssociatePhoneNumberWithUser Prelude.Text
+associatePhoneNumberWithUser_userId = Lens.lens (\AssociatePhoneNumberWithUser' {userId} -> userId) (\s@AssociatePhoneNumberWithUser' {} a -> s {userId = a} :: AssociatePhoneNumberWithUser)
+
+-- | The phone number, in E.164 format.
+associatePhoneNumberWithUser_e164PhoneNumber :: Lens.Lens' AssociatePhoneNumberWithUser Prelude.Text
+associatePhoneNumberWithUser_e164PhoneNumber = Lens.lens (\AssociatePhoneNumberWithUser' {e164PhoneNumber} -> e164PhoneNumber) (\s@AssociatePhoneNumberWithUser' {} a -> s {e164PhoneNumber = a} :: AssociatePhoneNumberWithUser) Prelude.. Data._Sensitive
+
+instance Core.AWSRequest AssociatePhoneNumberWithUser where
+  type
+    AWSResponse AssociatePhoneNumberWithUser =
+      AssociatePhoneNumberWithUserResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          AssociatePhoneNumberWithUserResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    AssociatePhoneNumberWithUser
+  where
+  hashWithSalt _salt AssociatePhoneNumberWithUser' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` userId
+      `Prelude.hashWithSalt` e164PhoneNumber
+
+instance Prelude.NFData AssociatePhoneNumberWithUser where
+  rnf AssociatePhoneNumberWithUser' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf userId
+      `Prelude.seq` Prelude.rnf e164PhoneNumber
+
+instance Data.ToHeaders AssociatePhoneNumberWithUser where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON AssociatePhoneNumberWithUser where
+  toJSON AssociatePhoneNumberWithUser' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("E164PhoneNumber" Data..= e164PhoneNumber)
+          ]
+      )
+
+instance Data.ToPath AssociatePhoneNumberWithUser where
+  toPath AssociatePhoneNumberWithUser' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS accountId,
+        "/users/",
+        Data.toBS userId
+      ]
+
+instance Data.ToQuery AssociatePhoneNumberWithUser where
+  toQuery =
+    Prelude.const
+      ( Prelude.mconcat
+          ["operation=associate-phone-number"]
+      )
+
+-- | /See:/ 'newAssociatePhoneNumberWithUserResponse' smart constructor.
+data AssociatePhoneNumberWithUserResponse = AssociatePhoneNumberWithUserResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociatePhoneNumberWithUserResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'associatePhoneNumberWithUserResponse_httpStatus' - The response's http status code.
+newAssociatePhoneNumberWithUserResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  AssociatePhoneNumberWithUserResponse
+newAssociatePhoneNumberWithUserResponse pHttpStatus_ =
+  AssociatePhoneNumberWithUserResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+associatePhoneNumberWithUserResponse_httpStatus :: Lens.Lens' AssociatePhoneNumberWithUserResponse Prelude.Int
+associatePhoneNumberWithUserResponse_httpStatus = Lens.lens (\AssociatePhoneNumberWithUserResponse' {httpStatus} -> httpStatus) (\s@AssociatePhoneNumberWithUserResponse' {} a -> s {httpStatus = a} :: AssociatePhoneNumberWithUserResponse)
+
+instance
+  Prelude.NFData
+    AssociatePhoneNumberWithUserResponse
+  where
+  rnf AssociatePhoneNumberWithUserResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/AssociatePhoneNumbersWithVoiceConnector.hs b/gen/Amazonka/Chime/AssociatePhoneNumbersWithVoiceConnector.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/AssociatePhoneNumbersWithVoiceConnector.hs
@@ -0,0 +1,245 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.AssociatePhoneNumbersWithVoiceConnector
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Associates phone numbers with the specified Amazon Chime Voice
+-- Connector.
+module Amazonka.Chime.AssociatePhoneNumbersWithVoiceConnector
+  ( -- * Creating a Request
+    AssociatePhoneNumbersWithVoiceConnector (..),
+    newAssociatePhoneNumbersWithVoiceConnector,
+
+    -- * Request Lenses
+    associatePhoneNumbersWithVoiceConnector_forceAssociate,
+    associatePhoneNumbersWithVoiceConnector_voiceConnectorId,
+    associatePhoneNumbersWithVoiceConnector_e164PhoneNumbers,
+
+    -- * Destructuring the Response
+    AssociatePhoneNumbersWithVoiceConnectorResponse (..),
+    newAssociatePhoneNumbersWithVoiceConnectorResponse,
+
+    -- * Response Lenses
+    associatePhoneNumbersWithVoiceConnectorResponse_phoneNumberErrors,
+    associatePhoneNumbersWithVoiceConnectorResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newAssociatePhoneNumbersWithVoiceConnector' smart constructor.
+data AssociatePhoneNumbersWithVoiceConnector = AssociatePhoneNumbersWithVoiceConnector'
+  { -- | If true, associates the provided phone numbers with the provided Amazon
+    -- Chime Voice Connector and removes any previously existing associations.
+    -- If false, does not associate any phone numbers that have previously
+    -- existing associations.
+    forceAssociate :: Prelude.Maybe Prelude.Bool,
+    -- | The Amazon Chime Voice Connector ID.
+    voiceConnectorId :: Prelude.Text,
+    -- | List of phone numbers, in E.164 format.
+    e164PhoneNumbers :: [Data.Sensitive Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociatePhoneNumbersWithVoiceConnector' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'forceAssociate', 'associatePhoneNumbersWithVoiceConnector_forceAssociate' - If true, associates the provided phone numbers with the provided Amazon
+-- Chime Voice Connector and removes any previously existing associations.
+-- If false, does not associate any phone numbers that have previously
+-- existing associations.
+--
+-- 'voiceConnectorId', 'associatePhoneNumbersWithVoiceConnector_voiceConnectorId' - The Amazon Chime Voice Connector ID.
+--
+-- 'e164PhoneNumbers', 'associatePhoneNumbersWithVoiceConnector_e164PhoneNumbers' - List of phone numbers, in E.164 format.
+newAssociatePhoneNumbersWithVoiceConnector ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  AssociatePhoneNumbersWithVoiceConnector
+newAssociatePhoneNumbersWithVoiceConnector
+  pVoiceConnectorId_ =
+    AssociatePhoneNumbersWithVoiceConnector'
+      { forceAssociate =
+          Prelude.Nothing,
+        voiceConnectorId =
+          pVoiceConnectorId_,
+        e164PhoneNumbers = Prelude.mempty
+      }
+
+-- | If true, associates the provided phone numbers with the provided Amazon
+-- Chime Voice Connector and removes any previously existing associations.
+-- If false, does not associate any phone numbers that have previously
+-- existing associations.
+associatePhoneNumbersWithVoiceConnector_forceAssociate :: Lens.Lens' AssociatePhoneNumbersWithVoiceConnector (Prelude.Maybe Prelude.Bool)
+associatePhoneNumbersWithVoiceConnector_forceAssociate = Lens.lens (\AssociatePhoneNumbersWithVoiceConnector' {forceAssociate} -> forceAssociate) (\s@AssociatePhoneNumbersWithVoiceConnector' {} a -> s {forceAssociate = a} :: AssociatePhoneNumbersWithVoiceConnector)
+
+-- | The Amazon Chime Voice Connector ID.
+associatePhoneNumbersWithVoiceConnector_voiceConnectorId :: Lens.Lens' AssociatePhoneNumbersWithVoiceConnector Prelude.Text
+associatePhoneNumbersWithVoiceConnector_voiceConnectorId = Lens.lens (\AssociatePhoneNumbersWithVoiceConnector' {voiceConnectorId} -> voiceConnectorId) (\s@AssociatePhoneNumbersWithVoiceConnector' {} a -> s {voiceConnectorId = a} :: AssociatePhoneNumbersWithVoiceConnector)
+
+-- | List of phone numbers, in E.164 format.
+associatePhoneNumbersWithVoiceConnector_e164PhoneNumbers :: Lens.Lens' AssociatePhoneNumbersWithVoiceConnector [Prelude.Text]
+associatePhoneNumbersWithVoiceConnector_e164PhoneNumbers = Lens.lens (\AssociatePhoneNumbersWithVoiceConnector' {e164PhoneNumbers} -> e164PhoneNumbers) (\s@AssociatePhoneNumbersWithVoiceConnector' {} a -> s {e164PhoneNumbers = a} :: AssociatePhoneNumbersWithVoiceConnector) Prelude.. Lens.coerced
+
+instance
+  Core.AWSRequest
+    AssociatePhoneNumbersWithVoiceConnector
+  where
+  type
+    AWSResponse
+      AssociatePhoneNumbersWithVoiceConnector =
+      AssociatePhoneNumbersWithVoiceConnectorResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          AssociatePhoneNumbersWithVoiceConnectorResponse'
+            Prelude.<$> ( x
+                            Data..?> "PhoneNumberErrors"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    AssociatePhoneNumbersWithVoiceConnector
+  where
+  hashWithSalt
+    _salt
+    AssociatePhoneNumbersWithVoiceConnector' {..} =
+      _salt
+        `Prelude.hashWithSalt` forceAssociate
+        `Prelude.hashWithSalt` voiceConnectorId
+        `Prelude.hashWithSalt` e164PhoneNumbers
+
+instance
+  Prelude.NFData
+    AssociatePhoneNumbersWithVoiceConnector
+  where
+  rnf AssociatePhoneNumbersWithVoiceConnector' {..} =
+    Prelude.rnf forceAssociate
+      `Prelude.seq` Prelude.rnf voiceConnectorId
+      `Prelude.seq` Prelude.rnf e164PhoneNumbers
+
+instance
+  Data.ToHeaders
+    AssociatePhoneNumbersWithVoiceConnector
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToJSON
+    AssociatePhoneNumbersWithVoiceConnector
+  where
+  toJSON AssociatePhoneNumbersWithVoiceConnector' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ForceAssociate" Data..=)
+              Prelude.<$> forceAssociate,
+            Prelude.Just
+              ("E164PhoneNumbers" Data..= e164PhoneNumbers)
+          ]
+      )
+
+instance
+  Data.ToPath
+    AssociatePhoneNumbersWithVoiceConnector
+  where
+  toPath AssociatePhoneNumbersWithVoiceConnector' {..} =
+    Prelude.mconcat
+      ["/voice-connectors/", Data.toBS voiceConnectorId]
+
+instance
+  Data.ToQuery
+    AssociatePhoneNumbersWithVoiceConnector
+  where
+  toQuery =
+    Prelude.const
+      ( Prelude.mconcat
+          ["operation=associate-phone-numbers"]
+      )
+
+-- | /See:/ 'newAssociatePhoneNumbersWithVoiceConnectorResponse' smart constructor.
+data AssociatePhoneNumbersWithVoiceConnectorResponse = AssociatePhoneNumbersWithVoiceConnectorResponse'
+  { -- | If the action fails for one or more of the phone numbers in the request,
+    -- a list of the phone numbers is returned, along with error codes and
+    -- error messages.
+    phoneNumberErrors :: Prelude.Maybe [PhoneNumberError],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociatePhoneNumbersWithVoiceConnectorResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'phoneNumberErrors', 'associatePhoneNumbersWithVoiceConnectorResponse_phoneNumberErrors' - If the action fails for one or more of the phone numbers in the request,
+-- a list of the phone numbers is returned, along with error codes and
+-- error messages.
+--
+-- 'httpStatus', 'associatePhoneNumbersWithVoiceConnectorResponse_httpStatus' - The response's http status code.
+newAssociatePhoneNumbersWithVoiceConnectorResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  AssociatePhoneNumbersWithVoiceConnectorResponse
+newAssociatePhoneNumbersWithVoiceConnectorResponse
+  pHttpStatus_ =
+    AssociatePhoneNumbersWithVoiceConnectorResponse'
+      { phoneNumberErrors =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | If the action fails for one or more of the phone numbers in the request,
+-- a list of the phone numbers is returned, along with error codes and
+-- error messages.
+associatePhoneNumbersWithVoiceConnectorResponse_phoneNumberErrors :: Lens.Lens' AssociatePhoneNumbersWithVoiceConnectorResponse (Prelude.Maybe [PhoneNumberError])
+associatePhoneNumbersWithVoiceConnectorResponse_phoneNumberErrors = Lens.lens (\AssociatePhoneNumbersWithVoiceConnectorResponse' {phoneNumberErrors} -> phoneNumberErrors) (\s@AssociatePhoneNumbersWithVoiceConnectorResponse' {} a -> s {phoneNumberErrors = a} :: AssociatePhoneNumbersWithVoiceConnectorResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+associatePhoneNumbersWithVoiceConnectorResponse_httpStatus :: Lens.Lens' AssociatePhoneNumbersWithVoiceConnectorResponse Prelude.Int
+associatePhoneNumbersWithVoiceConnectorResponse_httpStatus = Lens.lens (\AssociatePhoneNumbersWithVoiceConnectorResponse' {httpStatus} -> httpStatus) (\s@AssociatePhoneNumbersWithVoiceConnectorResponse' {} a -> s {httpStatus = a} :: AssociatePhoneNumbersWithVoiceConnectorResponse)
+
+instance
+  Prelude.NFData
+    AssociatePhoneNumbersWithVoiceConnectorResponse
+  where
+  rnf
+    AssociatePhoneNumbersWithVoiceConnectorResponse' {..} =
+      Prelude.rnf phoneNumberErrors
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/AssociatePhoneNumbersWithVoiceConnectorGroup.hs b/gen/Amazonka/Chime/AssociatePhoneNumbersWithVoiceConnectorGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/AssociatePhoneNumbersWithVoiceConnectorGroup.hs
@@ -0,0 +1,251 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.AssociatePhoneNumbersWithVoiceConnectorGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Associates phone numbers with the specified Amazon Chime Voice Connector
+-- group.
+module Amazonka.Chime.AssociatePhoneNumbersWithVoiceConnectorGroup
+  ( -- * Creating a Request
+    AssociatePhoneNumbersWithVoiceConnectorGroup (..),
+    newAssociatePhoneNumbersWithVoiceConnectorGroup,
+
+    -- * Request Lenses
+    associatePhoneNumbersWithVoiceConnectorGroup_forceAssociate,
+    associatePhoneNumbersWithVoiceConnectorGroup_voiceConnectorGroupId,
+    associatePhoneNumbersWithVoiceConnectorGroup_e164PhoneNumbers,
+
+    -- * Destructuring the Response
+    AssociatePhoneNumbersWithVoiceConnectorGroupResponse (..),
+    newAssociatePhoneNumbersWithVoiceConnectorGroupResponse,
+
+    -- * Response Lenses
+    associatePhoneNumbersWithVoiceConnectorGroupResponse_phoneNumberErrors,
+    associatePhoneNumbersWithVoiceConnectorGroupResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newAssociatePhoneNumbersWithVoiceConnectorGroup' smart constructor.
+data AssociatePhoneNumbersWithVoiceConnectorGroup = AssociatePhoneNumbersWithVoiceConnectorGroup'
+  { -- | If true, associates the provided phone numbers with the provided Amazon
+    -- Chime Voice Connector Group and removes any previously existing
+    -- associations. If false, does not associate any phone numbers that have
+    -- previously existing associations.
+    forceAssociate :: Prelude.Maybe Prelude.Bool,
+    -- | The Amazon Chime Voice Connector group ID.
+    voiceConnectorGroupId :: Prelude.Text,
+    -- | List of phone numbers, in E.164 format.
+    e164PhoneNumbers :: [Data.Sensitive Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociatePhoneNumbersWithVoiceConnectorGroup' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'forceAssociate', 'associatePhoneNumbersWithVoiceConnectorGroup_forceAssociate' - If true, associates the provided phone numbers with the provided Amazon
+-- Chime Voice Connector Group and removes any previously existing
+-- associations. If false, does not associate any phone numbers that have
+-- previously existing associations.
+--
+-- 'voiceConnectorGroupId', 'associatePhoneNumbersWithVoiceConnectorGroup_voiceConnectorGroupId' - The Amazon Chime Voice Connector group ID.
+--
+-- 'e164PhoneNumbers', 'associatePhoneNumbersWithVoiceConnectorGroup_e164PhoneNumbers' - List of phone numbers, in E.164 format.
+newAssociatePhoneNumbersWithVoiceConnectorGroup ::
+  -- | 'voiceConnectorGroupId'
+  Prelude.Text ->
+  AssociatePhoneNumbersWithVoiceConnectorGroup
+newAssociatePhoneNumbersWithVoiceConnectorGroup
+  pVoiceConnectorGroupId_ =
+    AssociatePhoneNumbersWithVoiceConnectorGroup'
+      { forceAssociate =
+          Prelude.Nothing,
+        voiceConnectorGroupId =
+          pVoiceConnectorGroupId_,
+        e164PhoneNumbers =
+          Prelude.mempty
+      }
+
+-- | If true, associates the provided phone numbers with the provided Amazon
+-- Chime Voice Connector Group and removes any previously existing
+-- associations. If false, does not associate any phone numbers that have
+-- previously existing associations.
+associatePhoneNumbersWithVoiceConnectorGroup_forceAssociate :: Lens.Lens' AssociatePhoneNumbersWithVoiceConnectorGroup (Prelude.Maybe Prelude.Bool)
+associatePhoneNumbersWithVoiceConnectorGroup_forceAssociate = Lens.lens (\AssociatePhoneNumbersWithVoiceConnectorGroup' {forceAssociate} -> forceAssociate) (\s@AssociatePhoneNumbersWithVoiceConnectorGroup' {} a -> s {forceAssociate = a} :: AssociatePhoneNumbersWithVoiceConnectorGroup)
+
+-- | The Amazon Chime Voice Connector group ID.
+associatePhoneNumbersWithVoiceConnectorGroup_voiceConnectorGroupId :: Lens.Lens' AssociatePhoneNumbersWithVoiceConnectorGroup Prelude.Text
+associatePhoneNumbersWithVoiceConnectorGroup_voiceConnectorGroupId = Lens.lens (\AssociatePhoneNumbersWithVoiceConnectorGroup' {voiceConnectorGroupId} -> voiceConnectorGroupId) (\s@AssociatePhoneNumbersWithVoiceConnectorGroup' {} a -> s {voiceConnectorGroupId = a} :: AssociatePhoneNumbersWithVoiceConnectorGroup)
+
+-- | List of phone numbers, in E.164 format.
+associatePhoneNumbersWithVoiceConnectorGroup_e164PhoneNumbers :: Lens.Lens' AssociatePhoneNumbersWithVoiceConnectorGroup [Prelude.Text]
+associatePhoneNumbersWithVoiceConnectorGroup_e164PhoneNumbers = Lens.lens (\AssociatePhoneNumbersWithVoiceConnectorGroup' {e164PhoneNumbers} -> e164PhoneNumbers) (\s@AssociatePhoneNumbersWithVoiceConnectorGroup' {} a -> s {e164PhoneNumbers = a} :: AssociatePhoneNumbersWithVoiceConnectorGroup) Prelude.. Lens.coerced
+
+instance
+  Core.AWSRequest
+    AssociatePhoneNumbersWithVoiceConnectorGroup
+  where
+  type
+    AWSResponse
+      AssociatePhoneNumbersWithVoiceConnectorGroup =
+      AssociatePhoneNumbersWithVoiceConnectorGroupResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          AssociatePhoneNumbersWithVoiceConnectorGroupResponse'
+            Prelude.<$> ( x
+                            Data..?> "PhoneNumberErrors"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    AssociatePhoneNumbersWithVoiceConnectorGroup
+  where
+  hashWithSalt
+    _salt
+    AssociatePhoneNumbersWithVoiceConnectorGroup' {..} =
+      _salt
+        `Prelude.hashWithSalt` forceAssociate
+        `Prelude.hashWithSalt` voiceConnectorGroupId
+        `Prelude.hashWithSalt` e164PhoneNumbers
+
+instance
+  Prelude.NFData
+    AssociatePhoneNumbersWithVoiceConnectorGroup
+  where
+  rnf AssociatePhoneNumbersWithVoiceConnectorGroup' {..} =
+    Prelude.rnf forceAssociate
+      `Prelude.seq` Prelude.rnf voiceConnectorGroupId
+      `Prelude.seq` Prelude.rnf e164PhoneNumbers
+
+instance
+  Data.ToHeaders
+    AssociatePhoneNumbersWithVoiceConnectorGroup
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToJSON
+    AssociatePhoneNumbersWithVoiceConnectorGroup
+  where
+  toJSON
+    AssociatePhoneNumbersWithVoiceConnectorGroup' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ ("ForceAssociate" Data..=)
+                Prelude.<$> forceAssociate,
+              Prelude.Just
+                ("E164PhoneNumbers" Data..= e164PhoneNumbers)
+            ]
+        )
+
+instance
+  Data.ToPath
+    AssociatePhoneNumbersWithVoiceConnectorGroup
+  where
+  toPath
+    AssociatePhoneNumbersWithVoiceConnectorGroup' {..} =
+      Prelude.mconcat
+        [ "/voice-connector-groups/",
+          Data.toBS voiceConnectorGroupId
+        ]
+
+instance
+  Data.ToQuery
+    AssociatePhoneNumbersWithVoiceConnectorGroup
+  where
+  toQuery =
+    Prelude.const
+      ( Prelude.mconcat
+          ["operation=associate-phone-numbers"]
+      )
+
+-- | /See:/ 'newAssociatePhoneNumbersWithVoiceConnectorGroupResponse' smart constructor.
+data AssociatePhoneNumbersWithVoiceConnectorGroupResponse = AssociatePhoneNumbersWithVoiceConnectorGroupResponse'
+  { -- | If the action fails for one or more of the phone numbers in the request,
+    -- a list of the phone numbers is returned, along with error codes and
+    -- error messages.
+    phoneNumberErrors :: Prelude.Maybe [PhoneNumberError],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociatePhoneNumbersWithVoiceConnectorGroupResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'phoneNumberErrors', 'associatePhoneNumbersWithVoiceConnectorGroupResponse_phoneNumberErrors' - If the action fails for one or more of the phone numbers in the request,
+-- a list of the phone numbers is returned, along with error codes and
+-- error messages.
+--
+-- 'httpStatus', 'associatePhoneNumbersWithVoiceConnectorGroupResponse_httpStatus' - The response's http status code.
+newAssociatePhoneNumbersWithVoiceConnectorGroupResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  AssociatePhoneNumbersWithVoiceConnectorGroupResponse
+newAssociatePhoneNumbersWithVoiceConnectorGroupResponse
+  pHttpStatus_ =
+    AssociatePhoneNumbersWithVoiceConnectorGroupResponse'
+      { phoneNumberErrors =
+          Prelude.Nothing,
+        httpStatus =
+          pHttpStatus_
+      }
+
+-- | If the action fails for one or more of the phone numbers in the request,
+-- a list of the phone numbers is returned, along with error codes and
+-- error messages.
+associatePhoneNumbersWithVoiceConnectorGroupResponse_phoneNumberErrors :: Lens.Lens' AssociatePhoneNumbersWithVoiceConnectorGroupResponse (Prelude.Maybe [PhoneNumberError])
+associatePhoneNumbersWithVoiceConnectorGroupResponse_phoneNumberErrors = Lens.lens (\AssociatePhoneNumbersWithVoiceConnectorGroupResponse' {phoneNumberErrors} -> phoneNumberErrors) (\s@AssociatePhoneNumbersWithVoiceConnectorGroupResponse' {} a -> s {phoneNumberErrors = a} :: AssociatePhoneNumbersWithVoiceConnectorGroupResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+associatePhoneNumbersWithVoiceConnectorGroupResponse_httpStatus :: Lens.Lens' AssociatePhoneNumbersWithVoiceConnectorGroupResponse Prelude.Int
+associatePhoneNumbersWithVoiceConnectorGroupResponse_httpStatus = Lens.lens (\AssociatePhoneNumbersWithVoiceConnectorGroupResponse' {httpStatus} -> httpStatus) (\s@AssociatePhoneNumbersWithVoiceConnectorGroupResponse' {} a -> s {httpStatus = a} :: AssociatePhoneNumbersWithVoiceConnectorGroupResponse)
+
+instance
+  Prelude.NFData
+    AssociatePhoneNumbersWithVoiceConnectorGroupResponse
+  where
+  rnf
+    AssociatePhoneNumbersWithVoiceConnectorGroupResponse' {..} =
+      Prelude.rnf phoneNumberErrors
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/AssociateSigninDelegateGroupsWithAccount.hs b/gen/Amazonka/Chime/AssociateSigninDelegateGroupsWithAccount.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/AssociateSigninDelegateGroupsWithAccount.hs
@@ -0,0 +1,202 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.AssociateSigninDelegateGroupsWithAccount
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Associates the specified sign-in delegate groups with the specified
+-- Amazon Chime account.
+module Amazonka.Chime.AssociateSigninDelegateGroupsWithAccount
+  ( -- * Creating a Request
+    AssociateSigninDelegateGroupsWithAccount (..),
+    newAssociateSigninDelegateGroupsWithAccount,
+
+    -- * Request Lenses
+    associateSigninDelegateGroupsWithAccount_accountId,
+    associateSigninDelegateGroupsWithAccount_signinDelegateGroups,
+
+    -- * Destructuring the Response
+    AssociateSigninDelegateGroupsWithAccountResponse (..),
+    newAssociateSigninDelegateGroupsWithAccountResponse,
+
+    -- * Response Lenses
+    associateSigninDelegateGroupsWithAccountResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newAssociateSigninDelegateGroupsWithAccount' smart constructor.
+data AssociateSigninDelegateGroupsWithAccount = AssociateSigninDelegateGroupsWithAccount'
+  { -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The sign-in delegate groups.
+    signinDelegateGroups :: [SigninDelegateGroup]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateSigninDelegateGroupsWithAccount' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'associateSigninDelegateGroupsWithAccount_accountId' - The Amazon Chime account ID.
+--
+-- 'signinDelegateGroups', 'associateSigninDelegateGroupsWithAccount_signinDelegateGroups' - The sign-in delegate groups.
+newAssociateSigninDelegateGroupsWithAccount ::
+  -- | 'accountId'
+  Prelude.Text ->
+  AssociateSigninDelegateGroupsWithAccount
+newAssociateSigninDelegateGroupsWithAccount
+  pAccountId_ =
+    AssociateSigninDelegateGroupsWithAccount'
+      { accountId =
+          pAccountId_,
+        signinDelegateGroups =
+          Prelude.mempty
+      }
+
+-- | The Amazon Chime account ID.
+associateSigninDelegateGroupsWithAccount_accountId :: Lens.Lens' AssociateSigninDelegateGroupsWithAccount Prelude.Text
+associateSigninDelegateGroupsWithAccount_accountId = Lens.lens (\AssociateSigninDelegateGroupsWithAccount' {accountId} -> accountId) (\s@AssociateSigninDelegateGroupsWithAccount' {} a -> s {accountId = a} :: AssociateSigninDelegateGroupsWithAccount)
+
+-- | The sign-in delegate groups.
+associateSigninDelegateGroupsWithAccount_signinDelegateGroups :: Lens.Lens' AssociateSigninDelegateGroupsWithAccount [SigninDelegateGroup]
+associateSigninDelegateGroupsWithAccount_signinDelegateGroups = Lens.lens (\AssociateSigninDelegateGroupsWithAccount' {signinDelegateGroups} -> signinDelegateGroups) (\s@AssociateSigninDelegateGroupsWithAccount' {} a -> s {signinDelegateGroups = a} :: AssociateSigninDelegateGroupsWithAccount) Prelude.. Lens.coerced
+
+instance
+  Core.AWSRequest
+    AssociateSigninDelegateGroupsWithAccount
+  where
+  type
+    AWSResponse
+      AssociateSigninDelegateGroupsWithAccount =
+      AssociateSigninDelegateGroupsWithAccountResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          AssociateSigninDelegateGroupsWithAccountResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    AssociateSigninDelegateGroupsWithAccount
+  where
+  hashWithSalt
+    _salt
+    AssociateSigninDelegateGroupsWithAccount' {..} =
+      _salt
+        `Prelude.hashWithSalt` accountId
+        `Prelude.hashWithSalt` signinDelegateGroups
+
+instance
+  Prelude.NFData
+    AssociateSigninDelegateGroupsWithAccount
+  where
+  rnf AssociateSigninDelegateGroupsWithAccount' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf signinDelegateGroups
+
+instance
+  Data.ToHeaders
+    AssociateSigninDelegateGroupsWithAccount
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToJSON
+    AssociateSigninDelegateGroupsWithAccount
+  where
+  toJSON AssociateSigninDelegateGroupsWithAccount' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "SigninDelegateGroups"
+                  Data..= signinDelegateGroups
+              )
+          ]
+      )
+
+instance
+  Data.ToPath
+    AssociateSigninDelegateGroupsWithAccount
+  where
+  toPath AssociateSigninDelegateGroupsWithAccount' {..} =
+    Prelude.mconcat ["/accounts/", Data.toBS accountId]
+
+instance
+  Data.ToQuery
+    AssociateSigninDelegateGroupsWithAccount
+  where
+  toQuery =
+    Prelude.const
+      ( Prelude.mconcat
+          ["operation=associate-signin-delegate-groups"]
+      )
+
+-- | /See:/ 'newAssociateSigninDelegateGroupsWithAccountResponse' smart constructor.
+data AssociateSigninDelegateGroupsWithAccountResponse = AssociateSigninDelegateGroupsWithAccountResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateSigninDelegateGroupsWithAccountResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'associateSigninDelegateGroupsWithAccountResponse_httpStatus' - The response's http status code.
+newAssociateSigninDelegateGroupsWithAccountResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  AssociateSigninDelegateGroupsWithAccountResponse
+newAssociateSigninDelegateGroupsWithAccountResponse
+  pHttpStatus_ =
+    AssociateSigninDelegateGroupsWithAccountResponse'
+      { httpStatus =
+          pHttpStatus_
+      }
+
+-- | The response's http status code.
+associateSigninDelegateGroupsWithAccountResponse_httpStatus :: Lens.Lens' AssociateSigninDelegateGroupsWithAccountResponse Prelude.Int
+associateSigninDelegateGroupsWithAccountResponse_httpStatus = Lens.lens (\AssociateSigninDelegateGroupsWithAccountResponse' {httpStatus} -> httpStatus) (\s@AssociateSigninDelegateGroupsWithAccountResponse' {} a -> s {httpStatus = a} :: AssociateSigninDelegateGroupsWithAccountResponse)
+
+instance
+  Prelude.NFData
+    AssociateSigninDelegateGroupsWithAccountResponse
+  where
+  rnf
+    AssociateSigninDelegateGroupsWithAccountResponse' {..} =
+      Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/BatchCreateAttendee.hs b/gen/Amazonka/Chime/BatchCreateAttendee.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/BatchCreateAttendee.hs
@@ -0,0 +1,197 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.BatchCreateAttendee
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates up to 100 new attendees for an active Amazon Chime SDK meeting.
+-- For more information about the Amazon Chime SDK, see
+-- <https://docs.aws.amazon.com/chime/latest/dg/meetings-sdk.html Using the Amazon Chime SDK>
+-- in the /Amazon Chime Developer Guide/.
+module Amazonka.Chime.BatchCreateAttendee
+  ( -- * Creating a Request
+    BatchCreateAttendee (..),
+    newBatchCreateAttendee,
+
+    -- * Request Lenses
+    batchCreateAttendee_meetingId,
+    batchCreateAttendee_attendees,
+
+    -- * Destructuring the Response
+    BatchCreateAttendeeResponse (..),
+    newBatchCreateAttendeeResponse,
+
+    -- * Response Lenses
+    batchCreateAttendeeResponse_attendees,
+    batchCreateAttendeeResponse_errors,
+    batchCreateAttendeeResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newBatchCreateAttendee' smart constructor.
+data BatchCreateAttendee = BatchCreateAttendee'
+  { -- | The Amazon Chime SDK meeting ID.
+    meetingId :: Prelude.Text,
+    -- | The request containing the attendees to create.
+    attendees :: [CreateAttendeeRequestItem]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchCreateAttendee' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'meetingId', 'batchCreateAttendee_meetingId' - The Amazon Chime SDK meeting ID.
+--
+-- 'attendees', 'batchCreateAttendee_attendees' - The request containing the attendees to create.
+newBatchCreateAttendee ::
+  -- | 'meetingId'
+  Prelude.Text ->
+  BatchCreateAttendee
+newBatchCreateAttendee pMeetingId_ =
+  BatchCreateAttendee'
+    { meetingId = pMeetingId_,
+      attendees = Prelude.mempty
+    }
+
+-- | The Amazon Chime SDK meeting ID.
+batchCreateAttendee_meetingId :: Lens.Lens' BatchCreateAttendee Prelude.Text
+batchCreateAttendee_meetingId = Lens.lens (\BatchCreateAttendee' {meetingId} -> meetingId) (\s@BatchCreateAttendee' {} a -> s {meetingId = a} :: BatchCreateAttendee)
+
+-- | The request containing the attendees to create.
+batchCreateAttendee_attendees :: Lens.Lens' BatchCreateAttendee [CreateAttendeeRequestItem]
+batchCreateAttendee_attendees = Lens.lens (\BatchCreateAttendee' {attendees} -> attendees) (\s@BatchCreateAttendee' {} a -> s {attendees = a} :: BatchCreateAttendee) Prelude.. Lens.coerced
+
+instance Core.AWSRequest BatchCreateAttendee where
+  type
+    AWSResponse BatchCreateAttendee =
+      BatchCreateAttendeeResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          BatchCreateAttendeeResponse'
+            Prelude.<$> (x Data..?> "Attendees" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "Errors" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable BatchCreateAttendee where
+  hashWithSalt _salt BatchCreateAttendee' {..} =
+    _salt
+      `Prelude.hashWithSalt` meetingId
+      `Prelude.hashWithSalt` attendees
+
+instance Prelude.NFData BatchCreateAttendee where
+  rnf BatchCreateAttendee' {..} =
+    Prelude.rnf meetingId
+      `Prelude.seq` Prelude.rnf attendees
+
+instance Data.ToHeaders BatchCreateAttendee where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON BatchCreateAttendee where
+  toJSON BatchCreateAttendee' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Attendees" Data..= attendees)]
+      )
+
+instance Data.ToPath BatchCreateAttendee where
+  toPath BatchCreateAttendee' {..} =
+    Prelude.mconcat
+      ["/meetings/", Data.toBS meetingId, "/attendees"]
+
+instance Data.ToQuery BatchCreateAttendee where
+  toQuery =
+    Prelude.const
+      (Prelude.mconcat ["operation=batch-create"])
+
+-- | /See:/ 'newBatchCreateAttendeeResponse' smart constructor.
+data BatchCreateAttendeeResponse = BatchCreateAttendeeResponse'
+  { -- | The attendee information, including attendees IDs and join tokens.
+    attendees :: Prelude.Maybe [Attendee],
+    -- | If the action fails for one or more of the attendees in the request, a
+    -- list of the attendees is returned, along with error codes and error
+    -- messages.
+    errors :: Prelude.Maybe [CreateAttendeeError],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchCreateAttendeeResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'attendees', 'batchCreateAttendeeResponse_attendees' - The attendee information, including attendees IDs and join tokens.
+--
+-- 'errors', 'batchCreateAttendeeResponse_errors' - If the action fails for one or more of the attendees in the request, a
+-- list of the attendees is returned, along with error codes and error
+-- messages.
+--
+-- 'httpStatus', 'batchCreateAttendeeResponse_httpStatus' - The response's http status code.
+newBatchCreateAttendeeResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  BatchCreateAttendeeResponse
+newBatchCreateAttendeeResponse pHttpStatus_ =
+  BatchCreateAttendeeResponse'
+    { attendees =
+        Prelude.Nothing,
+      errors = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The attendee information, including attendees IDs and join tokens.
+batchCreateAttendeeResponse_attendees :: Lens.Lens' BatchCreateAttendeeResponse (Prelude.Maybe [Attendee])
+batchCreateAttendeeResponse_attendees = Lens.lens (\BatchCreateAttendeeResponse' {attendees} -> attendees) (\s@BatchCreateAttendeeResponse' {} a -> s {attendees = a} :: BatchCreateAttendeeResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | If the action fails for one or more of the attendees in the request, a
+-- list of the attendees is returned, along with error codes and error
+-- messages.
+batchCreateAttendeeResponse_errors :: Lens.Lens' BatchCreateAttendeeResponse (Prelude.Maybe [CreateAttendeeError])
+batchCreateAttendeeResponse_errors = Lens.lens (\BatchCreateAttendeeResponse' {errors} -> errors) (\s@BatchCreateAttendeeResponse' {} a -> s {errors = a} :: BatchCreateAttendeeResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+batchCreateAttendeeResponse_httpStatus :: Lens.Lens' BatchCreateAttendeeResponse Prelude.Int
+batchCreateAttendeeResponse_httpStatus = Lens.lens (\BatchCreateAttendeeResponse' {httpStatus} -> httpStatus) (\s@BatchCreateAttendeeResponse' {} a -> s {httpStatus = a} :: BatchCreateAttendeeResponse)
+
+instance Prelude.NFData BatchCreateAttendeeResponse where
+  rnf BatchCreateAttendeeResponse' {..} =
+    Prelude.rnf attendees
+      `Prelude.seq` Prelude.rnf errors
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/BatchCreateChannelMembership.hs b/gen/Amazonka/Chime/BatchCreateChannelMembership.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/BatchCreateChannelMembership.hs
@@ -0,0 +1,245 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.BatchCreateChannelMembership
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds a specified number of users to a channel.
+module Amazonka.Chime.BatchCreateChannelMembership
+  ( -- * Creating a Request
+    BatchCreateChannelMembership (..),
+    newBatchCreateChannelMembership,
+
+    -- * Request Lenses
+    batchCreateChannelMembership_chimeBearer,
+    batchCreateChannelMembership_type,
+    batchCreateChannelMembership_channelArn,
+    batchCreateChannelMembership_memberArns,
+
+    -- * Destructuring the Response
+    BatchCreateChannelMembershipResponse (..),
+    newBatchCreateChannelMembershipResponse,
+
+    -- * Response Lenses
+    batchCreateChannelMembershipResponse_batchChannelMemberships,
+    batchCreateChannelMembershipResponse_errors,
+    batchCreateChannelMembershipResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newBatchCreateChannelMembership' smart constructor.
+data BatchCreateChannelMembership = BatchCreateChannelMembership'
+  { -- | The @AppInstanceUserArn@ of the user that makes the API call.
+    chimeBearer :: Prelude.Maybe Prelude.Text,
+    -- | 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.
+    type' :: Prelude.Maybe ChannelMembershipType,
+    -- | The ARN of the channel to which you\'re adding users.
+    channelArn :: Prelude.Text,
+    -- | The ARNs of the members you want to add to the channel.
+    memberArns :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchCreateChannelMembership' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chimeBearer', 'batchCreateChannelMembership_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
+--
+-- 'type'', 'batchCreateChannelMembership_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.
+--
+-- 'channelArn', 'batchCreateChannelMembership_channelArn' - The ARN of the channel to which you\'re adding users.
+--
+-- 'memberArns', 'batchCreateChannelMembership_memberArns' - The ARNs of the members you want to add to the channel.
+newBatchCreateChannelMembership ::
+  -- | 'channelArn'
+  Prelude.Text ->
+  -- | 'memberArns'
+  Prelude.NonEmpty Prelude.Text ->
+  BatchCreateChannelMembership
+newBatchCreateChannelMembership
+  pChannelArn_
+  pMemberArns_ =
+    BatchCreateChannelMembership'
+      { chimeBearer =
+          Prelude.Nothing,
+        type' = Prelude.Nothing,
+        channelArn = pChannelArn_,
+        memberArns = Lens.coerced Lens.# pMemberArns_
+      }
+
+-- | The @AppInstanceUserArn@ of the user that makes the API call.
+batchCreateChannelMembership_chimeBearer :: Lens.Lens' BatchCreateChannelMembership (Prelude.Maybe Prelude.Text)
+batchCreateChannelMembership_chimeBearer = Lens.lens (\BatchCreateChannelMembership' {chimeBearer} -> chimeBearer) (\s@BatchCreateChannelMembership' {} a -> s {chimeBearer = a} :: BatchCreateChannelMembership)
+
+-- | 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.
+batchCreateChannelMembership_type :: Lens.Lens' BatchCreateChannelMembership (Prelude.Maybe ChannelMembershipType)
+batchCreateChannelMembership_type = Lens.lens (\BatchCreateChannelMembership' {type'} -> type') (\s@BatchCreateChannelMembership' {} a -> s {type' = a} :: BatchCreateChannelMembership)
+
+-- | The ARN of the channel to which you\'re adding users.
+batchCreateChannelMembership_channelArn :: Lens.Lens' BatchCreateChannelMembership Prelude.Text
+batchCreateChannelMembership_channelArn = Lens.lens (\BatchCreateChannelMembership' {channelArn} -> channelArn) (\s@BatchCreateChannelMembership' {} a -> s {channelArn = a} :: BatchCreateChannelMembership)
+
+-- | The ARNs of the members you want to add to the channel.
+batchCreateChannelMembership_memberArns :: Lens.Lens' BatchCreateChannelMembership (Prelude.NonEmpty Prelude.Text)
+batchCreateChannelMembership_memberArns = Lens.lens (\BatchCreateChannelMembership' {memberArns} -> memberArns) (\s@BatchCreateChannelMembership' {} a -> s {memberArns = a} :: BatchCreateChannelMembership) Prelude.. Lens.coerced
+
+instance Core.AWSRequest BatchCreateChannelMembership where
+  type
+    AWSResponse BatchCreateChannelMembership =
+      BatchCreateChannelMembershipResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          BatchCreateChannelMembershipResponse'
+            Prelude.<$> (x Data..?> "BatchChannelMemberships")
+            Prelude.<*> (x Data..?> "Errors" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    BatchCreateChannelMembership
+  where
+  hashWithSalt _salt BatchCreateChannelMembership' {..} =
+    _salt
+      `Prelude.hashWithSalt` chimeBearer
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` channelArn
+      `Prelude.hashWithSalt` memberArns
+
+instance Prelude.NFData BatchCreateChannelMembership where
+  rnf BatchCreateChannelMembership' {..} =
+    Prelude.rnf chimeBearer
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf memberArns
+
+instance Data.ToHeaders BatchCreateChannelMembership where
+  toHeaders BatchCreateChannelMembership' {..} =
+    Prelude.mconcat
+      ["x-amz-chime-bearer" Data.=# chimeBearer]
+
+instance Data.ToJSON BatchCreateChannelMembership where
+  toJSON BatchCreateChannelMembership' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Type" Data..=) Prelude.<$> type',
+            Prelude.Just ("MemberArns" Data..= memberArns)
+          ]
+      )
+
+instance Data.ToPath BatchCreateChannelMembership where
+  toPath BatchCreateChannelMembership' {..} =
+    Prelude.mconcat
+      ["/channels/", Data.toBS channelArn, "/memberships"]
+
+instance Data.ToQuery BatchCreateChannelMembership where
+  toQuery =
+    Prelude.const
+      (Prelude.mconcat ["operation=batch-create"])
+
+-- | /See:/ 'newBatchCreateChannelMembershipResponse' smart constructor.
+data BatchCreateChannelMembershipResponse = BatchCreateChannelMembershipResponse'
+  { -- | The list of channel memberships in the response.
+    batchChannelMemberships :: Prelude.Maybe BatchChannelMemberships,
+    -- | If the action fails for one or more of the memberships in the request, a
+    -- list of the memberships is returned, along with error codes and error
+    -- messages.
+    errors :: Prelude.Maybe [BatchCreateChannelMembershipError],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchCreateChannelMembershipResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'batchChannelMemberships', 'batchCreateChannelMembershipResponse_batchChannelMemberships' - The list of channel memberships in the response.
+--
+-- 'errors', 'batchCreateChannelMembershipResponse_errors' - If the action fails for one or more of the memberships in the request, a
+-- list of the memberships is returned, along with error codes and error
+-- messages.
+--
+-- 'httpStatus', 'batchCreateChannelMembershipResponse_httpStatus' - The response's http status code.
+newBatchCreateChannelMembershipResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  BatchCreateChannelMembershipResponse
+newBatchCreateChannelMembershipResponse pHttpStatus_ =
+  BatchCreateChannelMembershipResponse'
+    { batchChannelMemberships =
+        Prelude.Nothing,
+      errors = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The list of channel memberships in the response.
+batchCreateChannelMembershipResponse_batchChannelMemberships :: Lens.Lens' BatchCreateChannelMembershipResponse (Prelude.Maybe BatchChannelMemberships)
+batchCreateChannelMembershipResponse_batchChannelMemberships = Lens.lens (\BatchCreateChannelMembershipResponse' {batchChannelMemberships} -> batchChannelMemberships) (\s@BatchCreateChannelMembershipResponse' {} a -> s {batchChannelMemberships = a} :: BatchCreateChannelMembershipResponse)
+
+-- | If the action fails for one or more of the memberships in the request, a
+-- list of the memberships is returned, along with error codes and error
+-- messages.
+batchCreateChannelMembershipResponse_errors :: Lens.Lens' BatchCreateChannelMembershipResponse (Prelude.Maybe [BatchCreateChannelMembershipError])
+batchCreateChannelMembershipResponse_errors = Lens.lens (\BatchCreateChannelMembershipResponse' {errors} -> errors) (\s@BatchCreateChannelMembershipResponse' {} a -> s {errors = a} :: BatchCreateChannelMembershipResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+batchCreateChannelMembershipResponse_httpStatus :: Lens.Lens' BatchCreateChannelMembershipResponse Prelude.Int
+batchCreateChannelMembershipResponse_httpStatus = Lens.lens (\BatchCreateChannelMembershipResponse' {httpStatus} -> httpStatus) (\s@BatchCreateChannelMembershipResponse' {} a -> s {httpStatus = a} :: BatchCreateChannelMembershipResponse)
+
+instance
+  Prelude.NFData
+    BatchCreateChannelMembershipResponse
+  where
+  rnf BatchCreateChannelMembershipResponse' {..} =
+    Prelude.rnf batchChannelMemberships
+      `Prelude.seq` Prelude.rnf errors
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/BatchCreateRoomMembership.hs b/gen/Amazonka/Chime/BatchCreateRoomMembership.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/BatchCreateRoomMembership.hs
@@ -0,0 +1,209 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.BatchCreateRoomMembership
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds up to 50 members to a chat room in an Amazon Chime Enterprise
+-- account. Members can be users or bots. The member role designates
+-- whether the member is a chat room administrator or a general chat room
+-- member.
+module Amazonka.Chime.BatchCreateRoomMembership
+  ( -- * Creating a Request
+    BatchCreateRoomMembership (..),
+    newBatchCreateRoomMembership,
+
+    -- * Request Lenses
+    batchCreateRoomMembership_accountId,
+    batchCreateRoomMembership_roomId,
+    batchCreateRoomMembership_membershipItemList,
+
+    -- * Destructuring the Response
+    BatchCreateRoomMembershipResponse (..),
+    newBatchCreateRoomMembershipResponse,
+
+    -- * Response Lenses
+    batchCreateRoomMembershipResponse_errors,
+    batchCreateRoomMembershipResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newBatchCreateRoomMembership' smart constructor.
+data BatchCreateRoomMembership = BatchCreateRoomMembership'
+  { -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The room ID.
+    roomId :: Prelude.Text,
+    -- | The list of membership items.
+    membershipItemList :: [MembershipItem]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchCreateRoomMembership' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'batchCreateRoomMembership_accountId' - The Amazon Chime account ID.
+--
+-- 'roomId', 'batchCreateRoomMembership_roomId' - The room ID.
+--
+-- 'membershipItemList', 'batchCreateRoomMembership_membershipItemList' - The list of membership items.
+newBatchCreateRoomMembership ::
+  -- | 'accountId'
+  Prelude.Text ->
+  -- | 'roomId'
+  Prelude.Text ->
+  BatchCreateRoomMembership
+newBatchCreateRoomMembership pAccountId_ pRoomId_ =
+  BatchCreateRoomMembership'
+    { accountId = pAccountId_,
+      roomId = pRoomId_,
+      membershipItemList = Prelude.mempty
+    }
+
+-- | The Amazon Chime account ID.
+batchCreateRoomMembership_accountId :: Lens.Lens' BatchCreateRoomMembership Prelude.Text
+batchCreateRoomMembership_accountId = Lens.lens (\BatchCreateRoomMembership' {accountId} -> accountId) (\s@BatchCreateRoomMembership' {} a -> s {accountId = a} :: BatchCreateRoomMembership)
+
+-- | The room ID.
+batchCreateRoomMembership_roomId :: Lens.Lens' BatchCreateRoomMembership Prelude.Text
+batchCreateRoomMembership_roomId = Lens.lens (\BatchCreateRoomMembership' {roomId} -> roomId) (\s@BatchCreateRoomMembership' {} a -> s {roomId = a} :: BatchCreateRoomMembership)
+
+-- | The list of membership items.
+batchCreateRoomMembership_membershipItemList :: Lens.Lens' BatchCreateRoomMembership [MembershipItem]
+batchCreateRoomMembership_membershipItemList = Lens.lens (\BatchCreateRoomMembership' {membershipItemList} -> membershipItemList) (\s@BatchCreateRoomMembership' {} a -> s {membershipItemList = a} :: BatchCreateRoomMembership) Prelude.. Lens.coerced
+
+instance Core.AWSRequest BatchCreateRoomMembership where
+  type
+    AWSResponse BatchCreateRoomMembership =
+      BatchCreateRoomMembershipResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          BatchCreateRoomMembershipResponse'
+            Prelude.<$> (x Data..?> "Errors" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable BatchCreateRoomMembership where
+  hashWithSalt _salt BatchCreateRoomMembership' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` roomId
+      `Prelude.hashWithSalt` membershipItemList
+
+instance Prelude.NFData BatchCreateRoomMembership where
+  rnf BatchCreateRoomMembership' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf roomId
+      `Prelude.seq` Prelude.rnf membershipItemList
+
+instance Data.ToHeaders BatchCreateRoomMembership where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON BatchCreateRoomMembership where
+  toJSON BatchCreateRoomMembership' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("MembershipItemList" Data..= membershipItemList)
+          ]
+      )
+
+instance Data.ToPath BatchCreateRoomMembership where
+  toPath BatchCreateRoomMembership' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS accountId,
+        "/rooms/",
+        Data.toBS roomId,
+        "/memberships"
+      ]
+
+instance Data.ToQuery BatchCreateRoomMembership where
+  toQuery =
+    Prelude.const
+      (Prelude.mconcat ["operation=batch-create"])
+
+-- | /See:/ 'newBatchCreateRoomMembershipResponse' smart constructor.
+data BatchCreateRoomMembershipResponse = BatchCreateRoomMembershipResponse'
+  { -- | If the action fails for one or more of the member IDs in the request, a
+    -- list of the member IDs is returned, along with error codes and error
+    -- messages.
+    errors :: Prelude.Maybe [MemberError],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchCreateRoomMembershipResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'errors', 'batchCreateRoomMembershipResponse_errors' - If the action fails for one or more of the member IDs in the request, a
+-- list of the member IDs is returned, along with error codes and error
+-- messages.
+--
+-- 'httpStatus', 'batchCreateRoomMembershipResponse_httpStatus' - The response's http status code.
+newBatchCreateRoomMembershipResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  BatchCreateRoomMembershipResponse
+newBatchCreateRoomMembershipResponse pHttpStatus_ =
+  BatchCreateRoomMembershipResponse'
+    { errors =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | If the action fails for one or more of the member IDs in the request, a
+-- list of the member IDs is returned, along with error codes and error
+-- messages.
+batchCreateRoomMembershipResponse_errors :: Lens.Lens' BatchCreateRoomMembershipResponse (Prelude.Maybe [MemberError])
+batchCreateRoomMembershipResponse_errors = Lens.lens (\BatchCreateRoomMembershipResponse' {errors} -> errors) (\s@BatchCreateRoomMembershipResponse' {} a -> s {errors = a} :: BatchCreateRoomMembershipResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+batchCreateRoomMembershipResponse_httpStatus :: Lens.Lens' BatchCreateRoomMembershipResponse Prelude.Int
+batchCreateRoomMembershipResponse_httpStatus = Lens.lens (\BatchCreateRoomMembershipResponse' {httpStatus} -> httpStatus) (\s@BatchCreateRoomMembershipResponse' {} a -> s {httpStatus = a} :: BatchCreateRoomMembershipResponse)
+
+instance
+  Prelude.NFData
+    BatchCreateRoomMembershipResponse
+  where
+  rnf BatchCreateRoomMembershipResponse' {..} =
+    Prelude.rnf errors
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/BatchDeletePhoneNumber.hs b/gen/Amazonka/Chime/BatchDeletePhoneNumber.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/BatchDeletePhoneNumber.hs
@@ -0,0 +1,181 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.BatchDeletePhoneNumber
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Moves phone numbers into the __Deletion queue__. Phone numbers must be
+-- disassociated from any users or Amazon Chime Voice Connectors before
+-- they can be deleted.
+--
+-- Phone numbers remain in the __Deletion queue__ for 7 days before they
+-- are deleted permanently.
+module Amazonka.Chime.BatchDeletePhoneNumber
+  ( -- * Creating a Request
+    BatchDeletePhoneNumber (..),
+    newBatchDeletePhoneNumber,
+
+    -- * Request Lenses
+    batchDeletePhoneNumber_phoneNumberIds,
+
+    -- * Destructuring the Response
+    BatchDeletePhoneNumberResponse (..),
+    newBatchDeletePhoneNumberResponse,
+
+    -- * Response Lenses
+    batchDeletePhoneNumberResponse_phoneNumberErrors,
+    batchDeletePhoneNumberResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newBatchDeletePhoneNumber' smart constructor.
+data BatchDeletePhoneNumber = BatchDeletePhoneNumber'
+  { -- | List of phone number IDs.
+    phoneNumberIds :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchDeletePhoneNumber' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'phoneNumberIds', 'batchDeletePhoneNumber_phoneNumberIds' - List of phone number IDs.
+newBatchDeletePhoneNumber ::
+  -- | 'phoneNumberIds'
+  Prelude.NonEmpty Prelude.Text ->
+  BatchDeletePhoneNumber
+newBatchDeletePhoneNumber pPhoneNumberIds_ =
+  BatchDeletePhoneNumber'
+    { phoneNumberIds =
+        Lens.coerced Lens.# pPhoneNumberIds_
+    }
+
+-- | List of phone number IDs.
+batchDeletePhoneNumber_phoneNumberIds :: Lens.Lens' BatchDeletePhoneNumber (Prelude.NonEmpty Prelude.Text)
+batchDeletePhoneNumber_phoneNumberIds = Lens.lens (\BatchDeletePhoneNumber' {phoneNumberIds} -> phoneNumberIds) (\s@BatchDeletePhoneNumber' {} a -> s {phoneNumberIds = a} :: BatchDeletePhoneNumber) Prelude.. Lens.coerced
+
+instance Core.AWSRequest BatchDeletePhoneNumber where
+  type
+    AWSResponse BatchDeletePhoneNumber =
+      BatchDeletePhoneNumberResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          BatchDeletePhoneNumberResponse'
+            Prelude.<$> ( x
+                            Data..?> "PhoneNumberErrors"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable BatchDeletePhoneNumber where
+  hashWithSalt _salt BatchDeletePhoneNumber' {..} =
+    _salt `Prelude.hashWithSalt` phoneNumberIds
+
+instance Prelude.NFData BatchDeletePhoneNumber where
+  rnf BatchDeletePhoneNumber' {..} =
+    Prelude.rnf phoneNumberIds
+
+instance Data.ToHeaders BatchDeletePhoneNumber where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON BatchDeletePhoneNumber where
+  toJSON BatchDeletePhoneNumber' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("PhoneNumberIds" Data..= phoneNumberIds)
+          ]
+      )
+
+instance Data.ToPath BatchDeletePhoneNumber where
+  toPath = Prelude.const "/phone-numbers"
+
+instance Data.ToQuery BatchDeletePhoneNumber where
+  toQuery =
+    Prelude.const
+      (Prelude.mconcat ["operation=batch-delete"])
+
+-- | /See:/ 'newBatchDeletePhoneNumberResponse' smart constructor.
+data BatchDeletePhoneNumberResponse = BatchDeletePhoneNumberResponse'
+  { -- | If the action fails for one or more of the phone numbers in the request,
+    -- a list of the phone numbers is returned, along with error codes and
+    -- error messages.
+    phoneNumberErrors :: Prelude.Maybe [PhoneNumberError],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchDeletePhoneNumberResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'phoneNumberErrors', 'batchDeletePhoneNumberResponse_phoneNumberErrors' - If the action fails for one or more of the phone numbers in the request,
+-- a list of the phone numbers is returned, along with error codes and
+-- error messages.
+--
+-- 'httpStatus', 'batchDeletePhoneNumberResponse_httpStatus' - The response's http status code.
+newBatchDeletePhoneNumberResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  BatchDeletePhoneNumberResponse
+newBatchDeletePhoneNumberResponse pHttpStatus_ =
+  BatchDeletePhoneNumberResponse'
+    { phoneNumberErrors =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | If the action fails for one or more of the phone numbers in the request,
+-- a list of the phone numbers is returned, along with error codes and
+-- error messages.
+batchDeletePhoneNumberResponse_phoneNumberErrors :: Lens.Lens' BatchDeletePhoneNumberResponse (Prelude.Maybe [PhoneNumberError])
+batchDeletePhoneNumberResponse_phoneNumberErrors = Lens.lens (\BatchDeletePhoneNumberResponse' {phoneNumberErrors} -> phoneNumberErrors) (\s@BatchDeletePhoneNumberResponse' {} a -> s {phoneNumberErrors = a} :: BatchDeletePhoneNumberResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+batchDeletePhoneNumberResponse_httpStatus :: Lens.Lens' BatchDeletePhoneNumberResponse Prelude.Int
+batchDeletePhoneNumberResponse_httpStatus = Lens.lens (\BatchDeletePhoneNumberResponse' {httpStatus} -> httpStatus) (\s@BatchDeletePhoneNumberResponse' {} a -> s {httpStatus = a} :: BatchDeletePhoneNumberResponse)
+
+instance
+  Prelude.NFData
+    BatchDeletePhoneNumberResponse
+  where
+  rnf BatchDeletePhoneNumberResponse' {..} =
+    Prelude.rnf phoneNumberErrors
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/BatchSuspendUser.hs b/gen/Amazonka/Chime/BatchSuspendUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/BatchSuspendUser.hs
@@ -0,0 +1,198 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.BatchSuspendUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Suspends up to 50 users from a @Team@ or @EnterpriseLWA@ Amazon Chime
+-- account. For more information about different account types, see
+-- <https://docs.aws.amazon.com/chime/latest/ag/manage-chime-account.html Managing Your Amazon Chime Accounts>
+-- in the /Amazon Chime Administration Guide/.
+--
+-- Users suspended from a @Team@ account are disassociated from the
+-- account,but they can continue to use Amazon Chime as free users. To
+-- remove the suspension from suspended @Team@ account users, invite them
+-- to the @Team@ account again. You can use the InviteUsers action to do
+-- so.
+--
+-- Users suspended from an @EnterpriseLWA@ account are immediately signed
+-- out of Amazon Chime and can no longer sign in. To remove the suspension
+-- from suspended @EnterpriseLWA@ account users, use the BatchUnsuspendUser
+-- action.
+--
+-- To sign out users without suspending them, use the LogoutUser action.
+module Amazonka.Chime.BatchSuspendUser
+  ( -- * Creating a Request
+    BatchSuspendUser (..),
+    newBatchSuspendUser,
+
+    -- * Request Lenses
+    batchSuspendUser_accountId,
+    batchSuspendUser_userIdList,
+
+    -- * Destructuring the Response
+    BatchSuspendUserResponse (..),
+    newBatchSuspendUserResponse,
+
+    -- * Response Lenses
+    batchSuspendUserResponse_userErrors,
+    batchSuspendUserResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newBatchSuspendUser' smart constructor.
+data BatchSuspendUser = BatchSuspendUser'
+  { -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The request containing the user IDs to suspend.
+    userIdList :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchSuspendUser' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'batchSuspendUser_accountId' - The Amazon Chime account ID.
+--
+-- 'userIdList', 'batchSuspendUser_userIdList' - The request containing the user IDs to suspend.
+newBatchSuspendUser ::
+  -- | 'accountId'
+  Prelude.Text ->
+  BatchSuspendUser
+newBatchSuspendUser pAccountId_ =
+  BatchSuspendUser'
+    { accountId = pAccountId_,
+      userIdList = Prelude.mempty
+    }
+
+-- | The Amazon Chime account ID.
+batchSuspendUser_accountId :: Lens.Lens' BatchSuspendUser Prelude.Text
+batchSuspendUser_accountId = Lens.lens (\BatchSuspendUser' {accountId} -> accountId) (\s@BatchSuspendUser' {} a -> s {accountId = a} :: BatchSuspendUser)
+
+-- | The request containing the user IDs to suspend.
+batchSuspendUser_userIdList :: Lens.Lens' BatchSuspendUser [Prelude.Text]
+batchSuspendUser_userIdList = Lens.lens (\BatchSuspendUser' {userIdList} -> userIdList) (\s@BatchSuspendUser' {} a -> s {userIdList = a} :: BatchSuspendUser) Prelude.. Lens.coerced
+
+instance Core.AWSRequest BatchSuspendUser where
+  type
+    AWSResponse BatchSuspendUser =
+      BatchSuspendUserResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          BatchSuspendUserResponse'
+            Prelude.<$> (x Data..?> "UserErrors" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable BatchSuspendUser where
+  hashWithSalt _salt BatchSuspendUser' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` userIdList
+
+instance Prelude.NFData BatchSuspendUser where
+  rnf BatchSuspendUser' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf userIdList
+
+instance Data.ToHeaders BatchSuspendUser where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON BatchSuspendUser where
+  toJSON BatchSuspendUser' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("UserIdList" Data..= userIdList)]
+      )
+
+instance Data.ToPath BatchSuspendUser where
+  toPath BatchSuspendUser' {..} =
+    Prelude.mconcat
+      ["/accounts/", Data.toBS accountId, "/users"]
+
+instance Data.ToQuery BatchSuspendUser where
+  toQuery =
+    Prelude.const
+      (Prelude.mconcat ["operation=suspend"])
+
+-- | /See:/ 'newBatchSuspendUserResponse' smart constructor.
+data BatchSuspendUserResponse = BatchSuspendUserResponse'
+  { -- | If the BatchSuspendUser action fails for one or more of the user IDs in
+    -- the request, a list of the user IDs is returned, along with error codes
+    -- and error messages.
+    userErrors :: Prelude.Maybe [UserError],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchSuspendUserResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'userErrors', 'batchSuspendUserResponse_userErrors' - If the BatchSuspendUser action fails for one or more of the user IDs in
+-- the request, a list of the user IDs is returned, along with error codes
+-- and error messages.
+--
+-- 'httpStatus', 'batchSuspendUserResponse_httpStatus' - The response's http status code.
+newBatchSuspendUserResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  BatchSuspendUserResponse
+newBatchSuspendUserResponse pHttpStatus_ =
+  BatchSuspendUserResponse'
+    { userErrors =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | If the BatchSuspendUser action fails for one or more of the user IDs in
+-- the request, a list of the user IDs is returned, along with error codes
+-- and error messages.
+batchSuspendUserResponse_userErrors :: Lens.Lens' BatchSuspendUserResponse (Prelude.Maybe [UserError])
+batchSuspendUserResponse_userErrors = Lens.lens (\BatchSuspendUserResponse' {userErrors} -> userErrors) (\s@BatchSuspendUserResponse' {} a -> s {userErrors = a} :: BatchSuspendUserResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+batchSuspendUserResponse_httpStatus :: Lens.Lens' BatchSuspendUserResponse Prelude.Int
+batchSuspendUserResponse_httpStatus = Lens.lens (\BatchSuspendUserResponse' {httpStatus} -> httpStatus) (\s@BatchSuspendUserResponse' {} a -> s {httpStatus = a} :: BatchSuspendUserResponse)
+
+instance Prelude.NFData BatchSuspendUserResponse where
+  rnf BatchSuspendUserResponse' {..} =
+    Prelude.rnf userErrors
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/BatchUnsuspendUser.hs b/gen/Amazonka/Chime/BatchUnsuspendUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/BatchUnsuspendUser.hs
@@ -0,0 +1,191 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.BatchUnsuspendUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes the suspension from up to 50 previously suspended users for the
+-- specified Amazon Chime @EnterpriseLWA@ account. Only users on
+-- @EnterpriseLWA@ accounts can be unsuspended using this action. For more
+-- information about different account types, see
+-- <https://docs.aws.amazon.com/chime/latest/ag/manage-chime-account.html Managing Your Amazon Chime Accounts>
+-- in the account types, in the /Amazon Chime Administration Guide/.
+--
+-- Previously suspended users who are unsuspended using this action are
+-- returned to @Registered@ status. Users who are not previously suspended
+-- are ignored.
+module Amazonka.Chime.BatchUnsuspendUser
+  ( -- * Creating a Request
+    BatchUnsuspendUser (..),
+    newBatchUnsuspendUser,
+
+    -- * Request Lenses
+    batchUnsuspendUser_accountId,
+    batchUnsuspendUser_userIdList,
+
+    -- * Destructuring the Response
+    BatchUnsuspendUserResponse (..),
+    newBatchUnsuspendUserResponse,
+
+    -- * Response Lenses
+    batchUnsuspendUserResponse_userErrors,
+    batchUnsuspendUserResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newBatchUnsuspendUser' smart constructor.
+data BatchUnsuspendUser = BatchUnsuspendUser'
+  { -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The request containing the user IDs to unsuspend.
+    userIdList :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchUnsuspendUser' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'batchUnsuspendUser_accountId' - The Amazon Chime account ID.
+--
+-- 'userIdList', 'batchUnsuspendUser_userIdList' - The request containing the user IDs to unsuspend.
+newBatchUnsuspendUser ::
+  -- | 'accountId'
+  Prelude.Text ->
+  BatchUnsuspendUser
+newBatchUnsuspendUser pAccountId_ =
+  BatchUnsuspendUser'
+    { accountId = pAccountId_,
+      userIdList = Prelude.mempty
+    }
+
+-- | The Amazon Chime account ID.
+batchUnsuspendUser_accountId :: Lens.Lens' BatchUnsuspendUser Prelude.Text
+batchUnsuspendUser_accountId = Lens.lens (\BatchUnsuspendUser' {accountId} -> accountId) (\s@BatchUnsuspendUser' {} a -> s {accountId = a} :: BatchUnsuspendUser)
+
+-- | The request containing the user IDs to unsuspend.
+batchUnsuspendUser_userIdList :: Lens.Lens' BatchUnsuspendUser [Prelude.Text]
+batchUnsuspendUser_userIdList = Lens.lens (\BatchUnsuspendUser' {userIdList} -> userIdList) (\s@BatchUnsuspendUser' {} a -> s {userIdList = a} :: BatchUnsuspendUser) Prelude.. Lens.coerced
+
+instance Core.AWSRequest BatchUnsuspendUser where
+  type
+    AWSResponse BatchUnsuspendUser =
+      BatchUnsuspendUserResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          BatchUnsuspendUserResponse'
+            Prelude.<$> (x Data..?> "UserErrors" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable BatchUnsuspendUser where
+  hashWithSalt _salt BatchUnsuspendUser' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` userIdList
+
+instance Prelude.NFData BatchUnsuspendUser where
+  rnf BatchUnsuspendUser' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf userIdList
+
+instance Data.ToHeaders BatchUnsuspendUser where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON BatchUnsuspendUser where
+  toJSON BatchUnsuspendUser' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("UserIdList" Data..= userIdList)]
+      )
+
+instance Data.ToPath BatchUnsuspendUser where
+  toPath BatchUnsuspendUser' {..} =
+    Prelude.mconcat
+      ["/accounts/", Data.toBS accountId, "/users"]
+
+instance Data.ToQuery BatchUnsuspendUser where
+  toQuery =
+    Prelude.const
+      (Prelude.mconcat ["operation=unsuspend"])
+
+-- | /See:/ 'newBatchUnsuspendUserResponse' smart constructor.
+data BatchUnsuspendUserResponse = BatchUnsuspendUserResponse'
+  { -- | If the BatchUnsuspendUser action fails for one or more of the user IDs
+    -- in the request, a list of the user IDs is returned, along with error
+    -- codes and error messages.
+    userErrors :: Prelude.Maybe [UserError],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchUnsuspendUserResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'userErrors', 'batchUnsuspendUserResponse_userErrors' - If the BatchUnsuspendUser action fails for one or more of the user IDs
+-- in the request, a list of the user IDs is returned, along with error
+-- codes and error messages.
+--
+-- 'httpStatus', 'batchUnsuspendUserResponse_httpStatus' - The response's http status code.
+newBatchUnsuspendUserResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  BatchUnsuspendUserResponse
+newBatchUnsuspendUserResponse pHttpStatus_ =
+  BatchUnsuspendUserResponse'
+    { userErrors =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | If the BatchUnsuspendUser action fails for one or more of the user IDs
+-- in the request, a list of the user IDs is returned, along with error
+-- codes and error messages.
+batchUnsuspendUserResponse_userErrors :: Lens.Lens' BatchUnsuspendUserResponse (Prelude.Maybe [UserError])
+batchUnsuspendUserResponse_userErrors = Lens.lens (\BatchUnsuspendUserResponse' {userErrors} -> userErrors) (\s@BatchUnsuspendUserResponse' {} a -> s {userErrors = a} :: BatchUnsuspendUserResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+batchUnsuspendUserResponse_httpStatus :: Lens.Lens' BatchUnsuspendUserResponse Prelude.Int
+batchUnsuspendUserResponse_httpStatus = Lens.lens (\BatchUnsuspendUserResponse' {httpStatus} -> httpStatus) (\s@BatchUnsuspendUserResponse' {} a -> s {httpStatus = a} :: BatchUnsuspendUserResponse)
+
+instance Prelude.NFData BatchUnsuspendUserResponse where
+  rnf BatchUnsuspendUserResponse' {..} =
+    Prelude.rnf userErrors
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/BatchUpdatePhoneNumber.hs b/gen/Amazonka/Chime/BatchUpdatePhoneNumber.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/BatchUpdatePhoneNumber.hs
@@ -0,0 +1,190 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.BatchUpdatePhoneNumber
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates phone number product types or calling names. You can update one
+-- attribute at a time for each @UpdatePhoneNumberRequestItem@. For
+-- example, you can update the product type or the calling name.
+--
+-- For toll-free numbers, you cannot use the Amazon Chime Business Calling
+-- product type. For numbers outside the U.S., you must use the Amazon
+-- Chime SIP Media Application Dial-In product type.
+--
+-- Updates to outbound calling names can take up to 72 hours to complete.
+-- Pending updates to outbound calling names must be complete before you
+-- can request another update.
+module Amazonka.Chime.BatchUpdatePhoneNumber
+  ( -- * Creating a Request
+    BatchUpdatePhoneNumber (..),
+    newBatchUpdatePhoneNumber,
+
+    -- * Request Lenses
+    batchUpdatePhoneNumber_updatePhoneNumberRequestItems,
+
+    -- * Destructuring the Response
+    BatchUpdatePhoneNumberResponse (..),
+    newBatchUpdatePhoneNumberResponse,
+
+    -- * Response Lenses
+    batchUpdatePhoneNumberResponse_phoneNumberErrors,
+    batchUpdatePhoneNumberResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newBatchUpdatePhoneNumber' smart constructor.
+data BatchUpdatePhoneNumber = BatchUpdatePhoneNumber'
+  { -- | The request containing the phone number IDs and product types or calling
+    -- names to update.
+    updatePhoneNumberRequestItems :: [UpdatePhoneNumberRequestItem]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchUpdatePhoneNumber' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'updatePhoneNumberRequestItems', 'batchUpdatePhoneNumber_updatePhoneNumberRequestItems' - The request containing the phone number IDs and product types or calling
+-- names to update.
+newBatchUpdatePhoneNumber ::
+  BatchUpdatePhoneNumber
+newBatchUpdatePhoneNumber =
+  BatchUpdatePhoneNumber'
+    { updatePhoneNumberRequestItems =
+        Prelude.mempty
+    }
+
+-- | The request containing the phone number IDs and product types or calling
+-- names to update.
+batchUpdatePhoneNumber_updatePhoneNumberRequestItems :: Lens.Lens' BatchUpdatePhoneNumber [UpdatePhoneNumberRequestItem]
+batchUpdatePhoneNumber_updatePhoneNumberRequestItems = Lens.lens (\BatchUpdatePhoneNumber' {updatePhoneNumberRequestItems} -> updatePhoneNumberRequestItems) (\s@BatchUpdatePhoneNumber' {} a -> s {updatePhoneNumberRequestItems = a} :: BatchUpdatePhoneNumber) Prelude.. Lens.coerced
+
+instance Core.AWSRequest BatchUpdatePhoneNumber where
+  type
+    AWSResponse BatchUpdatePhoneNumber =
+      BatchUpdatePhoneNumberResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          BatchUpdatePhoneNumberResponse'
+            Prelude.<$> ( x
+                            Data..?> "PhoneNumberErrors"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable BatchUpdatePhoneNumber where
+  hashWithSalt _salt BatchUpdatePhoneNumber' {..} =
+    _salt
+      `Prelude.hashWithSalt` updatePhoneNumberRequestItems
+
+instance Prelude.NFData BatchUpdatePhoneNumber where
+  rnf BatchUpdatePhoneNumber' {..} =
+    Prelude.rnf updatePhoneNumberRequestItems
+
+instance Data.ToHeaders BatchUpdatePhoneNumber where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON BatchUpdatePhoneNumber where
+  toJSON BatchUpdatePhoneNumber' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "UpdatePhoneNumberRequestItems"
+                  Data..= updatePhoneNumberRequestItems
+              )
+          ]
+      )
+
+instance Data.ToPath BatchUpdatePhoneNumber where
+  toPath = Prelude.const "/phone-numbers"
+
+instance Data.ToQuery BatchUpdatePhoneNumber where
+  toQuery =
+    Prelude.const
+      (Prelude.mconcat ["operation=batch-update"])
+
+-- | /See:/ 'newBatchUpdatePhoneNumberResponse' smart constructor.
+data BatchUpdatePhoneNumberResponse = BatchUpdatePhoneNumberResponse'
+  { -- | If the action fails for one or more of the phone numbers in the request,
+    -- a list of the phone numbers is returned, along with error codes and
+    -- error messages.
+    phoneNumberErrors :: Prelude.Maybe [PhoneNumberError],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchUpdatePhoneNumberResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'phoneNumberErrors', 'batchUpdatePhoneNumberResponse_phoneNumberErrors' - If the action fails for one or more of the phone numbers in the request,
+-- a list of the phone numbers is returned, along with error codes and
+-- error messages.
+--
+-- 'httpStatus', 'batchUpdatePhoneNumberResponse_httpStatus' - The response's http status code.
+newBatchUpdatePhoneNumberResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  BatchUpdatePhoneNumberResponse
+newBatchUpdatePhoneNumberResponse pHttpStatus_ =
+  BatchUpdatePhoneNumberResponse'
+    { phoneNumberErrors =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | If the action fails for one or more of the phone numbers in the request,
+-- a list of the phone numbers is returned, along with error codes and
+-- error messages.
+batchUpdatePhoneNumberResponse_phoneNumberErrors :: Lens.Lens' BatchUpdatePhoneNumberResponse (Prelude.Maybe [PhoneNumberError])
+batchUpdatePhoneNumberResponse_phoneNumberErrors = Lens.lens (\BatchUpdatePhoneNumberResponse' {phoneNumberErrors} -> phoneNumberErrors) (\s@BatchUpdatePhoneNumberResponse' {} a -> s {phoneNumberErrors = a} :: BatchUpdatePhoneNumberResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+batchUpdatePhoneNumberResponse_httpStatus :: Lens.Lens' BatchUpdatePhoneNumberResponse Prelude.Int
+batchUpdatePhoneNumberResponse_httpStatus = Lens.lens (\BatchUpdatePhoneNumberResponse' {httpStatus} -> httpStatus) (\s@BatchUpdatePhoneNumberResponse' {} a -> s {httpStatus = a} :: BatchUpdatePhoneNumberResponse)
+
+instance
+  Prelude.NFData
+    BatchUpdatePhoneNumberResponse
+  where
+  rnf BatchUpdatePhoneNumberResponse' {..} =
+    Prelude.rnf phoneNumberErrors
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/BatchUpdateUser.hs b/gen/Amazonka/Chime/BatchUpdateUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/BatchUpdateUser.hs
@@ -0,0 +1,186 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.BatchUpdateUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates user details within the UpdateUserRequestItem object for up to
+-- 20 users for the specified Amazon Chime account. Currently, only
+-- @LicenseType@ updates are supported for this action.
+module Amazonka.Chime.BatchUpdateUser
+  ( -- * Creating a Request
+    BatchUpdateUser (..),
+    newBatchUpdateUser,
+
+    -- * Request Lenses
+    batchUpdateUser_accountId,
+    batchUpdateUser_updateUserRequestItems,
+
+    -- * Destructuring the Response
+    BatchUpdateUserResponse (..),
+    newBatchUpdateUserResponse,
+
+    -- * Response Lenses
+    batchUpdateUserResponse_userErrors,
+    batchUpdateUserResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newBatchUpdateUser' smart constructor.
+data BatchUpdateUser = BatchUpdateUser'
+  { -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The request containing the user IDs and details to update.
+    updateUserRequestItems :: [UpdateUserRequestItem]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchUpdateUser' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'batchUpdateUser_accountId' - The Amazon Chime account ID.
+--
+-- 'updateUserRequestItems', 'batchUpdateUser_updateUserRequestItems' - The request containing the user IDs and details to update.
+newBatchUpdateUser ::
+  -- | 'accountId'
+  Prelude.Text ->
+  BatchUpdateUser
+newBatchUpdateUser pAccountId_ =
+  BatchUpdateUser'
+    { accountId = pAccountId_,
+      updateUserRequestItems = Prelude.mempty
+    }
+
+-- | The Amazon Chime account ID.
+batchUpdateUser_accountId :: Lens.Lens' BatchUpdateUser Prelude.Text
+batchUpdateUser_accountId = Lens.lens (\BatchUpdateUser' {accountId} -> accountId) (\s@BatchUpdateUser' {} a -> s {accountId = a} :: BatchUpdateUser)
+
+-- | The request containing the user IDs and details to update.
+batchUpdateUser_updateUserRequestItems :: Lens.Lens' BatchUpdateUser [UpdateUserRequestItem]
+batchUpdateUser_updateUserRequestItems = Lens.lens (\BatchUpdateUser' {updateUserRequestItems} -> updateUserRequestItems) (\s@BatchUpdateUser' {} a -> s {updateUserRequestItems = a} :: BatchUpdateUser) Prelude.. Lens.coerced
+
+instance Core.AWSRequest BatchUpdateUser where
+  type
+    AWSResponse BatchUpdateUser =
+      BatchUpdateUserResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          BatchUpdateUserResponse'
+            Prelude.<$> (x Data..?> "UserErrors" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable BatchUpdateUser where
+  hashWithSalt _salt BatchUpdateUser' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` updateUserRequestItems
+
+instance Prelude.NFData BatchUpdateUser where
+  rnf BatchUpdateUser' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf updateUserRequestItems
+
+instance Data.ToHeaders BatchUpdateUser where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON BatchUpdateUser where
+  toJSON BatchUpdateUser' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "UpdateUserRequestItems"
+                  Data..= updateUserRequestItems
+              )
+          ]
+      )
+
+instance Data.ToPath BatchUpdateUser where
+  toPath BatchUpdateUser' {..} =
+    Prelude.mconcat
+      ["/accounts/", Data.toBS accountId, "/users"]
+
+instance Data.ToQuery BatchUpdateUser where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newBatchUpdateUserResponse' smart constructor.
+data BatchUpdateUserResponse = BatchUpdateUserResponse'
+  { -- | If the BatchUpdateUser action fails for one or more of the user IDs in
+    -- the request, a list of the user IDs is returned, along with error codes
+    -- and error messages.
+    userErrors :: Prelude.Maybe [UserError],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchUpdateUserResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'userErrors', 'batchUpdateUserResponse_userErrors' - If the BatchUpdateUser action fails for one or more of the user IDs in
+-- the request, a list of the user IDs is returned, along with error codes
+-- and error messages.
+--
+-- 'httpStatus', 'batchUpdateUserResponse_httpStatus' - The response's http status code.
+newBatchUpdateUserResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  BatchUpdateUserResponse
+newBatchUpdateUserResponse pHttpStatus_ =
+  BatchUpdateUserResponse'
+    { userErrors =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | If the BatchUpdateUser action fails for one or more of the user IDs in
+-- the request, a list of the user IDs is returned, along with error codes
+-- and error messages.
+batchUpdateUserResponse_userErrors :: Lens.Lens' BatchUpdateUserResponse (Prelude.Maybe [UserError])
+batchUpdateUserResponse_userErrors = Lens.lens (\BatchUpdateUserResponse' {userErrors} -> userErrors) (\s@BatchUpdateUserResponse' {} a -> s {userErrors = a} :: BatchUpdateUserResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+batchUpdateUserResponse_httpStatus :: Lens.Lens' BatchUpdateUserResponse Prelude.Int
+batchUpdateUserResponse_httpStatus = Lens.lens (\BatchUpdateUserResponse' {httpStatus} -> httpStatus) (\s@BatchUpdateUserResponse' {} a -> s {httpStatus = a} :: BatchUpdateUserResponse)
+
+instance Prelude.NFData BatchUpdateUserResponse where
+  rnf BatchUpdateUserResponse' {..} =
+    Prelude.rnf userErrors
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/CreateAccount.hs b/gen/Amazonka/Chime/CreateAccount.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/CreateAccount.hs
@@ -0,0 +1,159 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.CreateAccount
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an Amazon Chime account under the administrator\'s AWS account.
+-- Only @Team@ account types are currently supported for this action. For
+-- more information about different account types, see
+-- <https://docs.aws.amazon.com/chime/latest/ag/manage-chime-account.html Managing Your Amazon Chime Accounts>
+-- in the /Amazon Chime Administration Guide/.
+module Amazonka.Chime.CreateAccount
+  ( -- * Creating a Request
+    CreateAccount (..),
+    newCreateAccount,
+
+    -- * Request Lenses
+    createAccount_name,
+
+    -- * Destructuring the Response
+    CreateAccountResponse (..),
+    newCreateAccountResponse,
+
+    -- * Response Lenses
+    createAccountResponse_account,
+    createAccountResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateAccount' smart constructor.
+data CreateAccount = CreateAccount'
+  { -- | The name of the Amazon Chime account.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateAccount' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'createAccount_name' - The name of the Amazon Chime account.
+newCreateAccount ::
+  -- | 'name'
+  Prelude.Text ->
+  CreateAccount
+newCreateAccount pName_ =
+  CreateAccount' {name = pName_}
+
+-- | The name of the Amazon Chime account.
+createAccount_name :: Lens.Lens' CreateAccount Prelude.Text
+createAccount_name = Lens.lens (\CreateAccount' {name} -> name) (\s@CreateAccount' {} a -> s {name = a} :: CreateAccount)
+
+instance Core.AWSRequest CreateAccount where
+  type
+    AWSResponse CreateAccount =
+      CreateAccountResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateAccountResponse'
+            Prelude.<$> (x Data..?> "Account")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateAccount where
+  hashWithSalt _salt CreateAccount' {..} =
+    _salt `Prelude.hashWithSalt` name
+
+instance Prelude.NFData CreateAccount where
+  rnf CreateAccount' {..} = Prelude.rnf name
+
+instance Data.ToHeaders CreateAccount where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON CreateAccount where
+  toJSON CreateAccount' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Name" Data..= name)]
+      )
+
+instance Data.ToPath CreateAccount where
+  toPath = Prelude.const "/accounts"
+
+instance Data.ToQuery CreateAccount where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateAccountResponse' smart constructor.
+data CreateAccountResponse = CreateAccountResponse'
+  { -- | The Amazon Chime account details.
+    account :: Prelude.Maybe Account,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateAccountResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'account', 'createAccountResponse_account' - The Amazon Chime account details.
+--
+-- 'httpStatus', 'createAccountResponse_httpStatus' - The response's http status code.
+newCreateAccountResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateAccountResponse
+newCreateAccountResponse pHttpStatus_ =
+  CreateAccountResponse'
+    { account = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Chime account details.
+createAccountResponse_account :: Lens.Lens' CreateAccountResponse (Prelude.Maybe Account)
+createAccountResponse_account = Lens.lens (\CreateAccountResponse' {account} -> account) (\s@CreateAccountResponse' {} a -> s {account = a} :: CreateAccountResponse)
+
+-- | The response's http status code.
+createAccountResponse_httpStatus :: Lens.Lens' CreateAccountResponse Prelude.Int
+createAccountResponse_httpStatus = Lens.lens (\CreateAccountResponse' {httpStatus} -> httpStatus) (\s@CreateAccountResponse' {} a -> s {httpStatus = a} :: CreateAccountResponse)
+
+instance Prelude.NFData CreateAccountResponse where
+  rnf CreateAccountResponse' {..} =
+    Prelude.rnf account
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/CreateAppInstance.hs b/gen/Amazonka/Chime/CreateAppInstance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/CreateAppInstance.hs
@@ -0,0 +1,206 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.CreateAppInstance
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an Amazon Chime SDK messaging @AppInstance@ under an AWS
+-- account. Only SDK messaging customers use this API. @CreateAppInstance@
+-- supports idempotency behavior as described in the AWS API Standard.
+module Amazonka.Chime.CreateAppInstance
+  ( -- * Creating a Request
+    CreateAppInstance (..),
+    newCreateAppInstance,
+
+    -- * Request Lenses
+    createAppInstance_metadata,
+    createAppInstance_tags,
+    createAppInstance_name,
+    createAppInstance_clientRequestToken,
+
+    -- * Destructuring the Response
+    CreateAppInstanceResponse (..),
+    newCreateAppInstanceResponse,
+
+    -- * Response Lenses
+    createAppInstanceResponse_appInstanceArn,
+    createAppInstanceResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateAppInstance' smart constructor.
+data CreateAppInstance = CreateAppInstance'
+  { -- | The metadata of the @AppInstance@. Limited to a 1KB string in UTF-8.
+    metadata :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | Tags assigned to the @AppInstance@.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | The name of the @AppInstance@.
+    name :: Data.Sensitive Prelude.Text,
+    -- | The @ClientRequestToken@ of the @AppInstance@.
+    clientRequestToken :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateAppInstance' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'metadata', 'createAppInstance_metadata' - The metadata of the @AppInstance@. Limited to a 1KB string in UTF-8.
+--
+-- 'tags', 'createAppInstance_tags' - Tags assigned to the @AppInstance@.
+--
+-- 'name', 'createAppInstance_name' - The name of the @AppInstance@.
+--
+-- 'clientRequestToken', 'createAppInstance_clientRequestToken' - The @ClientRequestToken@ of the @AppInstance@.
+newCreateAppInstance ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'clientRequestToken'
+  Prelude.Text ->
+  CreateAppInstance
+newCreateAppInstance pName_ pClientRequestToken_ =
+  CreateAppInstance'
+    { metadata = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      name = Data._Sensitive Lens.# pName_,
+      clientRequestToken =
+        Data._Sensitive Lens.# pClientRequestToken_
+    }
+
+-- | The metadata of the @AppInstance@. Limited to a 1KB string in UTF-8.
+createAppInstance_metadata :: Lens.Lens' CreateAppInstance (Prelude.Maybe Prelude.Text)
+createAppInstance_metadata = Lens.lens (\CreateAppInstance' {metadata} -> metadata) (\s@CreateAppInstance' {} a -> s {metadata = a} :: CreateAppInstance) Prelude.. Lens.mapping Data._Sensitive
+
+-- | Tags assigned to the @AppInstance@.
+createAppInstance_tags :: Lens.Lens' CreateAppInstance (Prelude.Maybe (Prelude.NonEmpty Tag))
+createAppInstance_tags = Lens.lens (\CreateAppInstance' {tags} -> tags) (\s@CreateAppInstance' {} a -> s {tags = a} :: CreateAppInstance) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the @AppInstance@.
+createAppInstance_name :: Lens.Lens' CreateAppInstance Prelude.Text
+createAppInstance_name = Lens.lens (\CreateAppInstance' {name} -> name) (\s@CreateAppInstance' {} a -> s {name = a} :: CreateAppInstance) Prelude.. Data._Sensitive
+
+-- | The @ClientRequestToken@ of the @AppInstance@.
+createAppInstance_clientRequestToken :: Lens.Lens' CreateAppInstance Prelude.Text
+createAppInstance_clientRequestToken = Lens.lens (\CreateAppInstance' {clientRequestToken} -> clientRequestToken) (\s@CreateAppInstance' {} a -> s {clientRequestToken = a} :: CreateAppInstance) Prelude.. Data._Sensitive
+
+instance Core.AWSRequest CreateAppInstance where
+  type
+    AWSResponse CreateAppInstance =
+      CreateAppInstanceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateAppInstanceResponse'
+            Prelude.<$> (x Data..?> "AppInstanceArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateAppInstance where
+  hashWithSalt _salt CreateAppInstance' {..} =
+    _salt
+      `Prelude.hashWithSalt` metadata
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` clientRequestToken
+
+instance Prelude.NFData CreateAppInstance where
+  rnf CreateAppInstance' {..} =
+    Prelude.rnf metadata
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf clientRequestToken
+
+instance Data.ToHeaders CreateAppInstance where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON CreateAppInstance where
+  toJSON CreateAppInstance' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Metadata" Data..=) Prelude.<$> metadata,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just
+              ("ClientRequestToken" Data..= clientRequestToken)
+          ]
+      )
+
+instance Data.ToPath CreateAppInstance where
+  toPath = Prelude.const "/app-instances"
+
+instance Data.ToQuery CreateAppInstance where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateAppInstanceResponse' smart constructor.
+data CreateAppInstanceResponse = CreateAppInstanceResponse'
+  { -- | The Amazon Resource Number (ARN) of the @AppInstance@.
+    appInstanceArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateAppInstanceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceArn', 'createAppInstanceResponse_appInstanceArn' - The Amazon Resource Number (ARN) of the @AppInstance@.
+--
+-- 'httpStatus', 'createAppInstanceResponse_httpStatus' - The response's http status code.
+newCreateAppInstanceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateAppInstanceResponse
+newCreateAppInstanceResponse pHttpStatus_ =
+  CreateAppInstanceResponse'
+    { appInstanceArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Number (ARN) of the @AppInstance@.
+createAppInstanceResponse_appInstanceArn :: Lens.Lens' CreateAppInstanceResponse (Prelude.Maybe Prelude.Text)
+createAppInstanceResponse_appInstanceArn = Lens.lens (\CreateAppInstanceResponse' {appInstanceArn} -> appInstanceArn) (\s@CreateAppInstanceResponse' {} a -> s {appInstanceArn = a} :: CreateAppInstanceResponse)
+
+-- | The response's http status code.
+createAppInstanceResponse_httpStatus :: Lens.Lens' CreateAppInstanceResponse Prelude.Int
+createAppInstanceResponse_httpStatus = Lens.lens (\CreateAppInstanceResponse' {httpStatus} -> httpStatus) (\s@CreateAppInstanceResponse' {} a -> s {httpStatus = a} :: CreateAppInstanceResponse)
+
+instance Prelude.NFData CreateAppInstanceResponse where
+  rnf CreateAppInstanceResponse' {..} =
+    Prelude.rnf appInstanceArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/CreateAppInstanceAdmin.hs b/gen/Amazonka/Chime/CreateAppInstanceAdmin.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/CreateAppInstanceAdmin.hs
@@ -0,0 +1,206 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.CreateAppInstanceAdmin
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Promotes an @AppInstanceUser@ to an @AppInstanceAdmin@. The promoted
+-- user can perform the following actions.
+--
+-- -   @ChannelModerator@ actions across all channels in the @AppInstance@.
+--
+-- -   @DeleteChannelMessage@ actions.
+--
+-- Only an @AppInstanceUser@ can be promoted to an @AppInstanceAdmin@ role.
+module Amazonka.Chime.CreateAppInstanceAdmin
+  ( -- * Creating a Request
+    CreateAppInstanceAdmin (..),
+    newCreateAppInstanceAdmin,
+
+    -- * Request Lenses
+    createAppInstanceAdmin_appInstanceAdminArn,
+    createAppInstanceAdmin_appInstanceArn,
+
+    -- * Destructuring the Response
+    CreateAppInstanceAdminResponse (..),
+    newCreateAppInstanceAdminResponse,
+
+    -- * Response Lenses
+    createAppInstanceAdminResponse_appInstanceAdmin,
+    createAppInstanceAdminResponse_appInstanceArn,
+    createAppInstanceAdminResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateAppInstanceAdmin' smart constructor.
+data CreateAppInstanceAdmin = CreateAppInstanceAdmin'
+  { -- | The ARN of the administrator of the current @AppInstance@.
+    appInstanceAdminArn :: Prelude.Text,
+    -- | The ARN of the @AppInstance@.
+    appInstanceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateAppInstanceAdmin' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceAdminArn', 'createAppInstanceAdmin_appInstanceAdminArn' - The ARN of the administrator of the current @AppInstance@.
+--
+-- 'appInstanceArn', 'createAppInstanceAdmin_appInstanceArn' - The ARN of the @AppInstance@.
+newCreateAppInstanceAdmin ::
+  -- | 'appInstanceAdminArn'
+  Prelude.Text ->
+  -- | 'appInstanceArn'
+  Prelude.Text ->
+  CreateAppInstanceAdmin
+newCreateAppInstanceAdmin
+  pAppInstanceAdminArn_
+  pAppInstanceArn_ =
+    CreateAppInstanceAdmin'
+      { appInstanceAdminArn =
+          pAppInstanceAdminArn_,
+        appInstanceArn = pAppInstanceArn_
+      }
+
+-- | The ARN of the administrator of the current @AppInstance@.
+createAppInstanceAdmin_appInstanceAdminArn :: Lens.Lens' CreateAppInstanceAdmin Prelude.Text
+createAppInstanceAdmin_appInstanceAdminArn = Lens.lens (\CreateAppInstanceAdmin' {appInstanceAdminArn} -> appInstanceAdminArn) (\s@CreateAppInstanceAdmin' {} a -> s {appInstanceAdminArn = a} :: CreateAppInstanceAdmin)
+
+-- | The ARN of the @AppInstance@.
+createAppInstanceAdmin_appInstanceArn :: Lens.Lens' CreateAppInstanceAdmin Prelude.Text
+createAppInstanceAdmin_appInstanceArn = Lens.lens (\CreateAppInstanceAdmin' {appInstanceArn} -> appInstanceArn) (\s@CreateAppInstanceAdmin' {} a -> s {appInstanceArn = a} :: CreateAppInstanceAdmin)
+
+instance Core.AWSRequest CreateAppInstanceAdmin where
+  type
+    AWSResponse CreateAppInstanceAdmin =
+      CreateAppInstanceAdminResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateAppInstanceAdminResponse'
+            Prelude.<$> (x Data..?> "AppInstanceAdmin")
+            Prelude.<*> (x Data..?> "AppInstanceArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateAppInstanceAdmin where
+  hashWithSalt _salt CreateAppInstanceAdmin' {..} =
+    _salt
+      `Prelude.hashWithSalt` appInstanceAdminArn
+      `Prelude.hashWithSalt` appInstanceArn
+
+instance Prelude.NFData CreateAppInstanceAdmin where
+  rnf CreateAppInstanceAdmin' {..} =
+    Prelude.rnf appInstanceAdminArn
+      `Prelude.seq` Prelude.rnf appInstanceArn
+
+instance Data.ToHeaders CreateAppInstanceAdmin where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON CreateAppInstanceAdmin where
+  toJSON CreateAppInstanceAdmin' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("AppInstanceAdminArn" Data..= appInstanceAdminArn)
+          ]
+      )
+
+instance Data.ToPath CreateAppInstanceAdmin where
+  toPath CreateAppInstanceAdmin' {..} =
+    Prelude.mconcat
+      [ "/app-instances/",
+        Data.toBS appInstanceArn,
+        "/admins"
+      ]
+
+instance Data.ToQuery CreateAppInstanceAdmin where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateAppInstanceAdminResponse' smart constructor.
+data CreateAppInstanceAdminResponse = CreateAppInstanceAdminResponse'
+  { -- | The name and ARN of the admin for the @AppInstance@.
+    appInstanceAdmin :: Prelude.Maybe Identity,
+    -- | The ARN of the of the admin for the @AppInstance@.
+    appInstanceArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateAppInstanceAdminResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceAdmin', 'createAppInstanceAdminResponse_appInstanceAdmin' - The name and ARN of the admin for the @AppInstance@.
+--
+-- 'appInstanceArn', 'createAppInstanceAdminResponse_appInstanceArn' - The ARN of the of the admin for the @AppInstance@.
+--
+-- 'httpStatus', 'createAppInstanceAdminResponse_httpStatus' - The response's http status code.
+newCreateAppInstanceAdminResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateAppInstanceAdminResponse
+newCreateAppInstanceAdminResponse pHttpStatus_ =
+  CreateAppInstanceAdminResponse'
+    { appInstanceAdmin =
+        Prelude.Nothing,
+      appInstanceArn = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The name and ARN of the admin for the @AppInstance@.
+createAppInstanceAdminResponse_appInstanceAdmin :: Lens.Lens' CreateAppInstanceAdminResponse (Prelude.Maybe Identity)
+createAppInstanceAdminResponse_appInstanceAdmin = Lens.lens (\CreateAppInstanceAdminResponse' {appInstanceAdmin} -> appInstanceAdmin) (\s@CreateAppInstanceAdminResponse' {} a -> s {appInstanceAdmin = a} :: CreateAppInstanceAdminResponse)
+
+-- | The ARN of the of the admin for the @AppInstance@.
+createAppInstanceAdminResponse_appInstanceArn :: Lens.Lens' CreateAppInstanceAdminResponse (Prelude.Maybe Prelude.Text)
+createAppInstanceAdminResponse_appInstanceArn = Lens.lens (\CreateAppInstanceAdminResponse' {appInstanceArn} -> appInstanceArn) (\s@CreateAppInstanceAdminResponse' {} a -> s {appInstanceArn = a} :: CreateAppInstanceAdminResponse)
+
+-- | The response's http status code.
+createAppInstanceAdminResponse_httpStatus :: Lens.Lens' CreateAppInstanceAdminResponse Prelude.Int
+createAppInstanceAdminResponse_httpStatus = Lens.lens (\CreateAppInstanceAdminResponse' {httpStatus} -> httpStatus) (\s@CreateAppInstanceAdminResponse' {} a -> s {httpStatus = a} :: CreateAppInstanceAdminResponse)
+
+instance
+  Prelude.NFData
+    CreateAppInstanceAdminResponse
+  where
+  rnf CreateAppInstanceAdminResponse' {..} =
+    Prelude.rnf appInstanceAdmin
+      `Prelude.seq` Prelude.rnf appInstanceArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/CreateAppInstanceUser.hs b/gen/Amazonka/Chime/CreateAppInstanceUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/CreateAppInstanceUser.hs
@@ -0,0 +1,242 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.CreateAppInstanceUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a user under an Amazon Chime @AppInstance@. The request consists
+-- of a unique @appInstanceUserId@ and @Name@ for that user.
+module Amazonka.Chime.CreateAppInstanceUser
+  ( -- * Creating a Request
+    CreateAppInstanceUser (..),
+    newCreateAppInstanceUser,
+
+    -- * Request Lenses
+    createAppInstanceUser_metadata,
+    createAppInstanceUser_tags,
+    createAppInstanceUser_appInstanceArn,
+    createAppInstanceUser_appInstanceUserId,
+    createAppInstanceUser_name,
+    createAppInstanceUser_clientRequestToken,
+
+    -- * Destructuring the Response
+    CreateAppInstanceUserResponse (..),
+    newCreateAppInstanceUserResponse,
+
+    -- * Response Lenses
+    createAppInstanceUserResponse_appInstanceUserArn,
+    createAppInstanceUserResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateAppInstanceUser' smart constructor.
+data CreateAppInstanceUser = CreateAppInstanceUser'
+  { -- | The request\'s metadata. Limited to a 1KB string in UTF-8.
+    metadata :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | Tags assigned to the @AppInstanceUser@.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | The ARN of the @AppInstance@ request.
+    appInstanceArn :: Prelude.Text,
+    -- | The user ID of the @AppInstance@.
+    appInstanceUserId :: Data.Sensitive Prelude.Text,
+    -- | The user\'s name.
+    name :: Data.Sensitive Prelude.Text,
+    -- | The token assigned to the user requesting an @AppInstance@.
+    clientRequestToken :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateAppInstanceUser' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'metadata', 'createAppInstanceUser_metadata' - The request\'s metadata. Limited to a 1KB string in UTF-8.
+--
+-- 'tags', 'createAppInstanceUser_tags' - Tags assigned to the @AppInstanceUser@.
+--
+-- 'appInstanceArn', 'createAppInstanceUser_appInstanceArn' - The ARN of the @AppInstance@ request.
+--
+-- 'appInstanceUserId', 'createAppInstanceUser_appInstanceUserId' - The user ID of the @AppInstance@.
+--
+-- 'name', 'createAppInstanceUser_name' - The user\'s name.
+--
+-- 'clientRequestToken', 'createAppInstanceUser_clientRequestToken' - The token assigned to the user requesting an @AppInstance@.
+newCreateAppInstanceUser ::
+  -- | 'appInstanceArn'
+  Prelude.Text ->
+  -- | 'appInstanceUserId'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'clientRequestToken'
+  Prelude.Text ->
+  CreateAppInstanceUser
+newCreateAppInstanceUser
+  pAppInstanceArn_
+  pAppInstanceUserId_
+  pName_
+  pClientRequestToken_ =
+    CreateAppInstanceUser'
+      { metadata = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        appInstanceArn = pAppInstanceArn_,
+        appInstanceUserId =
+          Data._Sensitive Lens.# pAppInstanceUserId_,
+        name = Data._Sensitive Lens.# pName_,
+        clientRequestToken =
+          Data._Sensitive Lens.# pClientRequestToken_
+      }
+
+-- | The request\'s metadata. Limited to a 1KB string in UTF-8.
+createAppInstanceUser_metadata :: Lens.Lens' CreateAppInstanceUser (Prelude.Maybe Prelude.Text)
+createAppInstanceUser_metadata = Lens.lens (\CreateAppInstanceUser' {metadata} -> metadata) (\s@CreateAppInstanceUser' {} a -> s {metadata = a} :: CreateAppInstanceUser) Prelude.. Lens.mapping Data._Sensitive
+
+-- | Tags assigned to the @AppInstanceUser@.
+createAppInstanceUser_tags :: Lens.Lens' CreateAppInstanceUser (Prelude.Maybe (Prelude.NonEmpty Tag))
+createAppInstanceUser_tags = Lens.lens (\CreateAppInstanceUser' {tags} -> tags) (\s@CreateAppInstanceUser' {} a -> s {tags = a} :: CreateAppInstanceUser) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ARN of the @AppInstance@ request.
+createAppInstanceUser_appInstanceArn :: Lens.Lens' CreateAppInstanceUser Prelude.Text
+createAppInstanceUser_appInstanceArn = Lens.lens (\CreateAppInstanceUser' {appInstanceArn} -> appInstanceArn) (\s@CreateAppInstanceUser' {} a -> s {appInstanceArn = a} :: CreateAppInstanceUser)
+
+-- | The user ID of the @AppInstance@.
+createAppInstanceUser_appInstanceUserId :: Lens.Lens' CreateAppInstanceUser Prelude.Text
+createAppInstanceUser_appInstanceUserId = Lens.lens (\CreateAppInstanceUser' {appInstanceUserId} -> appInstanceUserId) (\s@CreateAppInstanceUser' {} a -> s {appInstanceUserId = a} :: CreateAppInstanceUser) Prelude.. Data._Sensitive
+
+-- | The user\'s name.
+createAppInstanceUser_name :: Lens.Lens' CreateAppInstanceUser Prelude.Text
+createAppInstanceUser_name = Lens.lens (\CreateAppInstanceUser' {name} -> name) (\s@CreateAppInstanceUser' {} a -> s {name = a} :: CreateAppInstanceUser) Prelude.. Data._Sensitive
+
+-- | The token assigned to the user requesting an @AppInstance@.
+createAppInstanceUser_clientRequestToken :: Lens.Lens' CreateAppInstanceUser Prelude.Text
+createAppInstanceUser_clientRequestToken = Lens.lens (\CreateAppInstanceUser' {clientRequestToken} -> clientRequestToken) (\s@CreateAppInstanceUser' {} a -> s {clientRequestToken = a} :: CreateAppInstanceUser) Prelude.. Data._Sensitive
+
+instance Core.AWSRequest CreateAppInstanceUser where
+  type
+    AWSResponse CreateAppInstanceUser =
+      CreateAppInstanceUserResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateAppInstanceUserResponse'
+            Prelude.<$> (x Data..?> "AppInstanceUserArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateAppInstanceUser where
+  hashWithSalt _salt CreateAppInstanceUser' {..} =
+    _salt
+      `Prelude.hashWithSalt` metadata
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` appInstanceArn
+      `Prelude.hashWithSalt` appInstanceUserId
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` clientRequestToken
+
+instance Prelude.NFData CreateAppInstanceUser where
+  rnf CreateAppInstanceUser' {..} =
+    Prelude.rnf metadata
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf appInstanceArn
+      `Prelude.seq` Prelude.rnf appInstanceUserId
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf clientRequestToken
+
+instance Data.ToHeaders CreateAppInstanceUser where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON CreateAppInstanceUser where
+  toJSON CreateAppInstanceUser' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Metadata" Data..=) Prelude.<$> metadata,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("AppInstanceArn" Data..= appInstanceArn),
+            Prelude.Just
+              ("AppInstanceUserId" Data..= appInstanceUserId),
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just
+              ("ClientRequestToken" Data..= clientRequestToken)
+          ]
+      )
+
+instance Data.ToPath CreateAppInstanceUser where
+  toPath = Prelude.const "/app-instance-users"
+
+instance Data.ToQuery CreateAppInstanceUser where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateAppInstanceUserResponse' smart constructor.
+data CreateAppInstanceUserResponse = CreateAppInstanceUserResponse'
+  { -- | The user\'s ARN.
+    appInstanceUserArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateAppInstanceUserResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceUserArn', 'createAppInstanceUserResponse_appInstanceUserArn' - The user\'s ARN.
+--
+-- 'httpStatus', 'createAppInstanceUserResponse_httpStatus' - The response's http status code.
+newCreateAppInstanceUserResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateAppInstanceUserResponse
+newCreateAppInstanceUserResponse pHttpStatus_ =
+  CreateAppInstanceUserResponse'
+    { appInstanceUserArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The user\'s ARN.
+createAppInstanceUserResponse_appInstanceUserArn :: Lens.Lens' CreateAppInstanceUserResponse (Prelude.Maybe Prelude.Text)
+createAppInstanceUserResponse_appInstanceUserArn = Lens.lens (\CreateAppInstanceUserResponse' {appInstanceUserArn} -> appInstanceUserArn) (\s@CreateAppInstanceUserResponse' {} a -> s {appInstanceUserArn = a} :: CreateAppInstanceUserResponse)
+
+-- | The response's http status code.
+createAppInstanceUserResponse_httpStatus :: Lens.Lens' CreateAppInstanceUserResponse Prelude.Int
+createAppInstanceUserResponse_httpStatus = Lens.lens (\CreateAppInstanceUserResponse' {httpStatus} -> httpStatus) (\s@CreateAppInstanceUserResponse' {} a -> s {httpStatus = a} :: CreateAppInstanceUserResponse)
+
+instance Prelude.NFData CreateAppInstanceUserResponse where
+  rnf CreateAppInstanceUserResponse' {..} =
+    Prelude.rnf appInstanceUserArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/CreateAttendee.hs b/gen/Amazonka/Chime/CreateAttendee.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/CreateAttendee.hs
@@ -0,0 +1,197 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.CreateAttendee
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new attendee for an active Amazon Chime SDK meeting. For more
+-- information about the Amazon Chime SDK, see
+-- <https://docs.aws.amazon.com/chime/latest/dg/meetings-sdk.html Using the Amazon Chime SDK>
+-- in the /Amazon Chime Developer Guide/.
+module Amazonka.Chime.CreateAttendee
+  ( -- * Creating a Request
+    CreateAttendee (..),
+    newCreateAttendee,
+
+    -- * Request Lenses
+    createAttendee_tags,
+    createAttendee_meetingId,
+    createAttendee_externalUserId,
+
+    -- * Destructuring the Response
+    CreateAttendeeResponse (..),
+    newCreateAttendeeResponse,
+
+    -- * Response Lenses
+    createAttendeeResponse_attendee,
+    createAttendeeResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateAttendee' smart constructor.
+data CreateAttendee = CreateAttendee'
+  { -- | The tag key-value pairs.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | The Amazon Chime SDK meeting ID.
+    meetingId :: Prelude.Text,
+    -- | The Amazon Chime SDK external user ID. An idempotency token. Links the
+    -- attendee to an identity managed by a builder application.
+    externalUserId :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateAttendee' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tags', 'createAttendee_tags' - The tag key-value pairs.
+--
+-- 'meetingId', 'createAttendee_meetingId' - The Amazon Chime SDK meeting ID.
+--
+-- 'externalUserId', 'createAttendee_externalUserId' - The Amazon Chime SDK external user ID. An idempotency token. Links the
+-- attendee to an identity managed by a builder application.
+newCreateAttendee ::
+  -- | 'meetingId'
+  Prelude.Text ->
+  -- | 'externalUserId'
+  Prelude.Text ->
+  CreateAttendee
+newCreateAttendee pMeetingId_ pExternalUserId_ =
+  CreateAttendee'
+    { tags = Prelude.Nothing,
+      meetingId = pMeetingId_,
+      externalUserId =
+        Data._Sensitive Lens.# pExternalUserId_
+    }
+
+-- | The tag key-value pairs.
+createAttendee_tags :: Lens.Lens' CreateAttendee (Prelude.Maybe (Prelude.NonEmpty Tag))
+createAttendee_tags = Lens.lens (\CreateAttendee' {tags} -> tags) (\s@CreateAttendee' {} a -> s {tags = a} :: CreateAttendee) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Chime SDK meeting ID.
+createAttendee_meetingId :: Lens.Lens' CreateAttendee Prelude.Text
+createAttendee_meetingId = Lens.lens (\CreateAttendee' {meetingId} -> meetingId) (\s@CreateAttendee' {} a -> s {meetingId = a} :: CreateAttendee)
+
+-- | The Amazon Chime SDK external user ID. An idempotency token. Links the
+-- attendee to an identity managed by a builder application.
+createAttendee_externalUserId :: Lens.Lens' CreateAttendee Prelude.Text
+createAttendee_externalUserId = Lens.lens (\CreateAttendee' {externalUserId} -> externalUserId) (\s@CreateAttendee' {} a -> s {externalUserId = a} :: CreateAttendee) Prelude.. Data._Sensitive
+
+instance Core.AWSRequest CreateAttendee where
+  type
+    AWSResponse CreateAttendee =
+      CreateAttendeeResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateAttendeeResponse'
+            Prelude.<$> (x Data..?> "Attendee")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateAttendee where
+  hashWithSalt _salt CreateAttendee' {..} =
+    _salt
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` meetingId
+      `Prelude.hashWithSalt` externalUserId
+
+instance Prelude.NFData CreateAttendee where
+  rnf CreateAttendee' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf meetingId
+      `Prelude.seq` Prelude.rnf externalUserId
+
+instance Data.ToHeaders CreateAttendee where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON CreateAttendee where
+  toJSON CreateAttendee' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("ExternalUserId" Data..= externalUserId)
+          ]
+      )
+
+instance Data.ToPath CreateAttendee where
+  toPath CreateAttendee' {..} =
+    Prelude.mconcat
+      ["/meetings/", Data.toBS meetingId, "/attendees"]
+
+instance Data.ToQuery CreateAttendee where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateAttendeeResponse' smart constructor.
+data CreateAttendeeResponse = CreateAttendeeResponse'
+  { -- | The attendee information, including attendee ID and join token.
+    attendee :: Prelude.Maybe Attendee,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateAttendeeResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'attendee', 'createAttendeeResponse_attendee' - The attendee information, including attendee ID and join token.
+--
+-- 'httpStatus', 'createAttendeeResponse_httpStatus' - The response's http status code.
+newCreateAttendeeResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateAttendeeResponse
+newCreateAttendeeResponse pHttpStatus_ =
+  CreateAttendeeResponse'
+    { attendee = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The attendee information, including attendee ID and join token.
+createAttendeeResponse_attendee :: Lens.Lens' CreateAttendeeResponse (Prelude.Maybe Attendee)
+createAttendeeResponse_attendee = Lens.lens (\CreateAttendeeResponse' {attendee} -> attendee) (\s@CreateAttendeeResponse' {} a -> s {attendee = a} :: CreateAttendeeResponse)
+
+-- | The response's http status code.
+createAttendeeResponse_httpStatus :: Lens.Lens' CreateAttendeeResponse Prelude.Int
+createAttendeeResponse_httpStatus = Lens.lens (\CreateAttendeeResponse' {httpStatus} -> httpStatus) (\s@CreateAttendeeResponse' {} a -> s {httpStatus = a} :: CreateAttendeeResponse)
+
+instance Prelude.NFData CreateAttendeeResponse where
+  rnf CreateAttendeeResponse' {..} =
+    Prelude.rnf attendee
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/CreateBot.hs b/gen/Amazonka/Chime/CreateBot.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/CreateBot.hs
@@ -0,0 +1,187 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.CreateBot
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a bot for an Amazon Chime Enterprise account.
+module Amazonka.Chime.CreateBot
+  ( -- * Creating a Request
+    CreateBot (..),
+    newCreateBot,
+
+    -- * Request Lenses
+    createBot_domain,
+    createBot_displayName,
+    createBot_accountId,
+
+    -- * Destructuring the Response
+    CreateBotResponse (..),
+    newCreateBotResponse,
+
+    -- * Response Lenses
+    createBotResponse_bot,
+    createBotResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateBot' smart constructor.
+data CreateBot = CreateBot'
+  { -- | The domain of the Amazon Chime Enterprise account.
+    domain :: Prelude.Maybe Prelude.Text,
+    -- | The bot display name.
+    displayName :: Data.Sensitive Prelude.Text,
+    -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateBot' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'domain', 'createBot_domain' - The domain of the Amazon Chime Enterprise account.
+--
+-- 'displayName', 'createBot_displayName' - The bot display name.
+--
+-- 'accountId', 'createBot_accountId' - The Amazon Chime account ID.
+newCreateBot ::
+  -- | 'displayName'
+  Prelude.Text ->
+  -- | 'accountId'
+  Prelude.Text ->
+  CreateBot
+newCreateBot pDisplayName_ pAccountId_ =
+  CreateBot'
+    { domain = Prelude.Nothing,
+      displayName = Data._Sensitive Lens.# pDisplayName_,
+      accountId = pAccountId_
+    }
+
+-- | The domain of the Amazon Chime Enterprise account.
+createBot_domain :: Lens.Lens' CreateBot (Prelude.Maybe Prelude.Text)
+createBot_domain = Lens.lens (\CreateBot' {domain} -> domain) (\s@CreateBot' {} a -> s {domain = a} :: CreateBot)
+
+-- | The bot display name.
+createBot_displayName :: Lens.Lens' CreateBot Prelude.Text
+createBot_displayName = Lens.lens (\CreateBot' {displayName} -> displayName) (\s@CreateBot' {} a -> s {displayName = a} :: CreateBot) Prelude.. Data._Sensitive
+
+-- | The Amazon Chime account ID.
+createBot_accountId :: Lens.Lens' CreateBot Prelude.Text
+createBot_accountId = Lens.lens (\CreateBot' {accountId} -> accountId) (\s@CreateBot' {} a -> s {accountId = a} :: CreateBot)
+
+instance Core.AWSRequest CreateBot where
+  type AWSResponse CreateBot = CreateBotResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateBotResponse'
+            Prelude.<$> (x Data..?> "Bot")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateBot where
+  hashWithSalt _salt CreateBot' {..} =
+    _salt
+      `Prelude.hashWithSalt` domain
+      `Prelude.hashWithSalt` displayName
+      `Prelude.hashWithSalt` accountId
+
+instance Prelude.NFData CreateBot where
+  rnf CreateBot' {..} =
+    Prelude.rnf domain
+      `Prelude.seq` Prelude.rnf displayName
+      `Prelude.seq` Prelude.rnf accountId
+
+instance Data.ToHeaders CreateBot where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON CreateBot where
+  toJSON CreateBot' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Domain" Data..=) Prelude.<$> domain,
+            Prelude.Just ("DisplayName" Data..= displayName)
+          ]
+      )
+
+instance Data.ToPath CreateBot where
+  toPath CreateBot' {..} =
+    Prelude.mconcat
+      ["/accounts/", Data.toBS accountId, "/bots"]
+
+instance Data.ToQuery CreateBot where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateBotResponse' smart constructor.
+data CreateBotResponse = CreateBotResponse'
+  { -- | The bot details.
+    bot :: Prelude.Maybe Bot,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateBotResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bot', 'createBotResponse_bot' - The bot details.
+--
+-- 'httpStatus', 'createBotResponse_httpStatus' - The response's http status code.
+newCreateBotResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateBotResponse
+newCreateBotResponse pHttpStatus_ =
+  CreateBotResponse'
+    { bot = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The bot details.
+createBotResponse_bot :: Lens.Lens' CreateBotResponse (Prelude.Maybe Bot)
+createBotResponse_bot = Lens.lens (\CreateBotResponse' {bot} -> bot) (\s@CreateBotResponse' {} a -> s {bot = a} :: CreateBotResponse)
+
+-- | The response's http status code.
+createBotResponse_httpStatus :: Lens.Lens' CreateBotResponse Prelude.Int
+createBotResponse_httpStatus = Lens.lens (\CreateBotResponse' {httpStatus} -> httpStatus) (\s@CreateBotResponse' {} a -> s {httpStatus = a} :: CreateBotResponse)
+
+instance Prelude.NFData CreateBotResponse where
+  rnf CreateBotResponse' {..} =
+    Prelude.rnf bot
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/CreateChannel.hs b/gen/Amazonka/Chime/CreateChannel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/CreateChannel.hs
@@ -0,0 +1,284 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.CreateChannel
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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.
+module Amazonka.Chime.CreateChannel
+  ( -- * Creating a Request
+    CreateChannel (..),
+    newCreateChannel,
+
+    -- * Request Lenses
+    createChannel_chimeBearer,
+    createChannel_metadata,
+    createChannel_mode,
+    createChannel_privacy,
+    createChannel_tags,
+    createChannel_appInstanceArn,
+    createChannel_name,
+    createChannel_clientRequestToken,
+
+    -- * Destructuring the Response
+    CreateChannelResponse (..),
+    newCreateChannelResponse,
+
+    -- * Response Lenses
+    createChannelResponse_channelArn,
+    createChannelResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateChannel' smart constructor.
+data CreateChannel = CreateChannel'
+  { -- | The @AppInstanceUserArn@ of the user that makes the API call.
+    chimeBearer :: Prelude.Maybe Prelude.Text,
+    -- | The metadata of the creation request. Limited to 1KB and UTF-8.
+    metadata :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | 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.
+    mode :: Prelude.Maybe ChannelMode,
+    -- | 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@.
+    privacy :: Prelude.Maybe ChannelPrivacy,
+    -- | The tags for the creation request.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | The ARN of the channel request.
+    appInstanceArn :: Prelude.Text,
+    -- | The name of the channel.
+    name :: Data.Sensitive Prelude.Text,
+    -- | The client token for the request. An @Idempotency@ token.
+    clientRequestToken :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateChannel' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chimeBearer', 'createChannel_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
+--
+-- 'metadata', 'createChannel_metadata' - The metadata of the creation request. Limited to 1KB and UTF-8.
+--
+-- 'mode', 'createChannel_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', 'createChannel_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', 'createChannel_tags' - The tags for the creation request.
+--
+-- 'appInstanceArn', 'createChannel_appInstanceArn' - The ARN of the channel request.
+--
+-- 'name', 'createChannel_name' - The name of the channel.
+--
+-- 'clientRequestToken', 'createChannel_clientRequestToken' - The client token for the request. An @Idempotency@ token.
+newCreateChannel ::
+  -- | 'appInstanceArn'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'clientRequestToken'
+  Prelude.Text ->
+  CreateChannel
+newCreateChannel
+  pAppInstanceArn_
+  pName_
+  pClientRequestToken_ =
+    CreateChannel'
+      { chimeBearer = Prelude.Nothing,
+        metadata = Prelude.Nothing,
+        mode = Prelude.Nothing,
+        privacy = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        appInstanceArn = pAppInstanceArn_,
+        name = Data._Sensitive Lens.# pName_,
+        clientRequestToken =
+          Data._Sensitive Lens.# pClientRequestToken_
+      }
+
+-- | The @AppInstanceUserArn@ of the user that makes the API call.
+createChannel_chimeBearer :: Lens.Lens' CreateChannel (Prelude.Maybe Prelude.Text)
+createChannel_chimeBearer = Lens.lens (\CreateChannel' {chimeBearer} -> chimeBearer) (\s@CreateChannel' {} a -> s {chimeBearer = a} :: CreateChannel)
+
+-- | The metadata of the creation request. Limited to 1KB and UTF-8.
+createChannel_metadata :: Lens.Lens' CreateChannel (Prelude.Maybe Prelude.Text)
+createChannel_metadata = Lens.lens (\CreateChannel' {metadata} -> metadata) (\s@CreateChannel' {} a -> s {metadata = a} :: CreateChannel) Prelude.. Lens.mapping Data._Sensitive
+
+-- | 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.
+createChannel_mode :: Lens.Lens' CreateChannel (Prelude.Maybe ChannelMode)
+createChannel_mode = Lens.lens (\CreateChannel' {mode} -> mode) (\s@CreateChannel' {} a -> s {mode = a} :: CreateChannel)
+
+-- | 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@.
+createChannel_privacy :: Lens.Lens' CreateChannel (Prelude.Maybe ChannelPrivacy)
+createChannel_privacy = Lens.lens (\CreateChannel' {privacy} -> privacy) (\s@CreateChannel' {} a -> s {privacy = a} :: CreateChannel)
+
+-- | The tags for the creation request.
+createChannel_tags :: Lens.Lens' CreateChannel (Prelude.Maybe (Prelude.NonEmpty Tag))
+createChannel_tags = Lens.lens (\CreateChannel' {tags} -> tags) (\s@CreateChannel' {} a -> s {tags = a} :: CreateChannel) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ARN of the channel request.
+createChannel_appInstanceArn :: Lens.Lens' CreateChannel Prelude.Text
+createChannel_appInstanceArn = Lens.lens (\CreateChannel' {appInstanceArn} -> appInstanceArn) (\s@CreateChannel' {} a -> s {appInstanceArn = a} :: CreateChannel)
+
+-- | The name of the channel.
+createChannel_name :: Lens.Lens' CreateChannel Prelude.Text
+createChannel_name = Lens.lens (\CreateChannel' {name} -> name) (\s@CreateChannel' {} a -> s {name = a} :: CreateChannel) Prelude.. Data._Sensitive
+
+-- | The client token for the request. An @Idempotency@ token.
+createChannel_clientRequestToken :: Lens.Lens' CreateChannel Prelude.Text
+createChannel_clientRequestToken = Lens.lens (\CreateChannel' {clientRequestToken} -> clientRequestToken) (\s@CreateChannel' {} a -> s {clientRequestToken = a} :: CreateChannel) Prelude.. Data._Sensitive
+
+instance Core.AWSRequest CreateChannel where
+  type
+    AWSResponse CreateChannel =
+      CreateChannelResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateChannelResponse'
+            Prelude.<$> (x Data..?> "ChannelArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateChannel where
+  hashWithSalt _salt CreateChannel' {..} =
+    _salt
+      `Prelude.hashWithSalt` chimeBearer
+      `Prelude.hashWithSalt` metadata
+      `Prelude.hashWithSalt` mode
+      `Prelude.hashWithSalt` privacy
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` appInstanceArn
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` clientRequestToken
+
+instance Prelude.NFData CreateChannel where
+  rnf CreateChannel' {..} =
+    Prelude.rnf chimeBearer
+      `Prelude.seq` Prelude.rnf metadata
+      `Prelude.seq` Prelude.rnf mode
+      `Prelude.seq` Prelude.rnf privacy
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf appInstanceArn
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf clientRequestToken
+
+instance Data.ToHeaders CreateChannel where
+  toHeaders CreateChannel' {..} =
+    Prelude.mconcat
+      ["x-amz-chime-bearer" Data.=# chimeBearer]
+
+instance Data.ToJSON CreateChannel where
+  toJSON CreateChannel' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Metadata" Data..=) Prelude.<$> metadata,
+            ("Mode" Data..=) Prelude.<$> mode,
+            ("Privacy" Data..=) Prelude.<$> privacy,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("AppInstanceArn" Data..= appInstanceArn),
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just
+              ("ClientRequestToken" Data..= clientRequestToken)
+          ]
+      )
+
+instance Data.ToPath CreateChannel where
+  toPath = Prelude.const "/channels"
+
+instance Data.ToQuery CreateChannel where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateChannelResponse' smart constructor.
+data CreateChannelResponse = CreateChannelResponse'
+  { -- | The ARN of the channel.
+    channelArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateChannelResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channelArn', 'createChannelResponse_channelArn' - The ARN of the channel.
+--
+-- 'httpStatus', 'createChannelResponse_httpStatus' - The response's http status code.
+newCreateChannelResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateChannelResponse
+newCreateChannelResponse pHttpStatus_ =
+  CreateChannelResponse'
+    { channelArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of the channel.
+createChannelResponse_channelArn :: Lens.Lens' CreateChannelResponse (Prelude.Maybe Prelude.Text)
+createChannelResponse_channelArn = Lens.lens (\CreateChannelResponse' {channelArn} -> channelArn) (\s@CreateChannelResponse' {} a -> s {channelArn = a} :: CreateChannelResponse)
+
+-- | The response's http status code.
+createChannelResponse_httpStatus :: Lens.Lens' CreateChannelResponse Prelude.Int
+createChannelResponse_httpStatus = Lens.lens (\CreateChannelResponse' {httpStatus} -> httpStatus) (\s@CreateChannelResponse' {} a -> s {httpStatus = a} :: CreateChannelResponse)
+
+instance Prelude.NFData CreateChannelResponse where
+  rnf CreateChannelResponse' {..} =
+    Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/CreateChannelBan.hs b/gen/Amazonka/Chime/CreateChannelBan.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/CreateChannelBan.hs
@@ -0,0 +1,212 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.CreateChannelBan
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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.
+module Amazonka.Chime.CreateChannelBan
+  ( -- * Creating a Request
+    CreateChannelBan (..),
+    newCreateChannelBan,
+
+    -- * Request Lenses
+    createChannelBan_chimeBearer,
+    createChannelBan_channelArn,
+    createChannelBan_memberArn,
+
+    -- * Destructuring the Response
+    CreateChannelBanResponse (..),
+    newCreateChannelBanResponse,
+
+    -- * Response Lenses
+    createChannelBanResponse_channelArn,
+    createChannelBanResponse_member,
+    createChannelBanResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateChannelBan' smart constructor.
+data CreateChannelBan = CreateChannelBan'
+  { -- | The @AppInstanceUserArn@ of the user that makes the API call.
+    chimeBearer :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the ban request.
+    channelArn :: Prelude.Text,
+    -- | The ARN of the member being banned.
+    memberArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateChannelBan' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chimeBearer', 'createChannelBan_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
+--
+-- 'channelArn', 'createChannelBan_channelArn' - The ARN of the ban request.
+--
+-- 'memberArn', 'createChannelBan_memberArn' - The ARN of the member being banned.
+newCreateChannelBan ::
+  -- | 'channelArn'
+  Prelude.Text ->
+  -- | 'memberArn'
+  Prelude.Text ->
+  CreateChannelBan
+newCreateChannelBan pChannelArn_ pMemberArn_ =
+  CreateChannelBan'
+    { chimeBearer = Prelude.Nothing,
+      channelArn = pChannelArn_,
+      memberArn = pMemberArn_
+    }
+
+-- | The @AppInstanceUserArn@ of the user that makes the API call.
+createChannelBan_chimeBearer :: Lens.Lens' CreateChannelBan (Prelude.Maybe Prelude.Text)
+createChannelBan_chimeBearer = Lens.lens (\CreateChannelBan' {chimeBearer} -> chimeBearer) (\s@CreateChannelBan' {} a -> s {chimeBearer = a} :: CreateChannelBan)
+
+-- | The ARN of the ban request.
+createChannelBan_channelArn :: Lens.Lens' CreateChannelBan Prelude.Text
+createChannelBan_channelArn = Lens.lens (\CreateChannelBan' {channelArn} -> channelArn) (\s@CreateChannelBan' {} a -> s {channelArn = a} :: CreateChannelBan)
+
+-- | The ARN of the member being banned.
+createChannelBan_memberArn :: Lens.Lens' CreateChannelBan Prelude.Text
+createChannelBan_memberArn = Lens.lens (\CreateChannelBan' {memberArn} -> memberArn) (\s@CreateChannelBan' {} a -> s {memberArn = a} :: CreateChannelBan)
+
+instance Core.AWSRequest CreateChannelBan where
+  type
+    AWSResponse CreateChannelBan =
+      CreateChannelBanResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateChannelBanResponse'
+            Prelude.<$> (x Data..?> "ChannelArn")
+            Prelude.<*> (x Data..?> "Member")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateChannelBan where
+  hashWithSalt _salt CreateChannelBan' {..} =
+    _salt
+      `Prelude.hashWithSalt` chimeBearer
+      `Prelude.hashWithSalt` channelArn
+      `Prelude.hashWithSalt` memberArn
+
+instance Prelude.NFData CreateChannelBan where
+  rnf CreateChannelBan' {..} =
+    Prelude.rnf chimeBearer
+      `Prelude.seq` Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf memberArn
+
+instance Data.ToHeaders CreateChannelBan where
+  toHeaders CreateChannelBan' {..} =
+    Prelude.mconcat
+      ["x-amz-chime-bearer" Data.=# chimeBearer]
+
+instance Data.ToJSON CreateChannelBan where
+  toJSON CreateChannelBan' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("MemberArn" Data..= memberArn)]
+      )
+
+instance Data.ToPath CreateChannelBan where
+  toPath CreateChannelBan' {..} =
+    Prelude.mconcat
+      ["/channels/", Data.toBS channelArn, "/bans"]
+
+instance Data.ToQuery CreateChannelBan where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateChannelBanResponse' smart constructor.
+data CreateChannelBanResponse = CreateChannelBanResponse'
+  { -- | The ARN of the response to the ban request.
+    channelArn :: Prelude.Maybe Prelude.Text,
+    -- | The @ChannelArn@ and @BannedIdentity@ of the member in the ban response.
+    member :: Prelude.Maybe Identity,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateChannelBanResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channelArn', 'createChannelBanResponse_channelArn' - The ARN of the response to the ban request.
+--
+-- 'member', 'createChannelBanResponse_member' - The @ChannelArn@ and @BannedIdentity@ of the member in the ban response.
+--
+-- 'httpStatus', 'createChannelBanResponse_httpStatus' - The response's http status code.
+newCreateChannelBanResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateChannelBanResponse
+newCreateChannelBanResponse pHttpStatus_ =
+  CreateChannelBanResponse'
+    { channelArn =
+        Prelude.Nothing,
+      member = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of the response to the ban request.
+createChannelBanResponse_channelArn :: Lens.Lens' CreateChannelBanResponse (Prelude.Maybe Prelude.Text)
+createChannelBanResponse_channelArn = Lens.lens (\CreateChannelBanResponse' {channelArn} -> channelArn) (\s@CreateChannelBanResponse' {} a -> s {channelArn = a} :: CreateChannelBanResponse)
+
+-- | The @ChannelArn@ and @BannedIdentity@ of the member in the ban response.
+createChannelBanResponse_member :: Lens.Lens' CreateChannelBanResponse (Prelude.Maybe Identity)
+createChannelBanResponse_member = Lens.lens (\CreateChannelBanResponse' {member} -> member) (\s@CreateChannelBanResponse' {} a -> s {member = a} :: CreateChannelBanResponse)
+
+-- | The response's http status code.
+createChannelBanResponse_httpStatus :: Lens.Lens' CreateChannelBanResponse Prelude.Int
+createChannelBanResponse_httpStatus = Lens.lens (\CreateChannelBanResponse' {httpStatus} -> httpStatus) (\s@CreateChannelBanResponse' {} a -> s {httpStatus = a} :: CreateChannelBanResponse)
+
+instance Prelude.NFData CreateChannelBanResponse where
+  rnf CreateChannelBanResponse' {..} =
+    Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf member
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/CreateChannelMembership.hs b/gen/Amazonka/Chime/CreateChannelMembership.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/CreateChannelMembership.hs
@@ -0,0 +1,259 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.CreateChannelMembership
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds a user to a channel. The @InvitedBy@ response field 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.
+module Amazonka.Chime.CreateChannelMembership
+  ( -- * Creating a Request
+    CreateChannelMembership (..),
+    newCreateChannelMembership,
+
+    -- * Request Lenses
+    createChannelMembership_chimeBearer,
+    createChannelMembership_channelArn,
+    createChannelMembership_memberArn,
+    createChannelMembership_type,
+
+    -- * Destructuring the Response
+    CreateChannelMembershipResponse (..),
+    newCreateChannelMembershipResponse,
+
+    -- * Response Lenses
+    createChannelMembershipResponse_channelArn,
+    createChannelMembershipResponse_member,
+    createChannelMembershipResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateChannelMembership' smart constructor.
+data CreateChannelMembership = CreateChannelMembership'
+  { -- | The @AppInstanceUserArn@ of the user that makes the API call.
+    chimeBearer :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the channel to which you\'re adding users.
+    channelArn :: Prelude.Text,
+    -- | The ARN of the member you want to add to the channel.
+    memberArn :: Prelude.Text,
+    -- | 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.
+    type' :: ChannelMembershipType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateChannelMembership' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chimeBearer', 'createChannelMembership_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
+--
+-- 'channelArn', 'createChannelMembership_channelArn' - The ARN of the channel to which you\'re adding users.
+--
+-- 'memberArn', 'createChannelMembership_memberArn' - The ARN of the member you want to add to the channel.
+--
+-- 'type'', 'createChannelMembership_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.
+newCreateChannelMembership ::
+  -- | 'channelArn'
+  Prelude.Text ->
+  -- | 'memberArn'
+  Prelude.Text ->
+  -- | 'type''
+  ChannelMembershipType ->
+  CreateChannelMembership
+newCreateChannelMembership
+  pChannelArn_
+  pMemberArn_
+  pType_ =
+    CreateChannelMembership'
+      { chimeBearer =
+          Prelude.Nothing,
+        channelArn = pChannelArn_,
+        memberArn = pMemberArn_,
+        type' = pType_
+      }
+
+-- | The @AppInstanceUserArn@ of the user that makes the API call.
+createChannelMembership_chimeBearer :: Lens.Lens' CreateChannelMembership (Prelude.Maybe Prelude.Text)
+createChannelMembership_chimeBearer = Lens.lens (\CreateChannelMembership' {chimeBearer} -> chimeBearer) (\s@CreateChannelMembership' {} a -> s {chimeBearer = a} :: CreateChannelMembership)
+
+-- | The ARN of the channel to which you\'re adding users.
+createChannelMembership_channelArn :: Lens.Lens' CreateChannelMembership Prelude.Text
+createChannelMembership_channelArn = Lens.lens (\CreateChannelMembership' {channelArn} -> channelArn) (\s@CreateChannelMembership' {} a -> s {channelArn = a} :: CreateChannelMembership)
+
+-- | The ARN of the member you want to add to the channel.
+createChannelMembership_memberArn :: Lens.Lens' CreateChannelMembership Prelude.Text
+createChannelMembership_memberArn = Lens.lens (\CreateChannelMembership' {memberArn} -> memberArn) (\s@CreateChannelMembership' {} a -> s {memberArn = a} :: CreateChannelMembership)
+
+-- | 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.
+createChannelMembership_type :: Lens.Lens' CreateChannelMembership ChannelMembershipType
+createChannelMembership_type = Lens.lens (\CreateChannelMembership' {type'} -> type') (\s@CreateChannelMembership' {} a -> s {type' = a} :: CreateChannelMembership)
+
+instance Core.AWSRequest CreateChannelMembership where
+  type
+    AWSResponse CreateChannelMembership =
+      CreateChannelMembershipResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateChannelMembershipResponse'
+            Prelude.<$> (x Data..?> "ChannelArn")
+            Prelude.<*> (x Data..?> "Member")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateChannelMembership where
+  hashWithSalt _salt CreateChannelMembership' {..} =
+    _salt
+      `Prelude.hashWithSalt` chimeBearer
+      `Prelude.hashWithSalt` channelArn
+      `Prelude.hashWithSalt` memberArn
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData CreateChannelMembership where
+  rnf CreateChannelMembership' {..} =
+    Prelude.rnf chimeBearer
+      `Prelude.seq` Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf memberArn
+      `Prelude.seq` Prelude.rnf type'
+
+instance Data.ToHeaders CreateChannelMembership where
+  toHeaders CreateChannelMembership' {..} =
+    Prelude.mconcat
+      ["x-amz-chime-bearer" Data.=# chimeBearer]
+
+instance Data.ToJSON CreateChannelMembership where
+  toJSON CreateChannelMembership' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("MemberArn" Data..= memberArn),
+            Prelude.Just ("Type" Data..= type')
+          ]
+      )
+
+instance Data.ToPath CreateChannelMembership where
+  toPath CreateChannelMembership' {..} =
+    Prelude.mconcat
+      ["/channels/", Data.toBS channelArn, "/memberships"]
+
+instance Data.ToQuery CreateChannelMembership where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateChannelMembershipResponse' smart constructor.
+data CreateChannelMembershipResponse = CreateChannelMembershipResponse'
+  { -- | The ARN of the channel.
+    channelArn :: Prelude.Maybe Prelude.Text,
+    -- | The ARN and metadata of the member being added.
+    member :: Prelude.Maybe Identity,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateChannelMembershipResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channelArn', 'createChannelMembershipResponse_channelArn' - The ARN of the channel.
+--
+-- 'member', 'createChannelMembershipResponse_member' - The ARN and metadata of the member being added.
+--
+-- 'httpStatus', 'createChannelMembershipResponse_httpStatus' - The response's http status code.
+newCreateChannelMembershipResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateChannelMembershipResponse
+newCreateChannelMembershipResponse pHttpStatus_ =
+  CreateChannelMembershipResponse'
+    { channelArn =
+        Prelude.Nothing,
+      member = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of the channel.
+createChannelMembershipResponse_channelArn :: Lens.Lens' CreateChannelMembershipResponse (Prelude.Maybe Prelude.Text)
+createChannelMembershipResponse_channelArn = Lens.lens (\CreateChannelMembershipResponse' {channelArn} -> channelArn) (\s@CreateChannelMembershipResponse' {} a -> s {channelArn = a} :: CreateChannelMembershipResponse)
+
+-- | The ARN and metadata of the member being added.
+createChannelMembershipResponse_member :: Lens.Lens' CreateChannelMembershipResponse (Prelude.Maybe Identity)
+createChannelMembershipResponse_member = Lens.lens (\CreateChannelMembershipResponse' {member} -> member) (\s@CreateChannelMembershipResponse' {} a -> s {member = a} :: CreateChannelMembershipResponse)
+
+-- | The response's http status code.
+createChannelMembershipResponse_httpStatus :: Lens.Lens' CreateChannelMembershipResponse Prelude.Int
+createChannelMembershipResponse_httpStatus = Lens.lens (\CreateChannelMembershipResponse' {httpStatus} -> httpStatus) (\s@CreateChannelMembershipResponse' {} a -> s {httpStatus = a} :: CreateChannelMembershipResponse)
+
+instance
+  Prelude.NFData
+    CreateChannelMembershipResponse
+  where
+  rnf CreateChannelMembershipResponse' {..} =
+    Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf member
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/CreateChannelModerator.hs b/gen/Amazonka/Chime/CreateChannelModerator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/CreateChannelModerator.hs
@@ -0,0 +1,224 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.CreateChannelModerator
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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.
+module Amazonka.Chime.CreateChannelModerator
+  ( -- * Creating a Request
+    CreateChannelModerator (..),
+    newCreateChannelModerator,
+
+    -- * Request Lenses
+    createChannelModerator_chimeBearer,
+    createChannelModerator_channelArn,
+    createChannelModerator_channelModeratorArn,
+
+    -- * Destructuring the Response
+    CreateChannelModeratorResponse (..),
+    newCreateChannelModeratorResponse,
+
+    -- * Response Lenses
+    createChannelModeratorResponse_channelArn,
+    createChannelModeratorResponse_channelModerator,
+    createChannelModeratorResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateChannelModerator' smart constructor.
+data CreateChannelModerator = CreateChannelModerator'
+  { -- | The @AppInstanceUserArn@ of the user that makes the API call.
+    chimeBearer :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the channel.
+    channelArn :: Prelude.Text,
+    -- | The ARN of the moderator.
+    channelModeratorArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateChannelModerator' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chimeBearer', 'createChannelModerator_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
+--
+-- 'channelArn', 'createChannelModerator_channelArn' - The ARN of the channel.
+--
+-- 'channelModeratorArn', 'createChannelModerator_channelModeratorArn' - The ARN of the moderator.
+newCreateChannelModerator ::
+  -- | 'channelArn'
+  Prelude.Text ->
+  -- | 'channelModeratorArn'
+  Prelude.Text ->
+  CreateChannelModerator
+newCreateChannelModerator
+  pChannelArn_
+  pChannelModeratorArn_ =
+    CreateChannelModerator'
+      { chimeBearer =
+          Prelude.Nothing,
+        channelArn = pChannelArn_,
+        channelModeratorArn = pChannelModeratorArn_
+      }
+
+-- | The @AppInstanceUserArn@ of the user that makes the API call.
+createChannelModerator_chimeBearer :: Lens.Lens' CreateChannelModerator (Prelude.Maybe Prelude.Text)
+createChannelModerator_chimeBearer = Lens.lens (\CreateChannelModerator' {chimeBearer} -> chimeBearer) (\s@CreateChannelModerator' {} a -> s {chimeBearer = a} :: CreateChannelModerator)
+
+-- | The ARN of the channel.
+createChannelModerator_channelArn :: Lens.Lens' CreateChannelModerator Prelude.Text
+createChannelModerator_channelArn = Lens.lens (\CreateChannelModerator' {channelArn} -> channelArn) (\s@CreateChannelModerator' {} a -> s {channelArn = a} :: CreateChannelModerator)
+
+-- | The ARN of the moderator.
+createChannelModerator_channelModeratorArn :: Lens.Lens' CreateChannelModerator Prelude.Text
+createChannelModerator_channelModeratorArn = Lens.lens (\CreateChannelModerator' {channelModeratorArn} -> channelModeratorArn) (\s@CreateChannelModerator' {} a -> s {channelModeratorArn = a} :: CreateChannelModerator)
+
+instance Core.AWSRequest CreateChannelModerator where
+  type
+    AWSResponse CreateChannelModerator =
+      CreateChannelModeratorResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateChannelModeratorResponse'
+            Prelude.<$> (x Data..?> "ChannelArn")
+            Prelude.<*> (x Data..?> "ChannelModerator")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateChannelModerator where
+  hashWithSalt _salt CreateChannelModerator' {..} =
+    _salt
+      `Prelude.hashWithSalt` chimeBearer
+      `Prelude.hashWithSalt` channelArn
+      `Prelude.hashWithSalt` channelModeratorArn
+
+instance Prelude.NFData CreateChannelModerator where
+  rnf CreateChannelModerator' {..} =
+    Prelude.rnf chimeBearer
+      `Prelude.seq` Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf channelModeratorArn
+
+instance Data.ToHeaders CreateChannelModerator where
+  toHeaders CreateChannelModerator' {..} =
+    Prelude.mconcat
+      ["x-amz-chime-bearer" Data.=# chimeBearer]
+
+instance Data.ToJSON CreateChannelModerator where
+  toJSON CreateChannelModerator' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ChannelModeratorArn" Data..= channelModeratorArn)
+          ]
+      )
+
+instance Data.ToPath CreateChannelModerator where
+  toPath CreateChannelModerator' {..} =
+    Prelude.mconcat
+      ["/channels/", Data.toBS channelArn, "/moderators"]
+
+instance Data.ToQuery CreateChannelModerator where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateChannelModeratorResponse' smart constructor.
+data CreateChannelModeratorResponse = CreateChannelModeratorResponse'
+  { -- | The ARN of the channel.
+    channelArn :: Prelude.Maybe Prelude.Text,
+    -- | The ARNs of the channel and the moderator.
+    channelModerator :: Prelude.Maybe Identity,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateChannelModeratorResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channelArn', 'createChannelModeratorResponse_channelArn' - The ARN of the channel.
+--
+-- 'channelModerator', 'createChannelModeratorResponse_channelModerator' - The ARNs of the channel and the moderator.
+--
+-- 'httpStatus', 'createChannelModeratorResponse_httpStatus' - The response's http status code.
+newCreateChannelModeratorResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateChannelModeratorResponse
+newCreateChannelModeratorResponse pHttpStatus_ =
+  CreateChannelModeratorResponse'
+    { channelArn =
+        Prelude.Nothing,
+      channelModerator = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of the channel.
+createChannelModeratorResponse_channelArn :: Lens.Lens' CreateChannelModeratorResponse (Prelude.Maybe Prelude.Text)
+createChannelModeratorResponse_channelArn = Lens.lens (\CreateChannelModeratorResponse' {channelArn} -> channelArn) (\s@CreateChannelModeratorResponse' {} a -> s {channelArn = a} :: CreateChannelModeratorResponse)
+
+-- | The ARNs of the channel and the moderator.
+createChannelModeratorResponse_channelModerator :: Lens.Lens' CreateChannelModeratorResponse (Prelude.Maybe Identity)
+createChannelModeratorResponse_channelModerator = Lens.lens (\CreateChannelModeratorResponse' {channelModerator} -> channelModerator) (\s@CreateChannelModeratorResponse' {} a -> s {channelModerator = a} :: CreateChannelModeratorResponse)
+
+-- | The response's http status code.
+createChannelModeratorResponse_httpStatus :: Lens.Lens' CreateChannelModeratorResponse Prelude.Int
+createChannelModeratorResponse_httpStatus = Lens.lens (\CreateChannelModeratorResponse' {httpStatus} -> httpStatus) (\s@CreateChannelModeratorResponse' {} a -> s {httpStatus = a} :: CreateChannelModeratorResponse)
+
+instance
+  Prelude.NFData
+    CreateChannelModeratorResponse
+  where
+  rnf CreateChannelModeratorResponse' {..} =
+    Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf channelModerator
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/CreateMediaCapturePipeline.hs b/gen/Amazonka/Chime/CreateMediaCapturePipeline.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/CreateMediaCapturePipeline.hs
@@ -0,0 +1,254 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.CreateMediaCapturePipeline
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a media capture pipeline.
+module Amazonka.Chime.CreateMediaCapturePipeline
+  ( -- * Creating a Request
+    CreateMediaCapturePipeline (..),
+    newCreateMediaCapturePipeline,
+
+    -- * Request Lenses
+    createMediaCapturePipeline_chimeSdkMeetingConfiguration,
+    createMediaCapturePipeline_clientRequestToken,
+    createMediaCapturePipeline_sourceType,
+    createMediaCapturePipeline_sourceArn,
+    createMediaCapturePipeline_sinkType,
+    createMediaCapturePipeline_sinkArn,
+
+    -- * Destructuring the Response
+    CreateMediaCapturePipelineResponse (..),
+    newCreateMediaCapturePipelineResponse,
+
+    -- * Response Lenses
+    createMediaCapturePipelineResponse_mediaCapturePipeline,
+    createMediaCapturePipelineResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateMediaCapturePipeline' smart constructor.
+data CreateMediaCapturePipeline = CreateMediaCapturePipeline'
+  { -- | The configuration for a specified media capture pipeline. @SourceType@
+    -- must be @ChimeSdkMeeting@.
+    chimeSdkMeetingConfiguration :: Prelude.Maybe ChimeSdkMeetingConfiguration,
+    -- | The token assigned to the client making the pipeline request.
+    clientRequestToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | Source type from which the media artifacts will be captured. A Chime SDK
+    -- Meeting is the only supported source.
+    sourceType :: MediaPipelineSourceType,
+    -- | ARN of the source from which the media artifacts are captured.
+    sourceArn :: Data.Sensitive Prelude.Text,
+    -- | Destination type to which the media artifacts are saved. You must use an
+    -- S3 bucket.
+    sinkType :: MediaPipelineSinkType,
+    -- | The ARN of the sink type.
+    sinkArn :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateMediaCapturePipeline' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chimeSdkMeetingConfiguration', 'createMediaCapturePipeline_chimeSdkMeetingConfiguration' - The configuration for a specified media capture pipeline. @SourceType@
+-- must be @ChimeSdkMeeting@.
+--
+-- 'clientRequestToken', 'createMediaCapturePipeline_clientRequestToken' - The token assigned to the client making the pipeline request.
+--
+-- 'sourceType', 'createMediaCapturePipeline_sourceType' - Source type from which the media artifacts will be captured. A Chime SDK
+-- Meeting is the only supported source.
+--
+-- 'sourceArn', 'createMediaCapturePipeline_sourceArn' - ARN of the source from which the media artifacts are captured.
+--
+-- 'sinkType', 'createMediaCapturePipeline_sinkType' - Destination type to which the media artifacts are saved. You must use an
+-- S3 bucket.
+--
+-- 'sinkArn', 'createMediaCapturePipeline_sinkArn' - The ARN of the sink type.
+newCreateMediaCapturePipeline ::
+  -- | 'sourceType'
+  MediaPipelineSourceType ->
+  -- | 'sourceArn'
+  Prelude.Text ->
+  -- | 'sinkType'
+  MediaPipelineSinkType ->
+  -- | 'sinkArn'
+  Prelude.Text ->
+  CreateMediaCapturePipeline
+newCreateMediaCapturePipeline
+  pSourceType_
+  pSourceArn_
+  pSinkType_
+  pSinkArn_ =
+    CreateMediaCapturePipeline'
+      { chimeSdkMeetingConfiguration =
+          Prelude.Nothing,
+        clientRequestToken = Prelude.Nothing,
+        sourceType = pSourceType_,
+        sourceArn = Data._Sensitive Lens.# pSourceArn_,
+        sinkType = pSinkType_,
+        sinkArn = Data._Sensitive Lens.# pSinkArn_
+      }
+
+-- | The configuration for a specified media capture pipeline. @SourceType@
+-- must be @ChimeSdkMeeting@.
+createMediaCapturePipeline_chimeSdkMeetingConfiguration :: Lens.Lens' CreateMediaCapturePipeline (Prelude.Maybe ChimeSdkMeetingConfiguration)
+createMediaCapturePipeline_chimeSdkMeetingConfiguration = Lens.lens (\CreateMediaCapturePipeline' {chimeSdkMeetingConfiguration} -> chimeSdkMeetingConfiguration) (\s@CreateMediaCapturePipeline' {} a -> s {chimeSdkMeetingConfiguration = a} :: CreateMediaCapturePipeline)
+
+-- | The token assigned to the client making the pipeline request.
+createMediaCapturePipeline_clientRequestToken :: Lens.Lens' CreateMediaCapturePipeline (Prelude.Maybe Prelude.Text)
+createMediaCapturePipeline_clientRequestToken = Lens.lens (\CreateMediaCapturePipeline' {clientRequestToken} -> clientRequestToken) (\s@CreateMediaCapturePipeline' {} a -> s {clientRequestToken = a} :: CreateMediaCapturePipeline) Prelude.. Lens.mapping Data._Sensitive
+
+-- | Source type from which the media artifacts will be captured. A Chime SDK
+-- Meeting is the only supported source.
+createMediaCapturePipeline_sourceType :: Lens.Lens' CreateMediaCapturePipeline MediaPipelineSourceType
+createMediaCapturePipeline_sourceType = Lens.lens (\CreateMediaCapturePipeline' {sourceType} -> sourceType) (\s@CreateMediaCapturePipeline' {} a -> s {sourceType = a} :: CreateMediaCapturePipeline)
+
+-- | ARN of the source from which the media artifacts are captured.
+createMediaCapturePipeline_sourceArn :: Lens.Lens' CreateMediaCapturePipeline Prelude.Text
+createMediaCapturePipeline_sourceArn = Lens.lens (\CreateMediaCapturePipeline' {sourceArn} -> sourceArn) (\s@CreateMediaCapturePipeline' {} a -> s {sourceArn = a} :: CreateMediaCapturePipeline) Prelude.. Data._Sensitive
+
+-- | Destination type to which the media artifacts are saved. You must use an
+-- S3 bucket.
+createMediaCapturePipeline_sinkType :: Lens.Lens' CreateMediaCapturePipeline MediaPipelineSinkType
+createMediaCapturePipeline_sinkType = Lens.lens (\CreateMediaCapturePipeline' {sinkType} -> sinkType) (\s@CreateMediaCapturePipeline' {} a -> s {sinkType = a} :: CreateMediaCapturePipeline)
+
+-- | The ARN of the sink type.
+createMediaCapturePipeline_sinkArn :: Lens.Lens' CreateMediaCapturePipeline Prelude.Text
+createMediaCapturePipeline_sinkArn = Lens.lens (\CreateMediaCapturePipeline' {sinkArn} -> sinkArn) (\s@CreateMediaCapturePipeline' {} a -> s {sinkArn = a} :: CreateMediaCapturePipeline) Prelude.. Data._Sensitive
+
+instance Core.AWSRequest CreateMediaCapturePipeline where
+  type
+    AWSResponse CreateMediaCapturePipeline =
+      CreateMediaCapturePipelineResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateMediaCapturePipelineResponse'
+            Prelude.<$> (x Data..?> "MediaCapturePipeline")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateMediaCapturePipeline where
+  hashWithSalt _salt CreateMediaCapturePipeline' {..} =
+    _salt
+      `Prelude.hashWithSalt` chimeSdkMeetingConfiguration
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` sourceType
+      `Prelude.hashWithSalt` sourceArn
+      `Prelude.hashWithSalt` sinkType
+      `Prelude.hashWithSalt` sinkArn
+
+instance Prelude.NFData CreateMediaCapturePipeline where
+  rnf CreateMediaCapturePipeline' {..} =
+    Prelude.rnf chimeSdkMeetingConfiguration
+      `Prelude.seq` Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf sourceType
+      `Prelude.seq` Prelude.rnf sourceArn
+      `Prelude.seq` Prelude.rnf sinkType
+      `Prelude.seq` Prelude.rnf sinkArn
+
+instance Data.ToHeaders CreateMediaCapturePipeline where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON CreateMediaCapturePipeline where
+  toJSON CreateMediaCapturePipeline' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ChimeSdkMeetingConfiguration" Data..=)
+              Prelude.<$> chimeSdkMeetingConfiguration,
+            ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            Prelude.Just ("SourceType" Data..= sourceType),
+            Prelude.Just ("SourceArn" Data..= sourceArn),
+            Prelude.Just ("SinkType" Data..= sinkType),
+            Prelude.Just ("SinkArn" Data..= sinkArn)
+          ]
+      )
+
+instance Data.ToPath CreateMediaCapturePipeline where
+  toPath = Prelude.const "/media-capture-pipelines"
+
+instance Data.ToQuery CreateMediaCapturePipeline where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateMediaCapturePipelineResponse' smart constructor.
+data CreateMediaCapturePipelineResponse = CreateMediaCapturePipelineResponse'
+  { -- | A media capture pipeline object, the ID, source type, source ARN, sink
+    -- type, and sink ARN of a media capture pipeline object.
+    mediaCapturePipeline :: Prelude.Maybe MediaCapturePipeline,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateMediaCapturePipelineResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'mediaCapturePipeline', 'createMediaCapturePipelineResponse_mediaCapturePipeline' - A media capture pipeline object, the ID, source type, source ARN, sink
+-- type, and sink ARN of a media capture pipeline object.
+--
+-- 'httpStatus', 'createMediaCapturePipelineResponse_httpStatus' - The response's http status code.
+newCreateMediaCapturePipelineResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateMediaCapturePipelineResponse
+newCreateMediaCapturePipelineResponse pHttpStatus_ =
+  CreateMediaCapturePipelineResponse'
+    { mediaCapturePipeline =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A media capture pipeline object, the ID, source type, source ARN, sink
+-- type, and sink ARN of a media capture pipeline object.
+createMediaCapturePipelineResponse_mediaCapturePipeline :: Lens.Lens' CreateMediaCapturePipelineResponse (Prelude.Maybe MediaCapturePipeline)
+createMediaCapturePipelineResponse_mediaCapturePipeline = Lens.lens (\CreateMediaCapturePipelineResponse' {mediaCapturePipeline} -> mediaCapturePipeline) (\s@CreateMediaCapturePipelineResponse' {} a -> s {mediaCapturePipeline = a} :: CreateMediaCapturePipelineResponse)
+
+-- | The response's http status code.
+createMediaCapturePipelineResponse_httpStatus :: Lens.Lens' CreateMediaCapturePipelineResponse Prelude.Int
+createMediaCapturePipelineResponse_httpStatus = Lens.lens (\CreateMediaCapturePipelineResponse' {httpStatus} -> httpStatus) (\s@CreateMediaCapturePipelineResponse' {} a -> s {httpStatus = a} :: CreateMediaCapturePipelineResponse)
+
+instance
+  Prelude.NFData
+    CreateMediaCapturePipelineResponse
+  where
+  rnf CreateMediaCapturePipelineResponse' {..} =
+    Prelude.rnf mediaCapturePipeline
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/CreateMeeting.hs b/gen/Amazonka/Chime/CreateMeeting.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/CreateMeeting.hs
@@ -0,0 +1,260 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.CreateMeeting
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new Amazon Chime SDK meeting in the specified media Region
+-- with no initial attendees. For more information about specifying media
+-- Regions, see
+-- <https://docs.aws.amazon.com/chime/latest/dg/chime-sdk-meetings-regions.html Amazon Chime SDK Media Regions>
+-- in the /Amazon Chime Developer Guide/ . For more information about the
+-- Amazon Chime SDK, see
+-- <https://docs.aws.amazon.com/chime/latest/dg/meetings-sdk.html Using the Amazon Chime SDK>
+-- in the /Amazon Chime Developer Guide/ .
+module Amazonka.Chime.CreateMeeting
+  ( -- * Creating a Request
+    CreateMeeting (..),
+    newCreateMeeting,
+
+    -- * Request Lenses
+    createMeeting_externalMeetingId,
+    createMeeting_mediaRegion,
+    createMeeting_meetingHostId,
+    createMeeting_notificationsConfiguration,
+    createMeeting_tags,
+    createMeeting_clientRequestToken,
+
+    -- * Destructuring the Response
+    CreateMeetingResponse (..),
+    newCreateMeetingResponse,
+
+    -- * Response Lenses
+    createMeetingResponse_meeting,
+    createMeetingResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateMeeting' smart constructor.
+data CreateMeeting = CreateMeeting'
+  { -- | The external meeting ID.
+    externalMeetingId :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The Region in which to create the meeting. Default: @us-east-1@.
+    --
+    -- Available values: @af-south-1@ , @ap-northeast-1@ , @ap-northeast-2@ ,
+    -- @ap-south-1@ , @ap-southeast-1@ , @ap-southeast-2@ , @ca-central-1@ ,
+    -- @eu-central-1@ , @eu-north-1@ , @eu-south-1@ , @eu-west-1@ , @eu-west-2@
+    -- , @eu-west-3@ , @sa-east-1@ , @us-east-1@ , @us-east-2@ , @us-west-1@ ,
+    -- @us-west-2@ .
+    mediaRegion :: Prelude.Maybe Prelude.Text,
+    -- | Reserved.
+    meetingHostId :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The configuration for resource targets to receive notifications when
+    -- meeting and attendee events occur.
+    notificationsConfiguration :: Prelude.Maybe MeetingNotificationConfiguration,
+    -- | The tag key-value pairs.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | The unique identifier for the client request. Use a different token for
+    -- different meetings.
+    clientRequestToken :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateMeeting' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'externalMeetingId', 'createMeeting_externalMeetingId' - The external meeting ID.
+--
+-- 'mediaRegion', 'createMeeting_mediaRegion' - The Region in which to create the meeting. Default: @us-east-1@.
+--
+-- Available values: @af-south-1@ , @ap-northeast-1@ , @ap-northeast-2@ ,
+-- @ap-south-1@ , @ap-southeast-1@ , @ap-southeast-2@ , @ca-central-1@ ,
+-- @eu-central-1@ , @eu-north-1@ , @eu-south-1@ , @eu-west-1@ , @eu-west-2@
+-- , @eu-west-3@ , @sa-east-1@ , @us-east-1@ , @us-east-2@ , @us-west-1@ ,
+-- @us-west-2@ .
+--
+-- 'meetingHostId', 'createMeeting_meetingHostId' - Reserved.
+--
+-- 'notificationsConfiguration', 'createMeeting_notificationsConfiguration' - The configuration for resource targets to receive notifications when
+-- meeting and attendee events occur.
+--
+-- 'tags', 'createMeeting_tags' - The tag key-value pairs.
+--
+-- 'clientRequestToken', 'createMeeting_clientRequestToken' - The unique identifier for the client request. Use a different token for
+-- different meetings.
+newCreateMeeting ::
+  -- | 'clientRequestToken'
+  Prelude.Text ->
+  CreateMeeting
+newCreateMeeting pClientRequestToken_ =
+  CreateMeeting'
+    { externalMeetingId = Prelude.Nothing,
+      mediaRegion = Prelude.Nothing,
+      meetingHostId = Prelude.Nothing,
+      notificationsConfiguration = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      clientRequestToken =
+        Data._Sensitive Lens.# pClientRequestToken_
+    }
+
+-- | The external meeting ID.
+createMeeting_externalMeetingId :: Lens.Lens' CreateMeeting (Prelude.Maybe Prelude.Text)
+createMeeting_externalMeetingId = Lens.lens (\CreateMeeting' {externalMeetingId} -> externalMeetingId) (\s@CreateMeeting' {} a -> s {externalMeetingId = a} :: CreateMeeting) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The Region in which to create the meeting. Default: @us-east-1@.
+--
+-- Available values: @af-south-1@ , @ap-northeast-1@ , @ap-northeast-2@ ,
+-- @ap-south-1@ , @ap-southeast-1@ , @ap-southeast-2@ , @ca-central-1@ ,
+-- @eu-central-1@ , @eu-north-1@ , @eu-south-1@ , @eu-west-1@ , @eu-west-2@
+-- , @eu-west-3@ , @sa-east-1@ , @us-east-1@ , @us-east-2@ , @us-west-1@ ,
+-- @us-west-2@ .
+createMeeting_mediaRegion :: Lens.Lens' CreateMeeting (Prelude.Maybe Prelude.Text)
+createMeeting_mediaRegion = Lens.lens (\CreateMeeting' {mediaRegion} -> mediaRegion) (\s@CreateMeeting' {} a -> s {mediaRegion = a} :: CreateMeeting)
+
+-- | Reserved.
+createMeeting_meetingHostId :: Lens.Lens' CreateMeeting (Prelude.Maybe Prelude.Text)
+createMeeting_meetingHostId = Lens.lens (\CreateMeeting' {meetingHostId} -> meetingHostId) (\s@CreateMeeting' {} a -> s {meetingHostId = a} :: CreateMeeting) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The configuration for resource targets to receive notifications when
+-- meeting and attendee events occur.
+createMeeting_notificationsConfiguration :: Lens.Lens' CreateMeeting (Prelude.Maybe MeetingNotificationConfiguration)
+createMeeting_notificationsConfiguration = Lens.lens (\CreateMeeting' {notificationsConfiguration} -> notificationsConfiguration) (\s@CreateMeeting' {} a -> s {notificationsConfiguration = a} :: CreateMeeting)
+
+-- | The tag key-value pairs.
+createMeeting_tags :: Lens.Lens' CreateMeeting (Prelude.Maybe (Prelude.NonEmpty Tag))
+createMeeting_tags = Lens.lens (\CreateMeeting' {tags} -> tags) (\s@CreateMeeting' {} a -> s {tags = a} :: CreateMeeting) Prelude.. Lens.mapping Lens.coerced
+
+-- | The unique identifier for the client request. Use a different token for
+-- different meetings.
+createMeeting_clientRequestToken :: Lens.Lens' CreateMeeting Prelude.Text
+createMeeting_clientRequestToken = Lens.lens (\CreateMeeting' {clientRequestToken} -> clientRequestToken) (\s@CreateMeeting' {} a -> s {clientRequestToken = a} :: CreateMeeting) Prelude.. Data._Sensitive
+
+instance Core.AWSRequest CreateMeeting where
+  type
+    AWSResponse CreateMeeting =
+      CreateMeetingResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateMeetingResponse'
+            Prelude.<$> (x Data..?> "Meeting")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateMeeting where
+  hashWithSalt _salt CreateMeeting' {..} =
+    _salt
+      `Prelude.hashWithSalt` externalMeetingId
+      `Prelude.hashWithSalt` mediaRegion
+      `Prelude.hashWithSalt` meetingHostId
+      `Prelude.hashWithSalt` notificationsConfiguration
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` clientRequestToken
+
+instance Prelude.NFData CreateMeeting where
+  rnf CreateMeeting' {..} =
+    Prelude.rnf externalMeetingId
+      `Prelude.seq` Prelude.rnf mediaRegion
+      `Prelude.seq` Prelude.rnf meetingHostId
+      `Prelude.seq` Prelude.rnf notificationsConfiguration
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf clientRequestToken
+
+instance Data.ToHeaders CreateMeeting where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON CreateMeeting where
+  toJSON CreateMeeting' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ExternalMeetingId" Data..=)
+              Prelude.<$> externalMeetingId,
+            ("MediaRegion" Data..=) Prelude.<$> mediaRegion,
+            ("MeetingHostId" Data..=) Prelude.<$> meetingHostId,
+            ("NotificationsConfiguration" Data..=)
+              Prelude.<$> notificationsConfiguration,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("ClientRequestToken" Data..= clientRequestToken)
+          ]
+      )
+
+instance Data.ToPath CreateMeeting where
+  toPath = Prelude.const "/meetings"
+
+instance Data.ToQuery CreateMeeting where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateMeetingResponse' smart constructor.
+data CreateMeetingResponse = CreateMeetingResponse'
+  { -- | The meeting information, including the meeting ID and @MediaPlacement@ .
+    meeting :: Prelude.Maybe Meeting,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateMeetingResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'meeting', 'createMeetingResponse_meeting' - The meeting information, including the meeting ID and @MediaPlacement@ .
+--
+-- 'httpStatus', 'createMeetingResponse_httpStatus' - The response's http status code.
+newCreateMeetingResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateMeetingResponse
+newCreateMeetingResponse pHttpStatus_ =
+  CreateMeetingResponse'
+    { meeting = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The meeting information, including the meeting ID and @MediaPlacement@ .
+createMeetingResponse_meeting :: Lens.Lens' CreateMeetingResponse (Prelude.Maybe Meeting)
+createMeetingResponse_meeting = Lens.lens (\CreateMeetingResponse' {meeting} -> meeting) (\s@CreateMeetingResponse' {} a -> s {meeting = a} :: CreateMeetingResponse)
+
+-- | The response's http status code.
+createMeetingResponse_httpStatus :: Lens.Lens' CreateMeetingResponse Prelude.Int
+createMeetingResponse_httpStatus = Lens.lens (\CreateMeetingResponse' {httpStatus} -> httpStatus) (\s@CreateMeetingResponse' {} a -> s {httpStatus = a} :: CreateMeetingResponse)
+
+instance Prelude.NFData CreateMeetingResponse where
+  rnf CreateMeetingResponse' {..} =
+    Prelude.rnf meeting
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/CreateMeetingDialOut.hs b/gen/Amazonka/Chime/CreateMeetingDialOut.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/CreateMeetingDialOut.hs
@@ -0,0 +1,230 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.CreateMeetingDialOut
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Uses the join token and call metadata in a meeting request (From number,
+-- To number, and so forth) to initiate an outbound call to a public
+-- switched telephone network (PSTN) and join them into a Chime meeting.
+-- Also ensures that the From number belongs to the customer.
+--
+-- To play welcome audio or implement an interactive voice response (IVR),
+-- use the @CreateSipMediaApplicationCall@ action with the corresponding
+-- SIP media application ID.
+module Amazonka.Chime.CreateMeetingDialOut
+  ( -- * Creating a Request
+    CreateMeetingDialOut (..),
+    newCreateMeetingDialOut,
+
+    -- * Request Lenses
+    createMeetingDialOut_meetingId,
+    createMeetingDialOut_fromPhoneNumber,
+    createMeetingDialOut_toPhoneNumber,
+    createMeetingDialOut_joinToken,
+
+    -- * Destructuring the Response
+    CreateMeetingDialOutResponse (..),
+    newCreateMeetingDialOutResponse,
+
+    -- * Response Lenses
+    createMeetingDialOutResponse_transactionId,
+    createMeetingDialOutResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateMeetingDialOut' smart constructor.
+data CreateMeetingDialOut = CreateMeetingDialOut'
+  { -- | The Amazon Chime SDK meeting ID.
+    meetingId :: Prelude.Text,
+    -- | Phone number used as the caller ID when the remote party receives a
+    -- call.
+    fromPhoneNumber :: Data.Sensitive Prelude.Text,
+    -- | Phone number called when inviting someone to a meeting.
+    toPhoneNumber :: Data.Sensitive Prelude.Text,
+    -- | Token used by the Amazon Chime SDK attendee. Call the
+    -- <https://docs.aws.amazon.com/chime/latest/APIReference/API_CreateAttendee.html CreateAttendee>
+    -- action to get a join token.
+    joinToken :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateMeetingDialOut' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'meetingId', 'createMeetingDialOut_meetingId' - The Amazon Chime SDK meeting ID.
+--
+-- 'fromPhoneNumber', 'createMeetingDialOut_fromPhoneNumber' - Phone number used as the caller ID when the remote party receives a
+-- call.
+--
+-- 'toPhoneNumber', 'createMeetingDialOut_toPhoneNumber' - Phone number called when inviting someone to a meeting.
+--
+-- 'joinToken', 'createMeetingDialOut_joinToken' - Token used by the Amazon Chime SDK attendee. Call the
+-- <https://docs.aws.amazon.com/chime/latest/APIReference/API_CreateAttendee.html CreateAttendee>
+-- action to get a join token.
+newCreateMeetingDialOut ::
+  -- | 'meetingId'
+  Prelude.Text ->
+  -- | 'fromPhoneNumber'
+  Prelude.Text ->
+  -- | 'toPhoneNumber'
+  Prelude.Text ->
+  -- | 'joinToken'
+  Prelude.Text ->
+  CreateMeetingDialOut
+newCreateMeetingDialOut
+  pMeetingId_
+  pFromPhoneNumber_
+  pToPhoneNumber_
+  pJoinToken_ =
+    CreateMeetingDialOut'
+      { meetingId = pMeetingId_,
+        fromPhoneNumber =
+          Data._Sensitive Lens.# pFromPhoneNumber_,
+        toPhoneNumber =
+          Data._Sensitive Lens.# pToPhoneNumber_,
+        joinToken = Data._Sensitive Lens.# pJoinToken_
+      }
+
+-- | The Amazon Chime SDK meeting ID.
+createMeetingDialOut_meetingId :: Lens.Lens' CreateMeetingDialOut Prelude.Text
+createMeetingDialOut_meetingId = Lens.lens (\CreateMeetingDialOut' {meetingId} -> meetingId) (\s@CreateMeetingDialOut' {} a -> s {meetingId = a} :: CreateMeetingDialOut)
+
+-- | Phone number used as the caller ID when the remote party receives a
+-- call.
+createMeetingDialOut_fromPhoneNumber :: Lens.Lens' CreateMeetingDialOut Prelude.Text
+createMeetingDialOut_fromPhoneNumber = Lens.lens (\CreateMeetingDialOut' {fromPhoneNumber} -> fromPhoneNumber) (\s@CreateMeetingDialOut' {} a -> s {fromPhoneNumber = a} :: CreateMeetingDialOut) Prelude.. Data._Sensitive
+
+-- | Phone number called when inviting someone to a meeting.
+createMeetingDialOut_toPhoneNumber :: Lens.Lens' CreateMeetingDialOut Prelude.Text
+createMeetingDialOut_toPhoneNumber = Lens.lens (\CreateMeetingDialOut' {toPhoneNumber} -> toPhoneNumber) (\s@CreateMeetingDialOut' {} a -> s {toPhoneNumber = a} :: CreateMeetingDialOut) Prelude.. Data._Sensitive
+
+-- | Token used by the Amazon Chime SDK attendee. Call the
+-- <https://docs.aws.amazon.com/chime/latest/APIReference/API_CreateAttendee.html CreateAttendee>
+-- action to get a join token.
+createMeetingDialOut_joinToken :: Lens.Lens' CreateMeetingDialOut Prelude.Text
+createMeetingDialOut_joinToken = Lens.lens (\CreateMeetingDialOut' {joinToken} -> joinToken) (\s@CreateMeetingDialOut' {} a -> s {joinToken = a} :: CreateMeetingDialOut) Prelude.. Data._Sensitive
+
+instance Core.AWSRequest CreateMeetingDialOut where
+  type
+    AWSResponse CreateMeetingDialOut =
+      CreateMeetingDialOutResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateMeetingDialOutResponse'
+            Prelude.<$> (x Data..?> "TransactionId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateMeetingDialOut where
+  hashWithSalt _salt CreateMeetingDialOut' {..} =
+    _salt
+      `Prelude.hashWithSalt` meetingId
+      `Prelude.hashWithSalt` fromPhoneNumber
+      `Prelude.hashWithSalt` toPhoneNumber
+      `Prelude.hashWithSalt` joinToken
+
+instance Prelude.NFData CreateMeetingDialOut where
+  rnf CreateMeetingDialOut' {..} =
+    Prelude.rnf meetingId
+      `Prelude.seq` Prelude.rnf fromPhoneNumber
+      `Prelude.seq` Prelude.rnf toPhoneNumber
+      `Prelude.seq` Prelude.rnf joinToken
+
+instance Data.ToHeaders CreateMeetingDialOut where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON CreateMeetingDialOut where
+  toJSON CreateMeetingDialOut' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("FromPhoneNumber" Data..= fromPhoneNumber),
+            Prelude.Just ("ToPhoneNumber" Data..= toPhoneNumber),
+            Prelude.Just ("JoinToken" Data..= joinToken)
+          ]
+      )
+
+instance Data.ToPath CreateMeetingDialOut where
+  toPath CreateMeetingDialOut' {..} =
+    Prelude.mconcat
+      ["/meetings/", Data.toBS meetingId, "/dial-outs"]
+
+instance Data.ToQuery CreateMeetingDialOut where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateMeetingDialOutResponse' smart constructor.
+data CreateMeetingDialOutResponse = CreateMeetingDialOutResponse'
+  { -- | Unique ID that tracks API calls.
+    transactionId :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateMeetingDialOutResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'transactionId', 'createMeetingDialOutResponse_transactionId' - Unique ID that tracks API calls.
+--
+-- 'httpStatus', 'createMeetingDialOutResponse_httpStatus' - The response's http status code.
+newCreateMeetingDialOutResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateMeetingDialOutResponse
+newCreateMeetingDialOutResponse pHttpStatus_ =
+  CreateMeetingDialOutResponse'
+    { transactionId =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Unique ID that tracks API calls.
+createMeetingDialOutResponse_transactionId :: Lens.Lens' CreateMeetingDialOutResponse (Prelude.Maybe Prelude.Text)
+createMeetingDialOutResponse_transactionId = Lens.lens (\CreateMeetingDialOutResponse' {transactionId} -> transactionId) (\s@CreateMeetingDialOutResponse' {} a -> s {transactionId = a} :: CreateMeetingDialOutResponse)
+
+-- | The response's http status code.
+createMeetingDialOutResponse_httpStatus :: Lens.Lens' CreateMeetingDialOutResponse Prelude.Int
+createMeetingDialOutResponse_httpStatus = Lens.lens (\CreateMeetingDialOutResponse' {httpStatus} -> httpStatus) (\s@CreateMeetingDialOutResponse' {} a -> s {httpStatus = a} :: CreateMeetingDialOutResponse)
+
+instance Prelude.NFData CreateMeetingDialOutResponse where
+  rnf CreateMeetingDialOutResponse' {..} =
+    Prelude.rnf transactionId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/CreateMeetingWithAttendees.hs b/gen/Amazonka/Chime/CreateMeetingWithAttendees.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/CreateMeetingWithAttendees.hs
@@ -0,0 +1,304 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.CreateMeetingWithAttendees
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new Amazon Chime SDK meeting in the specified media Region,
+-- with attendees. For more information about specifying media Regions, see
+-- <https://docs.aws.amazon.com/chime/latest/dg/chime-sdk-meetings-regions.html Amazon Chime SDK Media Regions>
+-- in the /Amazon Chime Developer Guide/ . For more information about the
+-- Amazon Chime SDK, see
+-- <https://docs.aws.amazon.com/chime/latest/dg/meetings-sdk.html Using the Amazon Chime SDK>
+-- in the /Amazon Chime Developer Guide/ .
+module Amazonka.Chime.CreateMeetingWithAttendees
+  ( -- * Creating a Request
+    CreateMeetingWithAttendees (..),
+    newCreateMeetingWithAttendees,
+
+    -- * Request Lenses
+    createMeetingWithAttendees_attendees,
+    createMeetingWithAttendees_externalMeetingId,
+    createMeetingWithAttendees_mediaRegion,
+    createMeetingWithAttendees_meetingHostId,
+    createMeetingWithAttendees_notificationsConfiguration,
+    createMeetingWithAttendees_tags,
+    createMeetingWithAttendees_clientRequestToken,
+
+    -- * Destructuring the Response
+    CreateMeetingWithAttendeesResponse (..),
+    newCreateMeetingWithAttendeesResponse,
+
+    -- * Response Lenses
+    createMeetingWithAttendeesResponse_attendees,
+    createMeetingWithAttendeesResponse_errors,
+    createMeetingWithAttendeesResponse_meeting,
+    createMeetingWithAttendeesResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateMeetingWithAttendees' smart constructor.
+data CreateMeetingWithAttendees = CreateMeetingWithAttendees'
+  { -- | The request containing the attendees to create.
+    attendees :: Prelude.Maybe (Prelude.NonEmpty CreateAttendeeRequestItem),
+    -- | The external meeting ID.
+    externalMeetingId :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The Region in which to create the meeting. Default: @us-east-1@ .
+    --
+    -- Available values: @af-south-1@ , @ap-northeast-1@ , @ap-northeast-2@ ,
+    -- @ap-south-1@ , @ap-southeast-1@ , @ap-southeast-2@ , @ca-central-1@ ,
+    -- @eu-central-1@ , @eu-north-1@ , @eu-south-1@ , @eu-west-1@ , @eu-west-2@
+    -- , @eu-west-3@ , @sa-east-1@ , @us-east-1@ , @us-east-2@ , @us-west-1@ ,
+    -- @us-west-2@ .
+    mediaRegion :: Prelude.Maybe Prelude.Text,
+    -- | Reserved.
+    meetingHostId :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    notificationsConfiguration :: Prelude.Maybe MeetingNotificationConfiguration,
+    -- | The tag key-value pairs.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | The unique identifier for the client request. Use a different token for
+    -- different meetings.
+    clientRequestToken :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateMeetingWithAttendees' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'attendees', 'createMeetingWithAttendees_attendees' - The request containing the attendees to create.
+--
+-- 'externalMeetingId', 'createMeetingWithAttendees_externalMeetingId' - The external meeting ID.
+--
+-- 'mediaRegion', 'createMeetingWithAttendees_mediaRegion' - The Region in which to create the meeting. Default: @us-east-1@ .
+--
+-- Available values: @af-south-1@ , @ap-northeast-1@ , @ap-northeast-2@ ,
+-- @ap-south-1@ , @ap-southeast-1@ , @ap-southeast-2@ , @ca-central-1@ ,
+-- @eu-central-1@ , @eu-north-1@ , @eu-south-1@ , @eu-west-1@ , @eu-west-2@
+-- , @eu-west-3@ , @sa-east-1@ , @us-east-1@ , @us-east-2@ , @us-west-1@ ,
+-- @us-west-2@ .
+--
+-- 'meetingHostId', 'createMeetingWithAttendees_meetingHostId' - Reserved.
+--
+-- 'notificationsConfiguration', 'createMeetingWithAttendees_notificationsConfiguration' - Undocumented member.
+--
+-- 'tags', 'createMeetingWithAttendees_tags' - The tag key-value pairs.
+--
+-- 'clientRequestToken', 'createMeetingWithAttendees_clientRequestToken' - The unique identifier for the client request. Use a different token for
+-- different meetings.
+newCreateMeetingWithAttendees ::
+  -- | 'clientRequestToken'
+  Prelude.Text ->
+  CreateMeetingWithAttendees
+newCreateMeetingWithAttendees pClientRequestToken_ =
+  CreateMeetingWithAttendees'
+    { attendees =
+        Prelude.Nothing,
+      externalMeetingId = Prelude.Nothing,
+      mediaRegion = Prelude.Nothing,
+      meetingHostId = Prelude.Nothing,
+      notificationsConfiguration = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      clientRequestToken =
+        Data._Sensitive Lens.# pClientRequestToken_
+    }
+
+-- | The request containing the attendees to create.
+createMeetingWithAttendees_attendees :: Lens.Lens' CreateMeetingWithAttendees (Prelude.Maybe (Prelude.NonEmpty CreateAttendeeRequestItem))
+createMeetingWithAttendees_attendees = Lens.lens (\CreateMeetingWithAttendees' {attendees} -> attendees) (\s@CreateMeetingWithAttendees' {} a -> s {attendees = a} :: CreateMeetingWithAttendees) Prelude.. Lens.mapping Lens.coerced
+
+-- | The external meeting ID.
+createMeetingWithAttendees_externalMeetingId :: Lens.Lens' CreateMeetingWithAttendees (Prelude.Maybe Prelude.Text)
+createMeetingWithAttendees_externalMeetingId = Lens.lens (\CreateMeetingWithAttendees' {externalMeetingId} -> externalMeetingId) (\s@CreateMeetingWithAttendees' {} a -> s {externalMeetingId = a} :: CreateMeetingWithAttendees) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The Region in which to create the meeting. Default: @us-east-1@ .
+--
+-- Available values: @af-south-1@ , @ap-northeast-1@ , @ap-northeast-2@ ,
+-- @ap-south-1@ , @ap-southeast-1@ , @ap-southeast-2@ , @ca-central-1@ ,
+-- @eu-central-1@ , @eu-north-1@ , @eu-south-1@ , @eu-west-1@ , @eu-west-2@
+-- , @eu-west-3@ , @sa-east-1@ , @us-east-1@ , @us-east-2@ , @us-west-1@ ,
+-- @us-west-2@ .
+createMeetingWithAttendees_mediaRegion :: Lens.Lens' CreateMeetingWithAttendees (Prelude.Maybe Prelude.Text)
+createMeetingWithAttendees_mediaRegion = Lens.lens (\CreateMeetingWithAttendees' {mediaRegion} -> mediaRegion) (\s@CreateMeetingWithAttendees' {} a -> s {mediaRegion = a} :: CreateMeetingWithAttendees)
+
+-- | Reserved.
+createMeetingWithAttendees_meetingHostId :: Lens.Lens' CreateMeetingWithAttendees (Prelude.Maybe Prelude.Text)
+createMeetingWithAttendees_meetingHostId = Lens.lens (\CreateMeetingWithAttendees' {meetingHostId} -> meetingHostId) (\s@CreateMeetingWithAttendees' {} a -> s {meetingHostId = a} :: CreateMeetingWithAttendees) Prelude.. Lens.mapping Data._Sensitive
+
+-- | Undocumented member.
+createMeetingWithAttendees_notificationsConfiguration :: Lens.Lens' CreateMeetingWithAttendees (Prelude.Maybe MeetingNotificationConfiguration)
+createMeetingWithAttendees_notificationsConfiguration = Lens.lens (\CreateMeetingWithAttendees' {notificationsConfiguration} -> notificationsConfiguration) (\s@CreateMeetingWithAttendees' {} a -> s {notificationsConfiguration = a} :: CreateMeetingWithAttendees)
+
+-- | The tag key-value pairs.
+createMeetingWithAttendees_tags :: Lens.Lens' CreateMeetingWithAttendees (Prelude.Maybe (Prelude.NonEmpty Tag))
+createMeetingWithAttendees_tags = Lens.lens (\CreateMeetingWithAttendees' {tags} -> tags) (\s@CreateMeetingWithAttendees' {} a -> s {tags = a} :: CreateMeetingWithAttendees) Prelude.. Lens.mapping Lens.coerced
+
+-- | The unique identifier for the client request. Use a different token for
+-- different meetings.
+createMeetingWithAttendees_clientRequestToken :: Lens.Lens' CreateMeetingWithAttendees Prelude.Text
+createMeetingWithAttendees_clientRequestToken = Lens.lens (\CreateMeetingWithAttendees' {clientRequestToken} -> clientRequestToken) (\s@CreateMeetingWithAttendees' {} a -> s {clientRequestToken = a} :: CreateMeetingWithAttendees) Prelude.. Data._Sensitive
+
+instance Core.AWSRequest CreateMeetingWithAttendees where
+  type
+    AWSResponse CreateMeetingWithAttendees =
+      CreateMeetingWithAttendeesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateMeetingWithAttendeesResponse'
+            Prelude.<$> (x Data..?> "Attendees" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "Errors" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "Meeting")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateMeetingWithAttendees where
+  hashWithSalt _salt CreateMeetingWithAttendees' {..} =
+    _salt
+      `Prelude.hashWithSalt` attendees
+      `Prelude.hashWithSalt` externalMeetingId
+      `Prelude.hashWithSalt` mediaRegion
+      `Prelude.hashWithSalt` meetingHostId
+      `Prelude.hashWithSalt` notificationsConfiguration
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` clientRequestToken
+
+instance Prelude.NFData CreateMeetingWithAttendees where
+  rnf CreateMeetingWithAttendees' {..} =
+    Prelude.rnf attendees
+      `Prelude.seq` Prelude.rnf externalMeetingId
+      `Prelude.seq` Prelude.rnf mediaRegion
+      `Prelude.seq` Prelude.rnf meetingHostId
+      `Prelude.seq` Prelude.rnf notificationsConfiguration
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf clientRequestToken
+
+instance Data.ToHeaders CreateMeetingWithAttendees where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON CreateMeetingWithAttendees where
+  toJSON CreateMeetingWithAttendees' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Attendees" Data..=) Prelude.<$> attendees,
+            ("ExternalMeetingId" Data..=)
+              Prelude.<$> externalMeetingId,
+            ("MediaRegion" Data..=) Prelude.<$> mediaRegion,
+            ("MeetingHostId" Data..=) Prelude.<$> meetingHostId,
+            ("NotificationsConfiguration" Data..=)
+              Prelude.<$> notificationsConfiguration,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("ClientRequestToken" Data..= clientRequestToken)
+          ]
+      )
+
+instance Data.ToPath CreateMeetingWithAttendees where
+  toPath = Prelude.const "/meetings"
+
+instance Data.ToQuery CreateMeetingWithAttendees where
+  toQuery =
+    Prelude.const
+      (Prelude.mconcat ["operation=create-attendees"])
+
+-- | /See:/ 'newCreateMeetingWithAttendeesResponse' smart constructor.
+data CreateMeetingWithAttendeesResponse = CreateMeetingWithAttendeesResponse'
+  { -- | The attendee information, including attendees IDs and join tokens.
+    attendees :: Prelude.Maybe [Attendee],
+    -- | If the action fails for one or more of the attendees in the request, a
+    -- list of the attendees is returned, along with error codes and error
+    -- messages.
+    errors :: Prelude.Maybe [CreateAttendeeError],
+    meeting :: Prelude.Maybe Meeting,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateMeetingWithAttendeesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'attendees', 'createMeetingWithAttendeesResponse_attendees' - The attendee information, including attendees IDs and join tokens.
+--
+-- 'errors', 'createMeetingWithAttendeesResponse_errors' - If the action fails for one or more of the attendees in the request, a
+-- list of the attendees is returned, along with error codes and error
+-- messages.
+--
+-- 'meeting', 'createMeetingWithAttendeesResponse_meeting' - Undocumented member.
+--
+-- 'httpStatus', 'createMeetingWithAttendeesResponse_httpStatus' - The response's http status code.
+newCreateMeetingWithAttendeesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateMeetingWithAttendeesResponse
+newCreateMeetingWithAttendeesResponse pHttpStatus_ =
+  CreateMeetingWithAttendeesResponse'
+    { attendees =
+        Prelude.Nothing,
+      errors = Prelude.Nothing,
+      meeting = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The attendee information, including attendees IDs and join tokens.
+createMeetingWithAttendeesResponse_attendees :: Lens.Lens' CreateMeetingWithAttendeesResponse (Prelude.Maybe [Attendee])
+createMeetingWithAttendeesResponse_attendees = Lens.lens (\CreateMeetingWithAttendeesResponse' {attendees} -> attendees) (\s@CreateMeetingWithAttendeesResponse' {} a -> s {attendees = a} :: CreateMeetingWithAttendeesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | If the action fails for one or more of the attendees in the request, a
+-- list of the attendees is returned, along with error codes and error
+-- messages.
+createMeetingWithAttendeesResponse_errors :: Lens.Lens' CreateMeetingWithAttendeesResponse (Prelude.Maybe [CreateAttendeeError])
+createMeetingWithAttendeesResponse_errors = Lens.lens (\CreateMeetingWithAttendeesResponse' {errors} -> errors) (\s@CreateMeetingWithAttendeesResponse' {} a -> s {errors = a} :: CreateMeetingWithAttendeesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+createMeetingWithAttendeesResponse_meeting :: Lens.Lens' CreateMeetingWithAttendeesResponse (Prelude.Maybe Meeting)
+createMeetingWithAttendeesResponse_meeting = Lens.lens (\CreateMeetingWithAttendeesResponse' {meeting} -> meeting) (\s@CreateMeetingWithAttendeesResponse' {} a -> s {meeting = a} :: CreateMeetingWithAttendeesResponse)
+
+-- | The response's http status code.
+createMeetingWithAttendeesResponse_httpStatus :: Lens.Lens' CreateMeetingWithAttendeesResponse Prelude.Int
+createMeetingWithAttendeesResponse_httpStatus = Lens.lens (\CreateMeetingWithAttendeesResponse' {httpStatus} -> httpStatus) (\s@CreateMeetingWithAttendeesResponse' {} a -> s {httpStatus = a} :: CreateMeetingWithAttendeesResponse)
+
+instance
+  Prelude.NFData
+    CreateMeetingWithAttendeesResponse
+  where
+  rnf CreateMeetingWithAttendeesResponse' {..} =
+    Prelude.rnf attendees
+      `Prelude.seq` Prelude.rnf errors
+      `Prelude.seq` Prelude.rnf meeting
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/CreatePhoneNumberOrder.hs b/gen/Amazonka/Chime/CreatePhoneNumberOrder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/CreatePhoneNumberOrder.hs
@@ -0,0 +1,182 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.CreatePhoneNumberOrder
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an order for phone numbers to be provisioned. For toll-free
+-- numbers, you cannot use the Amazon Chime Business Calling product type.
+-- For numbers outside the U.S., you must use the Amazon Chime SIP Media
+-- Application Dial-In product type.
+module Amazonka.Chime.CreatePhoneNumberOrder
+  ( -- * Creating a Request
+    CreatePhoneNumberOrder (..),
+    newCreatePhoneNumberOrder,
+
+    -- * Request Lenses
+    createPhoneNumberOrder_productType,
+    createPhoneNumberOrder_e164PhoneNumbers,
+
+    -- * Destructuring the Response
+    CreatePhoneNumberOrderResponse (..),
+    newCreatePhoneNumberOrderResponse,
+
+    -- * Response Lenses
+    createPhoneNumberOrderResponse_phoneNumberOrder,
+    createPhoneNumberOrderResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreatePhoneNumberOrder' smart constructor.
+data CreatePhoneNumberOrder = CreatePhoneNumberOrder'
+  { -- | The phone number product type.
+    productType :: PhoneNumberProductType,
+    -- | List of phone numbers, in E.164 format.
+    e164PhoneNumbers :: [Data.Sensitive Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreatePhoneNumberOrder' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'productType', 'createPhoneNumberOrder_productType' - The phone number product type.
+--
+-- 'e164PhoneNumbers', 'createPhoneNumberOrder_e164PhoneNumbers' - List of phone numbers, in E.164 format.
+newCreatePhoneNumberOrder ::
+  -- | 'productType'
+  PhoneNumberProductType ->
+  CreatePhoneNumberOrder
+newCreatePhoneNumberOrder pProductType_ =
+  CreatePhoneNumberOrder'
+    { productType =
+        pProductType_,
+      e164PhoneNumbers = Prelude.mempty
+    }
+
+-- | The phone number product type.
+createPhoneNumberOrder_productType :: Lens.Lens' CreatePhoneNumberOrder PhoneNumberProductType
+createPhoneNumberOrder_productType = Lens.lens (\CreatePhoneNumberOrder' {productType} -> productType) (\s@CreatePhoneNumberOrder' {} a -> s {productType = a} :: CreatePhoneNumberOrder)
+
+-- | List of phone numbers, in E.164 format.
+createPhoneNumberOrder_e164PhoneNumbers :: Lens.Lens' CreatePhoneNumberOrder [Prelude.Text]
+createPhoneNumberOrder_e164PhoneNumbers = Lens.lens (\CreatePhoneNumberOrder' {e164PhoneNumbers} -> e164PhoneNumbers) (\s@CreatePhoneNumberOrder' {} a -> s {e164PhoneNumbers = a} :: CreatePhoneNumberOrder) Prelude.. Lens.coerced
+
+instance Core.AWSRequest CreatePhoneNumberOrder where
+  type
+    AWSResponse CreatePhoneNumberOrder =
+      CreatePhoneNumberOrderResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreatePhoneNumberOrderResponse'
+            Prelude.<$> (x Data..?> "PhoneNumberOrder")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreatePhoneNumberOrder where
+  hashWithSalt _salt CreatePhoneNumberOrder' {..} =
+    _salt
+      `Prelude.hashWithSalt` productType
+      `Prelude.hashWithSalt` e164PhoneNumbers
+
+instance Prelude.NFData CreatePhoneNumberOrder where
+  rnf CreatePhoneNumberOrder' {..} =
+    Prelude.rnf productType
+      `Prelude.seq` Prelude.rnf e164PhoneNumbers
+
+instance Data.ToHeaders CreatePhoneNumberOrder where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON CreatePhoneNumberOrder where
+  toJSON CreatePhoneNumberOrder' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ProductType" Data..= productType),
+            Prelude.Just
+              ("E164PhoneNumbers" Data..= e164PhoneNumbers)
+          ]
+      )
+
+instance Data.ToPath CreatePhoneNumberOrder where
+  toPath = Prelude.const "/phone-number-orders"
+
+instance Data.ToQuery CreatePhoneNumberOrder where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreatePhoneNumberOrderResponse' smart constructor.
+data CreatePhoneNumberOrderResponse = CreatePhoneNumberOrderResponse'
+  { -- | The phone number order details.
+    phoneNumberOrder :: Prelude.Maybe PhoneNumberOrder,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreatePhoneNumberOrderResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'phoneNumberOrder', 'createPhoneNumberOrderResponse_phoneNumberOrder' - The phone number order details.
+--
+-- 'httpStatus', 'createPhoneNumberOrderResponse_httpStatus' - The response's http status code.
+newCreatePhoneNumberOrderResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreatePhoneNumberOrderResponse
+newCreatePhoneNumberOrderResponse pHttpStatus_ =
+  CreatePhoneNumberOrderResponse'
+    { phoneNumberOrder =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The phone number order details.
+createPhoneNumberOrderResponse_phoneNumberOrder :: Lens.Lens' CreatePhoneNumberOrderResponse (Prelude.Maybe PhoneNumberOrder)
+createPhoneNumberOrderResponse_phoneNumberOrder = Lens.lens (\CreatePhoneNumberOrderResponse' {phoneNumberOrder} -> phoneNumberOrder) (\s@CreatePhoneNumberOrderResponse' {} a -> s {phoneNumberOrder = a} :: CreatePhoneNumberOrderResponse)
+
+-- | The response's http status code.
+createPhoneNumberOrderResponse_httpStatus :: Lens.Lens' CreatePhoneNumberOrderResponse Prelude.Int
+createPhoneNumberOrderResponse_httpStatus = Lens.lens (\CreatePhoneNumberOrderResponse' {httpStatus} -> httpStatus) (\s@CreatePhoneNumberOrderResponse' {} a -> s {httpStatus = a} :: CreatePhoneNumberOrderResponse)
+
+instance
+  Prelude.NFData
+    CreatePhoneNumberOrderResponse
+  where
+  rnf CreatePhoneNumberOrderResponse' {..} =
+    Prelude.rnf phoneNumberOrder
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/CreateProxySession.hs b/gen/Amazonka/Chime/CreateProxySession.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/CreateProxySession.hs
@@ -0,0 +1,274 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.CreateProxySession
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a proxy session on the specified Amazon Chime Voice Connector
+-- for the specified participant phone numbers.
+module Amazonka.Chime.CreateProxySession
+  ( -- * Creating a Request
+    CreateProxySession (..),
+    newCreateProxySession,
+
+    -- * Request Lenses
+    createProxySession_expiryMinutes,
+    createProxySession_geoMatchLevel,
+    createProxySession_geoMatchParams,
+    createProxySession_name,
+    createProxySession_numberSelectionBehavior,
+    createProxySession_participantPhoneNumbers,
+    createProxySession_capabilities,
+    createProxySession_voiceConnectorId,
+
+    -- * Destructuring the Response
+    CreateProxySessionResponse (..),
+    newCreateProxySessionResponse,
+
+    -- * Response Lenses
+    createProxySessionResponse_proxySession,
+    createProxySessionResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateProxySession' smart constructor.
+data CreateProxySession = CreateProxySession'
+  { -- | The number of minutes allowed for the proxy session.
+    expiryMinutes :: Prelude.Maybe Prelude.Natural,
+    -- | The preference for matching the country or area code of the proxy phone
+    -- number with that of the first participant.
+    geoMatchLevel :: Prelude.Maybe GeoMatchLevel,
+    -- | The country and area code for the proxy phone number.
+    geoMatchParams :: Prelude.Maybe GeoMatchParams,
+    -- | The name of the proxy session.
+    name :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The preference for proxy phone number reuse, or stickiness, between the
+    -- same participants across sessions.
+    numberSelectionBehavior :: Prelude.Maybe NumberSelectionBehavior,
+    -- | The participant phone numbers.
+    participantPhoneNumbers :: Prelude.NonEmpty (Data.Sensitive Prelude.Text),
+    -- | The proxy session capabilities.
+    capabilities :: [Capability],
+    -- | The Amazon Chime voice connector ID.
+    voiceConnectorId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateProxySession' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'expiryMinutes', 'createProxySession_expiryMinutes' - The number of minutes allowed for the proxy session.
+--
+-- 'geoMatchLevel', 'createProxySession_geoMatchLevel' - The preference for matching the country or area code of the proxy phone
+-- number with that of the first participant.
+--
+-- 'geoMatchParams', 'createProxySession_geoMatchParams' - The country and area code for the proxy phone number.
+--
+-- 'name', 'createProxySession_name' - The name of the proxy session.
+--
+-- 'numberSelectionBehavior', 'createProxySession_numberSelectionBehavior' - The preference for proxy phone number reuse, or stickiness, between the
+-- same participants across sessions.
+--
+-- 'participantPhoneNumbers', 'createProxySession_participantPhoneNumbers' - The participant phone numbers.
+--
+-- 'capabilities', 'createProxySession_capabilities' - The proxy session capabilities.
+--
+-- 'voiceConnectorId', 'createProxySession_voiceConnectorId' - The Amazon Chime voice connector ID.
+newCreateProxySession ::
+  -- | 'participantPhoneNumbers'
+  Prelude.NonEmpty Prelude.Text ->
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  CreateProxySession
+newCreateProxySession
+  pParticipantPhoneNumbers_
+  pVoiceConnectorId_ =
+    CreateProxySession'
+      { expiryMinutes =
+          Prelude.Nothing,
+        geoMatchLevel = Prelude.Nothing,
+        geoMatchParams = Prelude.Nothing,
+        name = Prelude.Nothing,
+        numberSelectionBehavior = Prelude.Nothing,
+        participantPhoneNumbers =
+          Lens.coerced Lens.# pParticipantPhoneNumbers_,
+        capabilities = Prelude.mempty,
+        voiceConnectorId = pVoiceConnectorId_
+      }
+
+-- | The number of minutes allowed for the proxy session.
+createProxySession_expiryMinutes :: Lens.Lens' CreateProxySession (Prelude.Maybe Prelude.Natural)
+createProxySession_expiryMinutes = Lens.lens (\CreateProxySession' {expiryMinutes} -> expiryMinutes) (\s@CreateProxySession' {} a -> s {expiryMinutes = a} :: CreateProxySession)
+
+-- | The preference for matching the country or area code of the proxy phone
+-- number with that of the first participant.
+createProxySession_geoMatchLevel :: Lens.Lens' CreateProxySession (Prelude.Maybe GeoMatchLevel)
+createProxySession_geoMatchLevel = Lens.lens (\CreateProxySession' {geoMatchLevel} -> geoMatchLevel) (\s@CreateProxySession' {} a -> s {geoMatchLevel = a} :: CreateProxySession)
+
+-- | The country and area code for the proxy phone number.
+createProxySession_geoMatchParams :: Lens.Lens' CreateProxySession (Prelude.Maybe GeoMatchParams)
+createProxySession_geoMatchParams = Lens.lens (\CreateProxySession' {geoMatchParams} -> geoMatchParams) (\s@CreateProxySession' {} a -> s {geoMatchParams = a} :: CreateProxySession)
+
+-- | The name of the proxy session.
+createProxySession_name :: Lens.Lens' CreateProxySession (Prelude.Maybe Prelude.Text)
+createProxySession_name = Lens.lens (\CreateProxySession' {name} -> name) (\s@CreateProxySession' {} a -> s {name = a} :: CreateProxySession) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The preference for proxy phone number reuse, or stickiness, between the
+-- same participants across sessions.
+createProxySession_numberSelectionBehavior :: Lens.Lens' CreateProxySession (Prelude.Maybe NumberSelectionBehavior)
+createProxySession_numberSelectionBehavior = Lens.lens (\CreateProxySession' {numberSelectionBehavior} -> numberSelectionBehavior) (\s@CreateProxySession' {} a -> s {numberSelectionBehavior = a} :: CreateProxySession)
+
+-- | The participant phone numbers.
+createProxySession_participantPhoneNumbers :: Lens.Lens' CreateProxySession (Prelude.NonEmpty Prelude.Text)
+createProxySession_participantPhoneNumbers = Lens.lens (\CreateProxySession' {participantPhoneNumbers} -> participantPhoneNumbers) (\s@CreateProxySession' {} a -> s {participantPhoneNumbers = a} :: CreateProxySession) Prelude.. Lens.coerced
+
+-- | The proxy session capabilities.
+createProxySession_capabilities :: Lens.Lens' CreateProxySession [Capability]
+createProxySession_capabilities = Lens.lens (\CreateProxySession' {capabilities} -> capabilities) (\s@CreateProxySession' {} a -> s {capabilities = a} :: CreateProxySession) Prelude.. Lens.coerced
+
+-- | The Amazon Chime voice connector ID.
+createProxySession_voiceConnectorId :: Lens.Lens' CreateProxySession Prelude.Text
+createProxySession_voiceConnectorId = Lens.lens (\CreateProxySession' {voiceConnectorId} -> voiceConnectorId) (\s@CreateProxySession' {} a -> s {voiceConnectorId = a} :: CreateProxySession)
+
+instance Core.AWSRequest CreateProxySession where
+  type
+    AWSResponse CreateProxySession =
+      CreateProxySessionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateProxySessionResponse'
+            Prelude.<$> (x Data..?> "ProxySession")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateProxySession where
+  hashWithSalt _salt CreateProxySession' {..} =
+    _salt
+      `Prelude.hashWithSalt` expiryMinutes
+      `Prelude.hashWithSalt` geoMatchLevel
+      `Prelude.hashWithSalt` geoMatchParams
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` numberSelectionBehavior
+      `Prelude.hashWithSalt` participantPhoneNumbers
+      `Prelude.hashWithSalt` capabilities
+      `Prelude.hashWithSalt` voiceConnectorId
+
+instance Prelude.NFData CreateProxySession where
+  rnf CreateProxySession' {..} =
+    Prelude.rnf expiryMinutes
+      `Prelude.seq` Prelude.rnf geoMatchLevel
+      `Prelude.seq` Prelude.rnf geoMatchParams
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf numberSelectionBehavior
+      `Prelude.seq` Prelude.rnf participantPhoneNumbers
+      `Prelude.seq` Prelude.rnf capabilities
+      `Prelude.seq` Prelude.rnf voiceConnectorId
+
+instance Data.ToHeaders CreateProxySession where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON CreateProxySession where
+  toJSON CreateProxySession' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ExpiryMinutes" Data..=) Prelude.<$> expiryMinutes,
+            ("GeoMatchLevel" Data..=) Prelude.<$> geoMatchLevel,
+            ("GeoMatchParams" Data..=)
+              Prelude.<$> geoMatchParams,
+            ("Name" Data..=) Prelude.<$> name,
+            ("NumberSelectionBehavior" Data..=)
+              Prelude.<$> numberSelectionBehavior,
+            Prelude.Just
+              ( "ParticipantPhoneNumbers"
+                  Data..= participantPhoneNumbers
+              ),
+            Prelude.Just ("Capabilities" Data..= capabilities)
+          ]
+      )
+
+instance Data.ToPath CreateProxySession where
+  toPath CreateProxySession' {..} =
+    Prelude.mconcat
+      [ "/voice-connectors/",
+        Data.toBS voiceConnectorId,
+        "/proxy-sessions"
+      ]
+
+instance Data.ToQuery CreateProxySession where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateProxySessionResponse' smart constructor.
+data CreateProxySessionResponse = CreateProxySessionResponse'
+  { -- | The proxy session details.
+    proxySession :: Prelude.Maybe ProxySession,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateProxySessionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'proxySession', 'createProxySessionResponse_proxySession' - The proxy session details.
+--
+-- 'httpStatus', 'createProxySessionResponse_httpStatus' - The response's http status code.
+newCreateProxySessionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateProxySessionResponse
+newCreateProxySessionResponse pHttpStatus_ =
+  CreateProxySessionResponse'
+    { proxySession =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The proxy session details.
+createProxySessionResponse_proxySession :: Lens.Lens' CreateProxySessionResponse (Prelude.Maybe ProxySession)
+createProxySessionResponse_proxySession = Lens.lens (\CreateProxySessionResponse' {proxySession} -> proxySession) (\s@CreateProxySessionResponse' {} a -> s {proxySession = a} :: CreateProxySessionResponse)
+
+-- | The response's http status code.
+createProxySessionResponse_httpStatus :: Lens.Lens' CreateProxySessionResponse Prelude.Int
+createProxySessionResponse_httpStatus = Lens.lens (\CreateProxySessionResponse' {httpStatus} -> httpStatus) (\s@CreateProxySessionResponse' {} a -> s {httpStatus = a} :: CreateProxySessionResponse)
+
+instance Prelude.NFData CreateProxySessionResponse where
+  rnf CreateProxySessionResponse' {..} =
+    Prelude.rnf proxySession
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/CreateRoom.hs b/gen/Amazonka/Chime/CreateRoom.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/CreateRoom.hs
@@ -0,0 +1,188 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.CreateRoom
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a chat room for the specified Amazon Chime Enterprise account.
+module Amazonka.Chime.CreateRoom
+  ( -- * Creating a Request
+    CreateRoom (..),
+    newCreateRoom,
+
+    -- * Request Lenses
+    createRoom_clientRequestToken,
+    createRoom_accountId,
+    createRoom_name,
+
+    -- * Destructuring the Response
+    CreateRoomResponse (..),
+    newCreateRoomResponse,
+
+    -- * Response Lenses
+    createRoomResponse_room,
+    createRoomResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateRoom' smart constructor.
+data CreateRoom = CreateRoom'
+  { -- | The idempotency token for the request.
+    clientRequestToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The room name.
+    name :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateRoom' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'createRoom_clientRequestToken' - The idempotency token for the request.
+--
+-- 'accountId', 'createRoom_accountId' - The Amazon Chime account ID.
+--
+-- 'name', 'createRoom_name' - The room name.
+newCreateRoom ::
+  -- | 'accountId'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  CreateRoom
+newCreateRoom pAccountId_ pName_ =
+  CreateRoom'
+    { clientRequestToken = Prelude.Nothing,
+      accountId = pAccountId_,
+      name = Data._Sensitive Lens.# pName_
+    }
+
+-- | The idempotency token for the request.
+createRoom_clientRequestToken :: Lens.Lens' CreateRoom (Prelude.Maybe Prelude.Text)
+createRoom_clientRequestToken = Lens.lens (\CreateRoom' {clientRequestToken} -> clientRequestToken) (\s@CreateRoom' {} a -> s {clientRequestToken = a} :: CreateRoom) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The Amazon Chime account ID.
+createRoom_accountId :: Lens.Lens' CreateRoom Prelude.Text
+createRoom_accountId = Lens.lens (\CreateRoom' {accountId} -> accountId) (\s@CreateRoom' {} a -> s {accountId = a} :: CreateRoom)
+
+-- | The room name.
+createRoom_name :: Lens.Lens' CreateRoom Prelude.Text
+createRoom_name = Lens.lens (\CreateRoom' {name} -> name) (\s@CreateRoom' {} a -> s {name = a} :: CreateRoom) Prelude.. Data._Sensitive
+
+instance Core.AWSRequest CreateRoom where
+  type AWSResponse CreateRoom = CreateRoomResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateRoomResponse'
+            Prelude.<$> (x Data..?> "Room")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateRoom where
+  hashWithSalt _salt CreateRoom' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData CreateRoom where
+  rnf CreateRoom' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToHeaders CreateRoom where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON CreateRoom where
+  toJSON CreateRoom' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            Prelude.Just ("Name" Data..= name)
+          ]
+      )
+
+instance Data.ToPath CreateRoom where
+  toPath CreateRoom' {..} =
+    Prelude.mconcat
+      ["/accounts/", Data.toBS accountId, "/rooms"]
+
+instance Data.ToQuery CreateRoom where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateRoomResponse' smart constructor.
+data CreateRoomResponse = CreateRoomResponse'
+  { -- | The room details.
+    room :: Prelude.Maybe Room,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateRoomResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'room', 'createRoomResponse_room' - The room details.
+--
+-- 'httpStatus', 'createRoomResponse_httpStatus' - The response's http status code.
+newCreateRoomResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateRoomResponse
+newCreateRoomResponse pHttpStatus_ =
+  CreateRoomResponse'
+    { room = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The room details.
+createRoomResponse_room :: Lens.Lens' CreateRoomResponse (Prelude.Maybe Room)
+createRoomResponse_room = Lens.lens (\CreateRoomResponse' {room} -> room) (\s@CreateRoomResponse' {} a -> s {room = a} :: CreateRoomResponse)
+
+-- | The response's http status code.
+createRoomResponse_httpStatus :: Lens.Lens' CreateRoomResponse Prelude.Int
+createRoomResponse_httpStatus = Lens.lens (\CreateRoomResponse' {httpStatus} -> httpStatus) (\s@CreateRoomResponse' {} a -> s {httpStatus = a} :: CreateRoomResponse)
+
+instance Prelude.NFData CreateRoomResponse where
+  rnf CreateRoomResponse' {..} =
+    Prelude.rnf room
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/CreateRoomMembership.hs b/gen/Amazonka/Chime/CreateRoomMembership.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/CreateRoomMembership.hs
@@ -0,0 +1,214 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.CreateRoomMembership
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds a member to a chat room in an Amazon Chime Enterprise account. A
+-- member can be either a user or a bot. The member role designates whether
+-- the member is a chat room administrator or a general chat room member.
+module Amazonka.Chime.CreateRoomMembership
+  ( -- * Creating a Request
+    CreateRoomMembership (..),
+    newCreateRoomMembership,
+
+    -- * Request Lenses
+    createRoomMembership_role,
+    createRoomMembership_accountId,
+    createRoomMembership_roomId,
+    createRoomMembership_memberId,
+
+    -- * Destructuring the Response
+    CreateRoomMembershipResponse (..),
+    newCreateRoomMembershipResponse,
+
+    -- * Response Lenses
+    createRoomMembershipResponse_roomMembership,
+    createRoomMembershipResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateRoomMembership' smart constructor.
+data CreateRoomMembership = CreateRoomMembership'
+  { -- | The role of the member.
+    role' :: Prelude.Maybe RoomMembershipRole,
+    -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The room ID.
+    roomId :: Prelude.Text,
+    -- | The Amazon Chime member ID (user ID or bot ID).
+    memberId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateRoomMembership' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'role'', 'createRoomMembership_role' - The role of the member.
+--
+-- 'accountId', 'createRoomMembership_accountId' - The Amazon Chime account ID.
+--
+-- 'roomId', 'createRoomMembership_roomId' - The room ID.
+--
+-- 'memberId', 'createRoomMembership_memberId' - The Amazon Chime member ID (user ID or bot ID).
+newCreateRoomMembership ::
+  -- | 'accountId'
+  Prelude.Text ->
+  -- | 'roomId'
+  Prelude.Text ->
+  -- | 'memberId'
+  Prelude.Text ->
+  CreateRoomMembership
+newCreateRoomMembership
+  pAccountId_
+  pRoomId_
+  pMemberId_ =
+    CreateRoomMembership'
+      { role' = Prelude.Nothing,
+        accountId = pAccountId_,
+        roomId = pRoomId_,
+        memberId = pMemberId_
+      }
+
+-- | The role of the member.
+createRoomMembership_role :: Lens.Lens' CreateRoomMembership (Prelude.Maybe RoomMembershipRole)
+createRoomMembership_role = Lens.lens (\CreateRoomMembership' {role'} -> role') (\s@CreateRoomMembership' {} a -> s {role' = a} :: CreateRoomMembership)
+
+-- | The Amazon Chime account ID.
+createRoomMembership_accountId :: Lens.Lens' CreateRoomMembership Prelude.Text
+createRoomMembership_accountId = Lens.lens (\CreateRoomMembership' {accountId} -> accountId) (\s@CreateRoomMembership' {} a -> s {accountId = a} :: CreateRoomMembership)
+
+-- | The room ID.
+createRoomMembership_roomId :: Lens.Lens' CreateRoomMembership Prelude.Text
+createRoomMembership_roomId = Lens.lens (\CreateRoomMembership' {roomId} -> roomId) (\s@CreateRoomMembership' {} a -> s {roomId = a} :: CreateRoomMembership)
+
+-- | The Amazon Chime member ID (user ID or bot ID).
+createRoomMembership_memberId :: Lens.Lens' CreateRoomMembership Prelude.Text
+createRoomMembership_memberId = Lens.lens (\CreateRoomMembership' {memberId} -> memberId) (\s@CreateRoomMembership' {} a -> s {memberId = a} :: CreateRoomMembership)
+
+instance Core.AWSRequest CreateRoomMembership where
+  type
+    AWSResponse CreateRoomMembership =
+      CreateRoomMembershipResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateRoomMembershipResponse'
+            Prelude.<$> (x Data..?> "RoomMembership")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateRoomMembership where
+  hashWithSalt _salt CreateRoomMembership' {..} =
+    _salt
+      `Prelude.hashWithSalt` role'
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` roomId
+      `Prelude.hashWithSalt` memberId
+
+instance Prelude.NFData CreateRoomMembership where
+  rnf CreateRoomMembership' {..} =
+    Prelude.rnf role'
+      `Prelude.seq` Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf roomId
+      `Prelude.seq` Prelude.rnf memberId
+
+instance Data.ToHeaders CreateRoomMembership where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON CreateRoomMembership where
+  toJSON CreateRoomMembership' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Role" Data..=) Prelude.<$> role',
+            Prelude.Just ("MemberId" Data..= memberId)
+          ]
+      )
+
+instance Data.ToPath CreateRoomMembership where
+  toPath CreateRoomMembership' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS accountId,
+        "/rooms/",
+        Data.toBS roomId,
+        "/memberships"
+      ]
+
+instance Data.ToQuery CreateRoomMembership where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateRoomMembershipResponse' smart constructor.
+data CreateRoomMembershipResponse = CreateRoomMembershipResponse'
+  { -- | The room membership details.
+    roomMembership :: Prelude.Maybe RoomMembership,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateRoomMembershipResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'roomMembership', 'createRoomMembershipResponse_roomMembership' - The room membership details.
+--
+-- 'httpStatus', 'createRoomMembershipResponse_httpStatus' - The response's http status code.
+newCreateRoomMembershipResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateRoomMembershipResponse
+newCreateRoomMembershipResponse pHttpStatus_ =
+  CreateRoomMembershipResponse'
+    { roomMembership =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The room membership details.
+createRoomMembershipResponse_roomMembership :: Lens.Lens' CreateRoomMembershipResponse (Prelude.Maybe RoomMembership)
+createRoomMembershipResponse_roomMembership = Lens.lens (\CreateRoomMembershipResponse' {roomMembership} -> roomMembership) (\s@CreateRoomMembershipResponse' {} a -> s {roomMembership = a} :: CreateRoomMembershipResponse)
+
+-- | The response's http status code.
+createRoomMembershipResponse_httpStatus :: Lens.Lens' CreateRoomMembershipResponse Prelude.Int
+createRoomMembershipResponse_httpStatus = Lens.lens (\CreateRoomMembershipResponse' {httpStatus} -> httpStatus) (\s@CreateRoomMembershipResponse' {} a -> s {httpStatus = a} :: CreateRoomMembershipResponse)
+
+instance Prelude.NFData CreateRoomMembershipResponse where
+  rnf CreateRoomMembershipResponse' {..} =
+    Prelude.rnf roomMembership
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/CreateSipMediaApplication.hs b/gen/Amazonka/Chime/CreateSipMediaApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/CreateSipMediaApplication.hs
@@ -0,0 +1,200 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.CreateSipMediaApplication
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a SIP media application.
+module Amazonka.Chime.CreateSipMediaApplication
+  ( -- * Creating a Request
+    CreateSipMediaApplication (..),
+    newCreateSipMediaApplication,
+
+    -- * Request Lenses
+    createSipMediaApplication_awsRegion,
+    createSipMediaApplication_name,
+    createSipMediaApplication_endpoints,
+
+    -- * Destructuring the Response
+    CreateSipMediaApplicationResponse (..),
+    newCreateSipMediaApplicationResponse,
+
+    -- * Response Lenses
+    createSipMediaApplicationResponse_sipMediaApplication,
+    createSipMediaApplicationResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateSipMediaApplication' smart constructor.
+data CreateSipMediaApplication = CreateSipMediaApplication'
+  { -- | The AWS Region assigned to the SIP media application.
+    awsRegion :: Prelude.Text,
+    -- | The SIP media application name.
+    name :: Prelude.Text,
+    -- | List of endpoints (Lambda Amazon Resource Names) specified for the SIP
+    -- media application. Currently, only one endpoint is supported.
+    endpoints :: Prelude.NonEmpty SipMediaApplicationEndpoint
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateSipMediaApplication' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsRegion', 'createSipMediaApplication_awsRegion' - The AWS Region assigned to the SIP media application.
+--
+-- 'name', 'createSipMediaApplication_name' - The SIP media application name.
+--
+-- 'endpoints', 'createSipMediaApplication_endpoints' - List of endpoints (Lambda Amazon Resource Names) specified for the SIP
+-- media application. Currently, only one endpoint is supported.
+newCreateSipMediaApplication ::
+  -- | 'awsRegion'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'endpoints'
+  Prelude.NonEmpty SipMediaApplicationEndpoint ->
+  CreateSipMediaApplication
+newCreateSipMediaApplication
+  pAwsRegion_
+  pName_
+  pEndpoints_ =
+    CreateSipMediaApplication'
+      { awsRegion = pAwsRegion_,
+        name = pName_,
+        endpoints = Lens.coerced Lens.# pEndpoints_
+      }
+
+-- | The AWS Region assigned to the SIP media application.
+createSipMediaApplication_awsRegion :: Lens.Lens' CreateSipMediaApplication Prelude.Text
+createSipMediaApplication_awsRegion = Lens.lens (\CreateSipMediaApplication' {awsRegion} -> awsRegion) (\s@CreateSipMediaApplication' {} a -> s {awsRegion = a} :: CreateSipMediaApplication)
+
+-- | The SIP media application name.
+createSipMediaApplication_name :: Lens.Lens' CreateSipMediaApplication Prelude.Text
+createSipMediaApplication_name = Lens.lens (\CreateSipMediaApplication' {name} -> name) (\s@CreateSipMediaApplication' {} a -> s {name = a} :: CreateSipMediaApplication)
+
+-- | List of endpoints (Lambda Amazon Resource Names) specified for the SIP
+-- media application. Currently, only one endpoint is supported.
+createSipMediaApplication_endpoints :: Lens.Lens' CreateSipMediaApplication (Prelude.NonEmpty SipMediaApplicationEndpoint)
+createSipMediaApplication_endpoints = Lens.lens (\CreateSipMediaApplication' {endpoints} -> endpoints) (\s@CreateSipMediaApplication' {} a -> s {endpoints = a} :: CreateSipMediaApplication) Prelude.. Lens.coerced
+
+instance Core.AWSRequest CreateSipMediaApplication where
+  type
+    AWSResponse CreateSipMediaApplication =
+      CreateSipMediaApplicationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateSipMediaApplicationResponse'
+            Prelude.<$> (x Data..?> "SipMediaApplication")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateSipMediaApplication where
+  hashWithSalt _salt CreateSipMediaApplication' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsRegion
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` endpoints
+
+instance Prelude.NFData CreateSipMediaApplication where
+  rnf CreateSipMediaApplication' {..} =
+    Prelude.rnf awsRegion
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf endpoints
+
+instance Data.ToHeaders CreateSipMediaApplication where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON CreateSipMediaApplication where
+  toJSON CreateSipMediaApplication' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("AwsRegion" Data..= awsRegion),
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("Endpoints" Data..= endpoints)
+          ]
+      )
+
+instance Data.ToPath CreateSipMediaApplication where
+  toPath = Prelude.const "/sip-media-applications"
+
+instance Data.ToQuery CreateSipMediaApplication where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateSipMediaApplicationResponse' smart constructor.
+data CreateSipMediaApplicationResponse = CreateSipMediaApplicationResponse'
+  { -- | The SIP media application details.
+    sipMediaApplication :: Prelude.Maybe SipMediaApplication,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateSipMediaApplicationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sipMediaApplication', 'createSipMediaApplicationResponse_sipMediaApplication' - The SIP media application details.
+--
+-- 'httpStatus', 'createSipMediaApplicationResponse_httpStatus' - The response's http status code.
+newCreateSipMediaApplicationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateSipMediaApplicationResponse
+newCreateSipMediaApplicationResponse pHttpStatus_ =
+  CreateSipMediaApplicationResponse'
+    { sipMediaApplication =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The SIP media application details.
+createSipMediaApplicationResponse_sipMediaApplication :: Lens.Lens' CreateSipMediaApplicationResponse (Prelude.Maybe SipMediaApplication)
+createSipMediaApplicationResponse_sipMediaApplication = Lens.lens (\CreateSipMediaApplicationResponse' {sipMediaApplication} -> sipMediaApplication) (\s@CreateSipMediaApplicationResponse' {} a -> s {sipMediaApplication = a} :: CreateSipMediaApplicationResponse)
+
+-- | The response's http status code.
+createSipMediaApplicationResponse_httpStatus :: Lens.Lens' CreateSipMediaApplicationResponse Prelude.Int
+createSipMediaApplicationResponse_httpStatus = Lens.lens (\CreateSipMediaApplicationResponse' {httpStatus} -> httpStatus) (\s@CreateSipMediaApplicationResponse' {} a -> s {httpStatus = a} :: CreateSipMediaApplicationResponse)
+
+instance
+  Prelude.NFData
+    CreateSipMediaApplicationResponse
+  where
+  rnf CreateSipMediaApplicationResponse' {..} =
+    Prelude.rnf sipMediaApplication
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/CreateSipMediaApplicationCall.hs b/gen/Amazonka/Chime/CreateSipMediaApplicationCall.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/CreateSipMediaApplicationCall.hs
@@ -0,0 +1,231 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.CreateSipMediaApplicationCall
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an outbound call to a phone number from the phone number
+-- specified in the request, and it invokes the endpoint of the specified
+-- @sipMediaApplicationId@.
+module Amazonka.Chime.CreateSipMediaApplicationCall
+  ( -- * Creating a Request
+    CreateSipMediaApplicationCall (..),
+    newCreateSipMediaApplicationCall,
+
+    -- * Request Lenses
+    createSipMediaApplicationCall_sipHeaders,
+    createSipMediaApplicationCall_fromPhoneNumber,
+    createSipMediaApplicationCall_toPhoneNumber,
+    createSipMediaApplicationCall_sipMediaApplicationId,
+
+    -- * Destructuring the Response
+    CreateSipMediaApplicationCallResponse (..),
+    newCreateSipMediaApplicationCallResponse,
+
+    -- * Response Lenses
+    createSipMediaApplicationCallResponse_sipMediaApplicationCall,
+    createSipMediaApplicationCallResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateSipMediaApplicationCall' smart constructor.
+data CreateSipMediaApplicationCall = CreateSipMediaApplicationCall'
+  { -- | The SIP headers added to an outbound call leg.
+    sipHeaders :: Prelude.Maybe (Prelude.HashMap Prelude.Text (Data.Sensitive Prelude.Text)),
+    -- | The phone number that a user calls from. This is a phone number in your
+    -- Amazon Chime phone number inventory.
+    fromPhoneNumber :: Data.Sensitive Prelude.Text,
+    -- | The phone number that the service should call.
+    toPhoneNumber :: Data.Sensitive Prelude.Text,
+    -- | The ID of the SIP media application.
+    sipMediaApplicationId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateSipMediaApplicationCall' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sipHeaders', 'createSipMediaApplicationCall_sipHeaders' - The SIP headers added to an outbound call leg.
+--
+-- 'fromPhoneNumber', 'createSipMediaApplicationCall_fromPhoneNumber' - The phone number that a user calls from. This is a phone number in your
+-- Amazon Chime phone number inventory.
+--
+-- 'toPhoneNumber', 'createSipMediaApplicationCall_toPhoneNumber' - The phone number that the service should call.
+--
+-- 'sipMediaApplicationId', 'createSipMediaApplicationCall_sipMediaApplicationId' - The ID of the SIP media application.
+newCreateSipMediaApplicationCall ::
+  -- | 'fromPhoneNumber'
+  Prelude.Text ->
+  -- | 'toPhoneNumber'
+  Prelude.Text ->
+  -- | 'sipMediaApplicationId'
+  Prelude.Text ->
+  CreateSipMediaApplicationCall
+newCreateSipMediaApplicationCall
+  pFromPhoneNumber_
+  pToPhoneNumber_
+  pSipMediaApplicationId_ =
+    CreateSipMediaApplicationCall'
+      { sipHeaders =
+          Prelude.Nothing,
+        fromPhoneNumber =
+          Data._Sensitive Lens.# pFromPhoneNumber_,
+        toPhoneNumber =
+          Data._Sensitive Lens.# pToPhoneNumber_,
+        sipMediaApplicationId =
+          pSipMediaApplicationId_
+      }
+
+-- | The SIP headers added to an outbound call leg.
+createSipMediaApplicationCall_sipHeaders :: Lens.Lens' CreateSipMediaApplicationCall (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createSipMediaApplicationCall_sipHeaders = Lens.lens (\CreateSipMediaApplicationCall' {sipHeaders} -> sipHeaders) (\s@CreateSipMediaApplicationCall' {} a -> s {sipHeaders = a} :: CreateSipMediaApplicationCall) Prelude.. Lens.mapping Lens.coerced
+
+-- | The phone number that a user calls from. This is a phone number in your
+-- Amazon Chime phone number inventory.
+createSipMediaApplicationCall_fromPhoneNumber :: Lens.Lens' CreateSipMediaApplicationCall Prelude.Text
+createSipMediaApplicationCall_fromPhoneNumber = Lens.lens (\CreateSipMediaApplicationCall' {fromPhoneNumber} -> fromPhoneNumber) (\s@CreateSipMediaApplicationCall' {} a -> s {fromPhoneNumber = a} :: CreateSipMediaApplicationCall) Prelude.. Data._Sensitive
+
+-- | The phone number that the service should call.
+createSipMediaApplicationCall_toPhoneNumber :: Lens.Lens' CreateSipMediaApplicationCall Prelude.Text
+createSipMediaApplicationCall_toPhoneNumber = Lens.lens (\CreateSipMediaApplicationCall' {toPhoneNumber} -> toPhoneNumber) (\s@CreateSipMediaApplicationCall' {} a -> s {toPhoneNumber = a} :: CreateSipMediaApplicationCall) Prelude.. Data._Sensitive
+
+-- | The ID of the SIP media application.
+createSipMediaApplicationCall_sipMediaApplicationId :: Lens.Lens' CreateSipMediaApplicationCall Prelude.Text
+createSipMediaApplicationCall_sipMediaApplicationId = Lens.lens (\CreateSipMediaApplicationCall' {sipMediaApplicationId} -> sipMediaApplicationId) (\s@CreateSipMediaApplicationCall' {} a -> s {sipMediaApplicationId = a} :: CreateSipMediaApplicationCall)
+
+instance
+  Core.AWSRequest
+    CreateSipMediaApplicationCall
+  where
+  type
+    AWSResponse CreateSipMediaApplicationCall =
+      CreateSipMediaApplicationCallResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateSipMediaApplicationCallResponse'
+            Prelude.<$> (x Data..?> "SipMediaApplicationCall")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    CreateSipMediaApplicationCall
+  where
+  hashWithSalt _salt CreateSipMediaApplicationCall' {..} =
+    _salt
+      `Prelude.hashWithSalt` sipHeaders
+      `Prelude.hashWithSalt` fromPhoneNumber
+      `Prelude.hashWithSalt` toPhoneNumber
+      `Prelude.hashWithSalt` sipMediaApplicationId
+
+instance Prelude.NFData CreateSipMediaApplicationCall where
+  rnf CreateSipMediaApplicationCall' {..} =
+    Prelude.rnf sipHeaders
+      `Prelude.seq` Prelude.rnf fromPhoneNumber
+      `Prelude.seq` Prelude.rnf toPhoneNumber
+      `Prelude.seq` Prelude.rnf sipMediaApplicationId
+
+instance Data.ToHeaders CreateSipMediaApplicationCall where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON CreateSipMediaApplicationCall where
+  toJSON CreateSipMediaApplicationCall' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SipHeaders" Data..=) Prelude.<$> sipHeaders,
+            Prelude.Just
+              ("FromPhoneNumber" Data..= fromPhoneNumber),
+            Prelude.Just
+              ("ToPhoneNumber" Data..= toPhoneNumber)
+          ]
+      )
+
+instance Data.ToPath CreateSipMediaApplicationCall where
+  toPath CreateSipMediaApplicationCall' {..} =
+    Prelude.mconcat
+      [ "/sip-media-applications/",
+        Data.toBS sipMediaApplicationId,
+        "/calls"
+      ]
+
+instance Data.ToQuery CreateSipMediaApplicationCall where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateSipMediaApplicationCallResponse' smart constructor.
+data CreateSipMediaApplicationCallResponse = CreateSipMediaApplicationCallResponse'
+  { -- | The actual call.
+    sipMediaApplicationCall :: Prelude.Maybe SipMediaApplicationCall,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateSipMediaApplicationCallResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sipMediaApplicationCall', 'createSipMediaApplicationCallResponse_sipMediaApplicationCall' - The actual call.
+--
+-- 'httpStatus', 'createSipMediaApplicationCallResponse_httpStatus' - The response's http status code.
+newCreateSipMediaApplicationCallResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateSipMediaApplicationCallResponse
+newCreateSipMediaApplicationCallResponse pHttpStatus_ =
+  CreateSipMediaApplicationCallResponse'
+    { sipMediaApplicationCall =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The actual call.
+createSipMediaApplicationCallResponse_sipMediaApplicationCall :: Lens.Lens' CreateSipMediaApplicationCallResponse (Prelude.Maybe SipMediaApplicationCall)
+createSipMediaApplicationCallResponse_sipMediaApplicationCall = Lens.lens (\CreateSipMediaApplicationCallResponse' {sipMediaApplicationCall} -> sipMediaApplicationCall) (\s@CreateSipMediaApplicationCallResponse' {} a -> s {sipMediaApplicationCall = a} :: CreateSipMediaApplicationCallResponse)
+
+-- | The response's http status code.
+createSipMediaApplicationCallResponse_httpStatus :: Lens.Lens' CreateSipMediaApplicationCallResponse Prelude.Int
+createSipMediaApplicationCallResponse_httpStatus = Lens.lens (\CreateSipMediaApplicationCallResponse' {httpStatus} -> httpStatus) (\s@CreateSipMediaApplicationCallResponse' {} a -> s {httpStatus = a} :: CreateSipMediaApplicationCallResponse)
+
+instance
+  Prelude.NFData
+    CreateSipMediaApplicationCallResponse
+  where
+  rnf CreateSipMediaApplicationCallResponse' {..} =
+    Prelude.rnf sipMediaApplicationCall
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/CreateSipRule.hs b/gen/Amazonka/Chime/CreateSipRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/CreateSipRule.hs
@@ -0,0 +1,255 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.CreateSipRule
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a SIP rule which can be used to run a SIP media application as a
+-- target for a specific trigger type.
+module Amazonka.Chime.CreateSipRule
+  ( -- * Creating a Request
+    CreateSipRule (..),
+    newCreateSipRule,
+
+    -- * Request Lenses
+    createSipRule_disabled,
+    createSipRule_name,
+    createSipRule_triggerType,
+    createSipRule_triggerValue,
+    createSipRule_targetApplications,
+
+    -- * Destructuring the Response
+    CreateSipRuleResponse (..),
+    newCreateSipRuleResponse,
+
+    -- * Response Lenses
+    createSipRuleResponse_sipRule,
+    createSipRuleResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateSipRule' smart constructor.
+data CreateSipRule = CreateSipRule'
+  { -- | Enables or disables a rule. You must disable rules before you can delete
+    -- them.
+    disabled :: Prelude.Maybe Prelude.Bool,
+    -- | The name of the SIP rule.
+    name :: Prelude.Text,
+    -- | The type of trigger assigned to the SIP rule in @TriggerValue@,
+    -- currently @RequestUriHostname@ or @ToPhoneNumber@.
+    triggerType :: SipRuleTriggerType,
+    -- | If @TriggerType@ is @RequestUriHostname@, the value can be the outbound
+    -- host name of an Amazon Chime Voice Connector. If @TriggerType@ is
+    -- @ToPhoneNumber@, the value can be a customer-owned phone number in the
+    -- E164 format. The @SipMediaApplication@ specified in the @SipRule@ is
+    -- triggered if the request URI in an incoming SIP request matches the
+    -- @RequestUriHostname@, or if the @To@ header in the incoming SIP request
+    -- matches the @ToPhoneNumber@ value.
+    triggerValue :: Prelude.Text,
+    -- | List of SIP media applications with priority and AWS Region. Only one
+    -- SIP application per AWS Region can be used.
+    targetApplications :: Prelude.NonEmpty SipRuleTargetApplication
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateSipRule' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'disabled', 'createSipRule_disabled' - Enables or disables a rule. You must disable rules before you can delete
+-- them.
+--
+-- 'name', 'createSipRule_name' - The name of the SIP rule.
+--
+-- 'triggerType', 'createSipRule_triggerType' - The type of trigger assigned to the SIP rule in @TriggerValue@,
+-- currently @RequestUriHostname@ or @ToPhoneNumber@.
+--
+-- 'triggerValue', 'createSipRule_triggerValue' - If @TriggerType@ is @RequestUriHostname@, the value can be the outbound
+-- host name of an Amazon Chime Voice Connector. If @TriggerType@ is
+-- @ToPhoneNumber@, the value can be a customer-owned phone number in the
+-- E164 format. The @SipMediaApplication@ specified in the @SipRule@ is
+-- triggered if the request URI in an incoming SIP request matches the
+-- @RequestUriHostname@, or if the @To@ header in the incoming SIP request
+-- matches the @ToPhoneNumber@ value.
+--
+-- 'targetApplications', 'createSipRule_targetApplications' - List of SIP media applications with priority and AWS Region. Only one
+-- SIP application per AWS Region can be used.
+newCreateSipRule ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'triggerType'
+  SipRuleTriggerType ->
+  -- | 'triggerValue'
+  Prelude.Text ->
+  -- | 'targetApplications'
+  Prelude.NonEmpty SipRuleTargetApplication ->
+  CreateSipRule
+newCreateSipRule
+  pName_
+  pTriggerType_
+  pTriggerValue_
+  pTargetApplications_ =
+    CreateSipRule'
+      { disabled = Prelude.Nothing,
+        name = pName_,
+        triggerType = pTriggerType_,
+        triggerValue = pTriggerValue_,
+        targetApplications =
+          Lens.coerced Lens.# pTargetApplications_
+      }
+
+-- | Enables or disables a rule. You must disable rules before you can delete
+-- them.
+createSipRule_disabled :: Lens.Lens' CreateSipRule (Prelude.Maybe Prelude.Bool)
+createSipRule_disabled = Lens.lens (\CreateSipRule' {disabled} -> disabled) (\s@CreateSipRule' {} a -> s {disabled = a} :: CreateSipRule)
+
+-- | The name of the SIP rule.
+createSipRule_name :: Lens.Lens' CreateSipRule Prelude.Text
+createSipRule_name = Lens.lens (\CreateSipRule' {name} -> name) (\s@CreateSipRule' {} a -> s {name = a} :: CreateSipRule)
+
+-- | The type of trigger assigned to the SIP rule in @TriggerValue@,
+-- currently @RequestUriHostname@ or @ToPhoneNumber@.
+createSipRule_triggerType :: Lens.Lens' CreateSipRule SipRuleTriggerType
+createSipRule_triggerType = Lens.lens (\CreateSipRule' {triggerType} -> triggerType) (\s@CreateSipRule' {} a -> s {triggerType = a} :: CreateSipRule)
+
+-- | If @TriggerType@ is @RequestUriHostname@, the value can be the outbound
+-- host name of an Amazon Chime Voice Connector. If @TriggerType@ is
+-- @ToPhoneNumber@, the value can be a customer-owned phone number in the
+-- E164 format. The @SipMediaApplication@ specified in the @SipRule@ is
+-- triggered if the request URI in an incoming SIP request matches the
+-- @RequestUriHostname@, or if the @To@ header in the incoming SIP request
+-- matches the @ToPhoneNumber@ value.
+createSipRule_triggerValue :: Lens.Lens' CreateSipRule Prelude.Text
+createSipRule_triggerValue = Lens.lens (\CreateSipRule' {triggerValue} -> triggerValue) (\s@CreateSipRule' {} a -> s {triggerValue = a} :: CreateSipRule)
+
+-- | List of SIP media applications with priority and AWS Region. Only one
+-- SIP application per AWS Region can be used.
+createSipRule_targetApplications :: Lens.Lens' CreateSipRule (Prelude.NonEmpty SipRuleTargetApplication)
+createSipRule_targetApplications = Lens.lens (\CreateSipRule' {targetApplications} -> targetApplications) (\s@CreateSipRule' {} a -> s {targetApplications = a} :: CreateSipRule) Prelude.. Lens.coerced
+
+instance Core.AWSRequest CreateSipRule where
+  type
+    AWSResponse CreateSipRule =
+      CreateSipRuleResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateSipRuleResponse'
+            Prelude.<$> (x Data..?> "SipRule")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateSipRule where
+  hashWithSalt _salt CreateSipRule' {..} =
+    _salt
+      `Prelude.hashWithSalt` disabled
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` triggerType
+      `Prelude.hashWithSalt` triggerValue
+      `Prelude.hashWithSalt` targetApplications
+
+instance Prelude.NFData CreateSipRule where
+  rnf CreateSipRule' {..} =
+    Prelude.rnf disabled
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf triggerType
+      `Prelude.seq` Prelude.rnf triggerValue
+      `Prelude.seq` Prelude.rnf targetApplications
+
+instance Data.ToHeaders CreateSipRule where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON CreateSipRule where
+  toJSON CreateSipRule' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Disabled" Data..=) Prelude.<$> disabled,
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("TriggerType" Data..= triggerType),
+            Prelude.Just ("TriggerValue" Data..= triggerValue),
+            Prelude.Just
+              ("TargetApplications" Data..= targetApplications)
+          ]
+      )
+
+instance Data.ToPath CreateSipRule where
+  toPath = Prelude.const "/sip-rules"
+
+instance Data.ToQuery CreateSipRule where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateSipRuleResponse' smart constructor.
+data CreateSipRuleResponse = CreateSipRuleResponse'
+  { -- | Returns the SIP rule information, including the rule ID, triggers, and
+    -- target applications.
+    sipRule :: Prelude.Maybe SipRule,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateSipRuleResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sipRule', 'createSipRuleResponse_sipRule' - Returns the SIP rule information, including the rule ID, triggers, and
+-- target applications.
+--
+-- 'httpStatus', 'createSipRuleResponse_httpStatus' - The response's http status code.
+newCreateSipRuleResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateSipRuleResponse
+newCreateSipRuleResponse pHttpStatus_ =
+  CreateSipRuleResponse'
+    { sipRule = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Returns the SIP rule information, including the rule ID, triggers, and
+-- target applications.
+createSipRuleResponse_sipRule :: Lens.Lens' CreateSipRuleResponse (Prelude.Maybe SipRule)
+createSipRuleResponse_sipRule = Lens.lens (\CreateSipRuleResponse' {sipRule} -> sipRule) (\s@CreateSipRuleResponse' {} a -> s {sipRule = a} :: CreateSipRuleResponse)
+
+-- | The response's http status code.
+createSipRuleResponse_httpStatus :: Lens.Lens' CreateSipRuleResponse Prelude.Int
+createSipRuleResponse_httpStatus = Lens.lens (\CreateSipRuleResponse' {httpStatus} -> httpStatus) (\s@CreateSipRuleResponse' {} a -> s {httpStatus = a} :: CreateSipRuleResponse)
+
+instance Prelude.NFData CreateSipRuleResponse where
+  rnf CreateSipRuleResponse' {..} =
+    Prelude.rnf sipRule
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/CreateUser.hs b/gen/Amazonka/Chime/CreateUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/CreateUser.hs
@@ -0,0 +1,199 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.CreateUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a user under the specified Amazon Chime account.
+module Amazonka.Chime.CreateUser
+  ( -- * Creating a Request
+    CreateUser (..),
+    newCreateUser,
+
+    -- * Request Lenses
+    createUser_email,
+    createUser_userType,
+    createUser_username,
+    createUser_accountId,
+
+    -- * Destructuring the Response
+    CreateUserResponse (..),
+    newCreateUserResponse,
+
+    -- * Response Lenses
+    createUserResponse_user,
+    createUserResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateUser' smart constructor.
+data CreateUser = CreateUser'
+  { -- | The user\'s email address.
+    email :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The user type.
+    userType :: Prelude.Maybe UserType,
+    -- | The user name.
+    username :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateUser' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'email', 'createUser_email' - The user\'s email address.
+--
+-- 'userType', 'createUser_userType' - The user type.
+--
+-- 'username', 'createUser_username' - The user name.
+--
+-- 'accountId', 'createUser_accountId' - The Amazon Chime account ID.
+newCreateUser ::
+  -- | 'accountId'
+  Prelude.Text ->
+  CreateUser
+newCreateUser pAccountId_ =
+  CreateUser'
+    { email = Prelude.Nothing,
+      userType = Prelude.Nothing,
+      username = Prelude.Nothing,
+      accountId = pAccountId_
+    }
+
+-- | The user\'s email address.
+createUser_email :: Lens.Lens' CreateUser (Prelude.Maybe Prelude.Text)
+createUser_email = Lens.lens (\CreateUser' {email} -> email) (\s@CreateUser' {} a -> s {email = a} :: CreateUser) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The user type.
+createUser_userType :: Lens.Lens' CreateUser (Prelude.Maybe UserType)
+createUser_userType = Lens.lens (\CreateUser' {userType} -> userType) (\s@CreateUser' {} a -> s {userType = a} :: CreateUser)
+
+-- | The user name.
+createUser_username :: Lens.Lens' CreateUser (Prelude.Maybe Prelude.Text)
+createUser_username = Lens.lens (\CreateUser' {username} -> username) (\s@CreateUser' {} a -> s {username = a} :: CreateUser)
+
+-- | The Amazon Chime account ID.
+createUser_accountId :: Lens.Lens' CreateUser Prelude.Text
+createUser_accountId = Lens.lens (\CreateUser' {accountId} -> accountId) (\s@CreateUser' {} a -> s {accountId = a} :: CreateUser)
+
+instance Core.AWSRequest CreateUser where
+  type AWSResponse CreateUser = CreateUserResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateUserResponse'
+            Prelude.<$> (x Data..?> "User")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateUser where
+  hashWithSalt _salt CreateUser' {..} =
+    _salt
+      `Prelude.hashWithSalt` email
+      `Prelude.hashWithSalt` userType
+      `Prelude.hashWithSalt` username
+      `Prelude.hashWithSalt` accountId
+
+instance Prelude.NFData CreateUser where
+  rnf CreateUser' {..} =
+    Prelude.rnf email
+      `Prelude.seq` Prelude.rnf userType
+      `Prelude.seq` Prelude.rnf username
+      `Prelude.seq` Prelude.rnf accountId
+
+instance Data.ToHeaders CreateUser where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON CreateUser where
+  toJSON CreateUser' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Email" Data..=) Prelude.<$> email,
+            ("UserType" Data..=) Prelude.<$> userType,
+            ("Username" Data..=) Prelude.<$> username
+          ]
+      )
+
+instance Data.ToPath CreateUser where
+  toPath CreateUser' {..} =
+    Prelude.mconcat
+      ["/accounts/", Data.toBS accountId, "/users"]
+
+instance Data.ToQuery CreateUser where
+  toQuery =
+    Prelude.const
+      (Prelude.mconcat ["operation=create"])
+
+-- | /See:/ 'newCreateUserResponse' smart constructor.
+data CreateUserResponse = CreateUserResponse'
+  { user :: Prelude.Maybe User,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateUserResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'user', 'createUserResponse_user' - Undocumented member.
+--
+-- 'httpStatus', 'createUserResponse_httpStatus' - The response's http status code.
+newCreateUserResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateUserResponse
+newCreateUserResponse pHttpStatus_ =
+  CreateUserResponse'
+    { user = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+createUserResponse_user :: Lens.Lens' CreateUserResponse (Prelude.Maybe User)
+createUserResponse_user = Lens.lens (\CreateUserResponse' {user} -> user) (\s@CreateUserResponse' {} a -> s {user = a} :: CreateUserResponse)
+
+-- | The response's http status code.
+createUserResponse_httpStatus :: Lens.Lens' CreateUserResponse Prelude.Int
+createUserResponse_httpStatus = Lens.lens (\CreateUserResponse' {httpStatus} -> httpStatus) (\s@CreateUserResponse' {} a -> s {httpStatus = a} :: CreateUserResponse)
+
+instance Prelude.NFData CreateUserResponse where
+  rnf CreateUserResponse' {..} =
+    Prelude.rnf user
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/CreateVoiceConnector.hs b/gen/Amazonka/Chime/CreateVoiceConnector.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/CreateVoiceConnector.hs
@@ -0,0 +1,200 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.CreateVoiceConnector
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an Amazon Chime Voice Connector under the administrator\'s AWS
+-- account. You can choose to create an Amazon Chime Voice Connector in a
+-- specific AWS Region.
+--
+-- Enabling CreateVoiceConnectorRequest$RequireEncryption configures your
+-- Amazon Chime Voice Connector to use TLS transport for SIP signaling and
+-- Secure RTP (SRTP) for media. Inbound calls use TLS transport, and
+-- unencrypted outbound calls are blocked.
+module Amazonka.Chime.CreateVoiceConnector
+  ( -- * Creating a Request
+    CreateVoiceConnector (..),
+    newCreateVoiceConnector,
+
+    -- * Request Lenses
+    createVoiceConnector_awsRegion,
+    createVoiceConnector_name,
+    createVoiceConnector_requireEncryption,
+
+    -- * Destructuring the Response
+    CreateVoiceConnectorResponse (..),
+    newCreateVoiceConnectorResponse,
+
+    -- * Response Lenses
+    createVoiceConnectorResponse_voiceConnector,
+    createVoiceConnectorResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateVoiceConnector' smart constructor.
+data CreateVoiceConnector = CreateVoiceConnector'
+  { -- | The AWS Region in which the Amazon Chime Voice Connector is created.
+    -- Default value: @us-east-1@ .
+    awsRegion :: Prelude.Maybe VoiceConnectorAwsRegion,
+    -- | The name of the Amazon Chime Voice Connector.
+    name :: Prelude.Text,
+    -- | When enabled, requires encryption for the Amazon Chime Voice Connector.
+    requireEncryption :: Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateVoiceConnector' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsRegion', 'createVoiceConnector_awsRegion' - The AWS Region in which the Amazon Chime Voice Connector is created.
+-- Default value: @us-east-1@ .
+--
+-- 'name', 'createVoiceConnector_name' - The name of the Amazon Chime Voice Connector.
+--
+-- 'requireEncryption', 'createVoiceConnector_requireEncryption' - When enabled, requires encryption for the Amazon Chime Voice Connector.
+newCreateVoiceConnector ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'requireEncryption'
+  Prelude.Bool ->
+  CreateVoiceConnector
+newCreateVoiceConnector pName_ pRequireEncryption_ =
+  CreateVoiceConnector'
+    { awsRegion = Prelude.Nothing,
+      name = pName_,
+      requireEncryption = pRequireEncryption_
+    }
+
+-- | The AWS Region in which the Amazon Chime Voice Connector is created.
+-- Default value: @us-east-1@ .
+createVoiceConnector_awsRegion :: Lens.Lens' CreateVoiceConnector (Prelude.Maybe VoiceConnectorAwsRegion)
+createVoiceConnector_awsRegion = Lens.lens (\CreateVoiceConnector' {awsRegion} -> awsRegion) (\s@CreateVoiceConnector' {} a -> s {awsRegion = a} :: CreateVoiceConnector)
+
+-- | The name of the Amazon Chime Voice Connector.
+createVoiceConnector_name :: Lens.Lens' CreateVoiceConnector Prelude.Text
+createVoiceConnector_name = Lens.lens (\CreateVoiceConnector' {name} -> name) (\s@CreateVoiceConnector' {} a -> s {name = a} :: CreateVoiceConnector)
+
+-- | When enabled, requires encryption for the Amazon Chime Voice Connector.
+createVoiceConnector_requireEncryption :: Lens.Lens' CreateVoiceConnector Prelude.Bool
+createVoiceConnector_requireEncryption = Lens.lens (\CreateVoiceConnector' {requireEncryption} -> requireEncryption) (\s@CreateVoiceConnector' {} a -> s {requireEncryption = a} :: CreateVoiceConnector)
+
+instance Core.AWSRequest CreateVoiceConnector where
+  type
+    AWSResponse CreateVoiceConnector =
+      CreateVoiceConnectorResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateVoiceConnectorResponse'
+            Prelude.<$> (x Data..?> "VoiceConnector")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateVoiceConnector where
+  hashWithSalt _salt CreateVoiceConnector' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsRegion
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` requireEncryption
+
+instance Prelude.NFData CreateVoiceConnector where
+  rnf CreateVoiceConnector' {..} =
+    Prelude.rnf awsRegion
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf requireEncryption
+
+instance Data.ToHeaders CreateVoiceConnector where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON CreateVoiceConnector where
+  toJSON CreateVoiceConnector' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AwsRegion" Data..=) Prelude.<$> awsRegion,
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just
+              ("RequireEncryption" Data..= requireEncryption)
+          ]
+      )
+
+instance Data.ToPath CreateVoiceConnector where
+  toPath = Prelude.const "/voice-connectors"
+
+instance Data.ToQuery CreateVoiceConnector where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateVoiceConnectorResponse' smart constructor.
+data CreateVoiceConnectorResponse = CreateVoiceConnectorResponse'
+  { -- | The Amazon Chime Voice Connector details.
+    voiceConnector :: Prelude.Maybe VoiceConnector,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateVoiceConnectorResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnector', 'createVoiceConnectorResponse_voiceConnector' - The Amazon Chime Voice Connector details.
+--
+-- 'httpStatus', 'createVoiceConnectorResponse_httpStatus' - The response's http status code.
+newCreateVoiceConnectorResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateVoiceConnectorResponse
+newCreateVoiceConnectorResponse pHttpStatus_ =
+  CreateVoiceConnectorResponse'
+    { voiceConnector =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Chime Voice Connector details.
+createVoiceConnectorResponse_voiceConnector :: Lens.Lens' CreateVoiceConnectorResponse (Prelude.Maybe VoiceConnector)
+createVoiceConnectorResponse_voiceConnector = Lens.lens (\CreateVoiceConnectorResponse' {voiceConnector} -> voiceConnector) (\s@CreateVoiceConnectorResponse' {} a -> s {voiceConnector = a} :: CreateVoiceConnectorResponse)
+
+-- | The response's http status code.
+createVoiceConnectorResponse_httpStatus :: Lens.Lens' CreateVoiceConnectorResponse Prelude.Int
+createVoiceConnectorResponse_httpStatus = Lens.lens (\CreateVoiceConnectorResponse' {httpStatus} -> httpStatus) (\s@CreateVoiceConnectorResponse' {} a -> s {httpStatus = a} :: CreateVoiceConnectorResponse)
+
+instance Prelude.NFData CreateVoiceConnectorResponse where
+  rnf CreateVoiceConnectorResponse' {..} =
+    Prelude.rnf voiceConnector
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/CreateVoiceConnectorGroup.hs b/gen/Amazonka/Chime/CreateVoiceConnectorGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/CreateVoiceConnectorGroup.hs
@@ -0,0 +1,186 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.CreateVoiceConnectorGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an Amazon Chime Voice Connector group under the administrator\'s
+-- AWS account. You can associate Amazon Chime Voice Connectors with the
+-- Amazon Chime Voice Connector group by including @VoiceConnectorItems@ in
+-- the request.
+--
+-- You can include Amazon Chime Voice Connectors from different AWS Regions
+-- in your group. This creates a fault tolerant mechanism for fallback in
+-- case of availability events.
+module Amazonka.Chime.CreateVoiceConnectorGroup
+  ( -- * Creating a Request
+    CreateVoiceConnectorGroup (..),
+    newCreateVoiceConnectorGroup,
+
+    -- * Request Lenses
+    createVoiceConnectorGroup_voiceConnectorItems,
+    createVoiceConnectorGroup_name,
+
+    -- * Destructuring the Response
+    CreateVoiceConnectorGroupResponse (..),
+    newCreateVoiceConnectorGroupResponse,
+
+    -- * Response Lenses
+    createVoiceConnectorGroupResponse_voiceConnectorGroup,
+    createVoiceConnectorGroupResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateVoiceConnectorGroup' smart constructor.
+data CreateVoiceConnectorGroup = CreateVoiceConnectorGroup'
+  { -- | The Amazon Chime Voice Connectors to route inbound calls to.
+    voiceConnectorItems :: Prelude.Maybe [VoiceConnectorItem],
+    -- | The name of the Amazon Chime Voice Connector group.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateVoiceConnectorGroup' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorItems', 'createVoiceConnectorGroup_voiceConnectorItems' - The Amazon Chime Voice Connectors to route inbound calls to.
+--
+-- 'name', 'createVoiceConnectorGroup_name' - The name of the Amazon Chime Voice Connector group.
+newCreateVoiceConnectorGroup ::
+  -- | 'name'
+  Prelude.Text ->
+  CreateVoiceConnectorGroup
+newCreateVoiceConnectorGroup pName_ =
+  CreateVoiceConnectorGroup'
+    { voiceConnectorItems =
+        Prelude.Nothing,
+      name = pName_
+    }
+
+-- | The Amazon Chime Voice Connectors to route inbound calls to.
+createVoiceConnectorGroup_voiceConnectorItems :: Lens.Lens' CreateVoiceConnectorGroup (Prelude.Maybe [VoiceConnectorItem])
+createVoiceConnectorGroup_voiceConnectorItems = Lens.lens (\CreateVoiceConnectorGroup' {voiceConnectorItems} -> voiceConnectorItems) (\s@CreateVoiceConnectorGroup' {} a -> s {voiceConnectorItems = a} :: CreateVoiceConnectorGroup) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the Amazon Chime Voice Connector group.
+createVoiceConnectorGroup_name :: Lens.Lens' CreateVoiceConnectorGroup Prelude.Text
+createVoiceConnectorGroup_name = Lens.lens (\CreateVoiceConnectorGroup' {name} -> name) (\s@CreateVoiceConnectorGroup' {} a -> s {name = a} :: CreateVoiceConnectorGroup)
+
+instance Core.AWSRequest CreateVoiceConnectorGroup where
+  type
+    AWSResponse CreateVoiceConnectorGroup =
+      CreateVoiceConnectorGroupResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateVoiceConnectorGroupResponse'
+            Prelude.<$> (x Data..?> "VoiceConnectorGroup")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateVoiceConnectorGroup where
+  hashWithSalt _salt CreateVoiceConnectorGroup' {..} =
+    _salt
+      `Prelude.hashWithSalt` voiceConnectorItems
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData CreateVoiceConnectorGroup where
+  rnf CreateVoiceConnectorGroup' {..} =
+    Prelude.rnf voiceConnectorItems
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToHeaders CreateVoiceConnectorGroup where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON CreateVoiceConnectorGroup where
+  toJSON CreateVoiceConnectorGroup' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("VoiceConnectorItems" Data..=)
+              Prelude.<$> voiceConnectorItems,
+            Prelude.Just ("Name" Data..= name)
+          ]
+      )
+
+instance Data.ToPath CreateVoiceConnectorGroup where
+  toPath = Prelude.const "/voice-connector-groups"
+
+instance Data.ToQuery CreateVoiceConnectorGroup where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateVoiceConnectorGroupResponse' smart constructor.
+data CreateVoiceConnectorGroupResponse = CreateVoiceConnectorGroupResponse'
+  { -- | The Amazon Chime Voice Connector group details.
+    voiceConnectorGroup :: Prelude.Maybe VoiceConnectorGroup,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateVoiceConnectorGroupResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorGroup', 'createVoiceConnectorGroupResponse_voiceConnectorGroup' - The Amazon Chime Voice Connector group details.
+--
+-- 'httpStatus', 'createVoiceConnectorGroupResponse_httpStatus' - The response's http status code.
+newCreateVoiceConnectorGroupResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateVoiceConnectorGroupResponse
+newCreateVoiceConnectorGroupResponse pHttpStatus_ =
+  CreateVoiceConnectorGroupResponse'
+    { voiceConnectorGroup =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Chime Voice Connector group details.
+createVoiceConnectorGroupResponse_voiceConnectorGroup :: Lens.Lens' CreateVoiceConnectorGroupResponse (Prelude.Maybe VoiceConnectorGroup)
+createVoiceConnectorGroupResponse_voiceConnectorGroup = Lens.lens (\CreateVoiceConnectorGroupResponse' {voiceConnectorGroup} -> voiceConnectorGroup) (\s@CreateVoiceConnectorGroupResponse' {} a -> s {voiceConnectorGroup = a} :: CreateVoiceConnectorGroupResponse)
+
+-- | The response's http status code.
+createVoiceConnectorGroupResponse_httpStatus :: Lens.Lens' CreateVoiceConnectorGroupResponse Prelude.Int
+createVoiceConnectorGroupResponse_httpStatus = Lens.lens (\CreateVoiceConnectorGroupResponse' {httpStatus} -> httpStatus) (\s@CreateVoiceConnectorGroupResponse' {} a -> s {httpStatus = a} :: CreateVoiceConnectorGroupResponse)
+
+instance
+  Prelude.NFData
+    CreateVoiceConnectorGroupResponse
+  where
+  rnf CreateVoiceConnectorGroupResponse' {..} =
+    Prelude.rnf voiceConnectorGroup
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/DeleteAccount.hs b/gen/Amazonka/Chime/DeleteAccount.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DeleteAccount.hs
@@ -0,0 +1,148 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DeleteAccount
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the specified Amazon Chime account. You must suspend all users
+-- before deleting @Team@ account. You can use the BatchSuspendUser action
+-- to dodo.
+--
+-- For @EnterpriseLWA@ and @EnterpriseAD@ accounts, you must release the
+-- claimed domains for your Amazon Chime account before deletion. As soon
+-- as you release the domain, all users under that account are suspended.
+--
+-- Deleted accounts appear in your @Disabled@ accounts list for 90 days. To
+-- restore deleted account from your @Disabled@ accounts list, you must
+-- contact AWS Support.
+--
+-- After 90 days, deleted accounts are permanently removed from your
+-- @Disabled@ accounts list.
+module Amazonka.Chime.DeleteAccount
+  ( -- * Creating a Request
+    DeleteAccount (..),
+    newDeleteAccount,
+
+    -- * Request Lenses
+    deleteAccount_accountId,
+
+    -- * Destructuring the Response
+    DeleteAccountResponse (..),
+    newDeleteAccountResponse,
+
+    -- * Response Lenses
+    deleteAccountResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteAccount' smart constructor.
+data DeleteAccount = DeleteAccount'
+  { -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteAccount' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'deleteAccount_accountId' - The Amazon Chime account ID.
+newDeleteAccount ::
+  -- | 'accountId'
+  Prelude.Text ->
+  DeleteAccount
+newDeleteAccount pAccountId_ =
+  DeleteAccount' {accountId = pAccountId_}
+
+-- | The Amazon Chime account ID.
+deleteAccount_accountId :: Lens.Lens' DeleteAccount Prelude.Text
+deleteAccount_accountId = Lens.lens (\DeleteAccount' {accountId} -> accountId) (\s@DeleteAccount' {} a -> s {accountId = a} :: DeleteAccount)
+
+instance Core.AWSRequest DeleteAccount where
+  type
+    AWSResponse DeleteAccount =
+      DeleteAccountResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteAccountResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteAccount where
+  hashWithSalt _salt DeleteAccount' {..} =
+    _salt `Prelude.hashWithSalt` accountId
+
+instance Prelude.NFData DeleteAccount where
+  rnf DeleteAccount' {..} = Prelude.rnf accountId
+
+instance Data.ToHeaders DeleteAccount where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteAccount where
+  toPath DeleteAccount' {..} =
+    Prelude.mconcat ["/accounts/", Data.toBS accountId]
+
+instance Data.ToQuery DeleteAccount where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteAccountResponse' smart constructor.
+data DeleteAccountResponse = DeleteAccountResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteAccountResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'deleteAccountResponse_httpStatus' - The response's http status code.
+newDeleteAccountResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteAccountResponse
+newDeleteAccountResponse pHttpStatus_ =
+  DeleteAccountResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+deleteAccountResponse_httpStatus :: Lens.Lens' DeleteAccountResponse Prelude.Int
+deleteAccountResponse_httpStatus = Lens.lens (\DeleteAccountResponse' {httpStatus} -> httpStatus) (\s@DeleteAccountResponse' {} a -> s {httpStatus = a} :: DeleteAccountResponse)
+
+instance Prelude.NFData DeleteAccountResponse where
+  rnf DeleteAccountResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/DeleteAppInstance.hs b/gen/Amazonka/Chime/DeleteAppInstance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DeleteAppInstance.hs
@@ -0,0 +1,120 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DeleteAppInstance
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes an @AppInstance@ and all associated data asynchronously.
+module Amazonka.Chime.DeleteAppInstance
+  ( -- * Creating a Request
+    DeleteAppInstance (..),
+    newDeleteAppInstance,
+
+    -- * Request Lenses
+    deleteAppInstance_appInstanceArn,
+
+    -- * Destructuring the Response
+    DeleteAppInstanceResponse (..),
+    newDeleteAppInstanceResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteAppInstance' smart constructor.
+data DeleteAppInstance = DeleteAppInstance'
+  { -- | The ARN of the @AppInstance@.
+    appInstanceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteAppInstance' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceArn', 'deleteAppInstance_appInstanceArn' - The ARN of the @AppInstance@.
+newDeleteAppInstance ::
+  -- | 'appInstanceArn'
+  Prelude.Text ->
+  DeleteAppInstance
+newDeleteAppInstance pAppInstanceArn_ =
+  DeleteAppInstance'
+    { appInstanceArn =
+        pAppInstanceArn_
+    }
+
+-- | The ARN of the @AppInstance@.
+deleteAppInstance_appInstanceArn :: Lens.Lens' DeleteAppInstance Prelude.Text
+deleteAppInstance_appInstanceArn = Lens.lens (\DeleteAppInstance' {appInstanceArn} -> appInstanceArn) (\s@DeleteAppInstance' {} a -> s {appInstanceArn = a} :: DeleteAppInstance)
+
+instance Core.AWSRequest DeleteAppInstance where
+  type
+    AWSResponse DeleteAppInstance =
+      DeleteAppInstanceResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull DeleteAppInstanceResponse'
+
+instance Prelude.Hashable DeleteAppInstance where
+  hashWithSalt _salt DeleteAppInstance' {..} =
+    _salt `Prelude.hashWithSalt` appInstanceArn
+
+instance Prelude.NFData DeleteAppInstance where
+  rnf DeleteAppInstance' {..} =
+    Prelude.rnf appInstanceArn
+
+instance Data.ToHeaders DeleteAppInstance where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteAppInstance where
+  toPath DeleteAppInstance' {..} =
+    Prelude.mconcat
+      ["/app-instances/", Data.toBS appInstanceArn]
+
+instance Data.ToQuery DeleteAppInstance where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteAppInstanceResponse' smart constructor.
+data DeleteAppInstanceResponse = DeleteAppInstanceResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteAppInstanceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteAppInstanceResponse ::
+  DeleteAppInstanceResponse
+newDeleteAppInstanceResponse =
+  DeleteAppInstanceResponse'
+
+instance Prelude.NFData DeleteAppInstanceResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/DeleteAppInstanceAdmin.hs b/gen/Amazonka/Chime/DeleteAppInstanceAdmin.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DeleteAppInstanceAdmin.hs
@@ -0,0 +1,146 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DeleteAppInstanceAdmin
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Demotes an @AppInstanceAdmin@ to an @AppInstanceUser@. This action does
+-- not delete the user.
+module Amazonka.Chime.DeleteAppInstanceAdmin
+  ( -- * Creating a Request
+    DeleteAppInstanceAdmin (..),
+    newDeleteAppInstanceAdmin,
+
+    -- * Request Lenses
+    deleteAppInstanceAdmin_appInstanceAdminArn,
+    deleteAppInstanceAdmin_appInstanceArn,
+
+    -- * Destructuring the Response
+    DeleteAppInstanceAdminResponse (..),
+    newDeleteAppInstanceAdminResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteAppInstanceAdmin' smart constructor.
+data DeleteAppInstanceAdmin = DeleteAppInstanceAdmin'
+  { -- | The ARN of the @AppInstance@\'s administrator.
+    appInstanceAdminArn :: Prelude.Text,
+    -- | The ARN of the @AppInstance@.
+    appInstanceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteAppInstanceAdmin' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceAdminArn', 'deleteAppInstanceAdmin_appInstanceAdminArn' - The ARN of the @AppInstance@\'s administrator.
+--
+-- 'appInstanceArn', 'deleteAppInstanceAdmin_appInstanceArn' - The ARN of the @AppInstance@.
+newDeleteAppInstanceAdmin ::
+  -- | 'appInstanceAdminArn'
+  Prelude.Text ->
+  -- | 'appInstanceArn'
+  Prelude.Text ->
+  DeleteAppInstanceAdmin
+newDeleteAppInstanceAdmin
+  pAppInstanceAdminArn_
+  pAppInstanceArn_ =
+    DeleteAppInstanceAdmin'
+      { appInstanceAdminArn =
+          pAppInstanceAdminArn_,
+        appInstanceArn = pAppInstanceArn_
+      }
+
+-- | The ARN of the @AppInstance@\'s administrator.
+deleteAppInstanceAdmin_appInstanceAdminArn :: Lens.Lens' DeleteAppInstanceAdmin Prelude.Text
+deleteAppInstanceAdmin_appInstanceAdminArn = Lens.lens (\DeleteAppInstanceAdmin' {appInstanceAdminArn} -> appInstanceAdminArn) (\s@DeleteAppInstanceAdmin' {} a -> s {appInstanceAdminArn = a} :: DeleteAppInstanceAdmin)
+
+-- | The ARN of the @AppInstance@.
+deleteAppInstanceAdmin_appInstanceArn :: Lens.Lens' DeleteAppInstanceAdmin Prelude.Text
+deleteAppInstanceAdmin_appInstanceArn = Lens.lens (\DeleteAppInstanceAdmin' {appInstanceArn} -> appInstanceArn) (\s@DeleteAppInstanceAdmin' {} a -> s {appInstanceArn = a} :: DeleteAppInstanceAdmin)
+
+instance Core.AWSRequest DeleteAppInstanceAdmin where
+  type
+    AWSResponse DeleteAppInstanceAdmin =
+      DeleteAppInstanceAdminResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteAppInstanceAdminResponse'
+
+instance Prelude.Hashable DeleteAppInstanceAdmin where
+  hashWithSalt _salt DeleteAppInstanceAdmin' {..} =
+    _salt
+      `Prelude.hashWithSalt` appInstanceAdminArn
+      `Prelude.hashWithSalt` appInstanceArn
+
+instance Prelude.NFData DeleteAppInstanceAdmin where
+  rnf DeleteAppInstanceAdmin' {..} =
+    Prelude.rnf appInstanceAdminArn
+      `Prelude.seq` Prelude.rnf appInstanceArn
+
+instance Data.ToHeaders DeleteAppInstanceAdmin where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteAppInstanceAdmin where
+  toPath DeleteAppInstanceAdmin' {..} =
+    Prelude.mconcat
+      [ "/app-instances/",
+        Data.toBS appInstanceArn,
+        "/admins/",
+        Data.toBS appInstanceAdminArn
+      ]
+
+instance Data.ToQuery DeleteAppInstanceAdmin where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteAppInstanceAdminResponse' smart constructor.
+data DeleteAppInstanceAdminResponse = DeleteAppInstanceAdminResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteAppInstanceAdminResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteAppInstanceAdminResponse ::
+  DeleteAppInstanceAdminResponse
+newDeleteAppInstanceAdminResponse =
+  DeleteAppInstanceAdminResponse'
+
+instance
+  Prelude.NFData
+    DeleteAppInstanceAdminResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/DeleteAppInstanceStreamingConfigurations.hs b/gen/Amazonka/Chime/DeleteAppInstanceStreamingConfigurations.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DeleteAppInstanceStreamingConfigurations.hs
@@ -0,0 +1,149 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DeleteAppInstanceStreamingConfigurations
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the streaming configurations of an @AppInstance@.
+module Amazonka.Chime.DeleteAppInstanceStreamingConfigurations
+  ( -- * Creating a Request
+    DeleteAppInstanceStreamingConfigurations (..),
+    newDeleteAppInstanceStreamingConfigurations,
+
+    -- * Request Lenses
+    deleteAppInstanceStreamingConfigurations_appInstanceArn,
+
+    -- * Destructuring the Response
+    DeleteAppInstanceStreamingConfigurationsResponse (..),
+    newDeleteAppInstanceStreamingConfigurationsResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteAppInstanceStreamingConfigurations' smart constructor.
+data DeleteAppInstanceStreamingConfigurations = DeleteAppInstanceStreamingConfigurations'
+  { -- | The ARN of the streaming configurations being deleted.
+    appInstanceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteAppInstanceStreamingConfigurations' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceArn', 'deleteAppInstanceStreamingConfigurations_appInstanceArn' - The ARN of the streaming configurations being deleted.
+newDeleteAppInstanceStreamingConfigurations ::
+  -- | 'appInstanceArn'
+  Prelude.Text ->
+  DeleteAppInstanceStreamingConfigurations
+newDeleteAppInstanceStreamingConfigurations
+  pAppInstanceArn_ =
+    DeleteAppInstanceStreamingConfigurations'
+      { appInstanceArn =
+          pAppInstanceArn_
+      }
+
+-- | The ARN of the streaming configurations being deleted.
+deleteAppInstanceStreamingConfigurations_appInstanceArn :: Lens.Lens' DeleteAppInstanceStreamingConfigurations Prelude.Text
+deleteAppInstanceStreamingConfigurations_appInstanceArn = Lens.lens (\DeleteAppInstanceStreamingConfigurations' {appInstanceArn} -> appInstanceArn) (\s@DeleteAppInstanceStreamingConfigurations' {} a -> s {appInstanceArn = a} :: DeleteAppInstanceStreamingConfigurations)
+
+instance
+  Core.AWSRequest
+    DeleteAppInstanceStreamingConfigurations
+  where
+  type
+    AWSResponse
+      DeleteAppInstanceStreamingConfigurations =
+      DeleteAppInstanceStreamingConfigurationsResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteAppInstanceStreamingConfigurationsResponse'
+
+instance
+  Prelude.Hashable
+    DeleteAppInstanceStreamingConfigurations
+  where
+  hashWithSalt
+    _salt
+    DeleteAppInstanceStreamingConfigurations' {..} =
+      _salt `Prelude.hashWithSalt` appInstanceArn
+
+instance
+  Prelude.NFData
+    DeleteAppInstanceStreamingConfigurations
+  where
+  rnf DeleteAppInstanceStreamingConfigurations' {..} =
+    Prelude.rnf appInstanceArn
+
+instance
+  Data.ToHeaders
+    DeleteAppInstanceStreamingConfigurations
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    DeleteAppInstanceStreamingConfigurations
+  where
+  toPath DeleteAppInstanceStreamingConfigurations' {..} =
+    Prelude.mconcat
+      [ "/app-instances/",
+        Data.toBS appInstanceArn,
+        "/streaming-configurations"
+      ]
+
+instance
+  Data.ToQuery
+    DeleteAppInstanceStreamingConfigurations
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteAppInstanceStreamingConfigurationsResponse' smart constructor.
+data DeleteAppInstanceStreamingConfigurationsResponse = DeleteAppInstanceStreamingConfigurationsResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteAppInstanceStreamingConfigurationsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteAppInstanceStreamingConfigurationsResponse ::
+  DeleteAppInstanceStreamingConfigurationsResponse
+newDeleteAppInstanceStreamingConfigurationsResponse =
+  DeleteAppInstanceStreamingConfigurationsResponse'
+
+instance
+  Prelude.NFData
+    DeleteAppInstanceStreamingConfigurationsResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/DeleteAppInstanceUser.hs b/gen/Amazonka/Chime/DeleteAppInstanceUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DeleteAppInstanceUser.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DeleteAppInstanceUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes an @AppInstanceUser@.
+module Amazonka.Chime.DeleteAppInstanceUser
+  ( -- * Creating a Request
+    DeleteAppInstanceUser (..),
+    newDeleteAppInstanceUser,
+
+    -- * Request Lenses
+    deleteAppInstanceUser_appInstanceUserArn,
+
+    -- * Destructuring the Response
+    DeleteAppInstanceUserResponse (..),
+    newDeleteAppInstanceUserResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteAppInstanceUser' smart constructor.
+data DeleteAppInstanceUser = DeleteAppInstanceUser'
+  { -- | The ARN of the user request being deleted.
+    appInstanceUserArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteAppInstanceUser' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceUserArn', 'deleteAppInstanceUser_appInstanceUserArn' - The ARN of the user request being deleted.
+newDeleteAppInstanceUser ::
+  -- | 'appInstanceUserArn'
+  Prelude.Text ->
+  DeleteAppInstanceUser
+newDeleteAppInstanceUser pAppInstanceUserArn_ =
+  DeleteAppInstanceUser'
+    { appInstanceUserArn =
+        pAppInstanceUserArn_
+    }
+
+-- | The ARN of the user request being deleted.
+deleteAppInstanceUser_appInstanceUserArn :: Lens.Lens' DeleteAppInstanceUser Prelude.Text
+deleteAppInstanceUser_appInstanceUserArn = Lens.lens (\DeleteAppInstanceUser' {appInstanceUserArn} -> appInstanceUserArn) (\s@DeleteAppInstanceUser' {} a -> s {appInstanceUserArn = a} :: DeleteAppInstanceUser)
+
+instance Core.AWSRequest DeleteAppInstanceUser where
+  type
+    AWSResponse DeleteAppInstanceUser =
+      DeleteAppInstanceUserResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull DeleteAppInstanceUserResponse'
+
+instance Prelude.Hashable DeleteAppInstanceUser where
+  hashWithSalt _salt DeleteAppInstanceUser' {..} =
+    _salt `Prelude.hashWithSalt` appInstanceUserArn
+
+instance Prelude.NFData DeleteAppInstanceUser where
+  rnf DeleteAppInstanceUser' {..} =
+    Prelude.rnf appInstanceUserArn
+
+instance Data.ToHeaders DeleteAppInstanceUser where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteAppInstanceUser where
+  toPath DeleteAppInstanceUser' {..} =
+    Prelude.mconcat
+      [ "/app-instance-users/",
+        Data.toBS appInstanceUserArn
+      ]
+
+instance Data.ToQuery DeleteAppInstanceUser where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteAppInstanceUserResponse' smart constructor.
+data DeleteAppInstanceUserResponse = DeleteAppInstanceUserResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteAppInstanceUserResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteAppInstanceUserResponse ::
+  DeleteAppInstanceUserResponse
+newDeleteAppInstanceUserResponse =
+  DeleteAppInstanceUserResponse'
+
+instance Prelude.NFData DeleteAppInstanceUserResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/DeleteAttendee.hs b/gen/Amazonka/Chime/DeleteAttendee.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DeleteAttendee.hs
@@ -0,0 +1,142 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DeleteAttendee
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes an attendee from the specified Amazon Chime SDK meeting and
+-- deletes their @JoinToken@. Attendees are automatically deleted when a
+-- Amazon Chime SDK meeting is deleted. For more information about the
+-- Amazon Chime SDK, see
+-- <https://docs.aws.amazon.com/chime/latest/dg/meetings-sdk.html Using the Amazon Chime SDK>
+-- in the /Amazon Chime Developer Guide/.
+module Amazonka.Chime.DeleteAttendee
+  ( -- * Creating a Request
+    DeleteAttendee (..),
+    newDeleteAttendee,
+
+    -- * Request Lenses
+    deleteAttendee_meetingId,
+    deleteAttendee_attendeeId,
+
+    -- * Destructuring the Response
+    DeleteAttendeeResponse (..),
+    newDeleteAttendeeResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteAttendee' smart constructor.
+data DeleteAttendee = DeleteAttendee'
+  { -- | The Amazon Chime SDK meeting ID.
+    meetingId :: Prelude.Text,
+    -- | The Amazon Chime SDK attendee ID.
+    attendeeId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteAttendee' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'meetingId', 'deleteAttendee_meetingId' - The Amazon Chime SDK meeting ID.
+--
+-- 'attendeeId', 'deleteAttendee_attendeeId' - The Amazon Chime SDK attendee ID.
+newDeleteAttendee ::
+  -- | 'meetingId'
+  Prelude.Text ->
+  -- | 'attendeeId'
+  Prelude.Text ->
+  DeleteAttendee
+newDeleteAttendee pMeetingId_ pAttendeeId_ =
+  DeleteAttendee'
+    { meetingId = pMeetingId_,
+      attendeeId = pAttendeeId_
+    }
+
+-- | The Amazon Chime SDK meeting ID.
+deleteAttendee_meetingId :: Lens.Lens' DeleteAttendee Prelude.Text
+deleteAttendee_meetingId = Lens.lens (\DeleteAttendee' {meetingId} -> meetingId) (\s@DeleteAttendee' {} a -> s {meetingId = a} :: DeleteAttendee)
+
+-- | The Amazon Chime SDK attendee ID.
+deleteAttendee_attendeeId :: Lens.Lens' DeleteAttendee Prelude.Text
+deleteAttendee_attendeeId = Lens.lens (\DeleteAttendee' {attendeeId} -> attendeeId) (\s@DeleteAttendee' {} a -> s {attendeeId = a} :: DeleteAttendee)
+
+instance Core.AWSRequest DeleteAttendee where
+  type
+    AWSResponse DeleteAttendee =
+      DeleteAttendeeResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull DeleteAttendeeResponse'
+
+instance Prelude.Hashable DeleteAttendee where
+  hashWithSalt _salt DeleteAttendee' {..} =
+    _salt
+      `Prelude.hashWithSalt` meetingId
+      `Prelude.hashWithSalt` attendeeId
+
+instance Prelude.NFData DeleteAttendee where
+  rnf DeleteAttendee' {..} =
+    Prelude.rnf meetingId
+      `Prelude.seq` Prelude.rnf attendeeId
+
+instance Data.ToHeaders DeleteAttendee where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteAttendee where
+  toPath DeleteAttendee' {..} =
+    Prelude.mconcat
+      [ "/meetings/",
+        Data.toBS meetingId,
+        "/attendees/",
+        Data.toBS attendeeId
+      ]
+
+instance Data.ToQuery DeleteAttendee where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteAttendeeResponse' smart constructor.
+data DeleteAttendeeResponse = DeleteAttendeeResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteAttendeeResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteAttendeeResponse ::
+  DeleteAttendeeResponse
+newDeleteAttendeeResponse = DeleteAttendeeResponse'
+
+instance Prelude.NFData DeleteAttendeeResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/DeleteChannel.hs b/gen/Amazonka/Chime/DeleteChannel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DeleteChannel.hs
@@ -0,0 +1,138 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DeleteChannel
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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.
+module Amazonka.Chime.DeleteChannel
+  ( -- * Creating a Request
+    DeleteChannel (..),
+    newDeleteChannel,
+
+    -- * Request Lenses
+    deleteChannel_chimeBearer,
+    deleteChannel_channelArn,
+
+    -- * Destructuring the Response
+    DeleteChannelResponse (..),
+    newDeleteChannelResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteChannel' smart constructor.
+data DeleteChannel = DeleteChannel'
+  { -- | The @AppInstanceUserArn@ of the user that makes the API call.
+    chimeBearer :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the channel being deleted.
+    channelArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteChannel' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chimeBearer', 'deleteChannel_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
+--
+-- 'channelArn', 'deleteChannel_channelArn' - The ARN of the channel being deleted.
+newDeleteChannel ::
+  -- | 'channelArn'
+  Prelude.Text ->
+  DeleteChannel
+newDeleteChannel pChannelArn_ =
+  DeleteChannel'
+    { chimeBearer = Prelude.Nothing,
+      channelArn = pChannelArn_
+    }
+
+-- | The @AppInstanceUserArn@ of the user that makes the API call.
+deleteChannel_chimeBearer :: Lens.Lens' DeleteChannel (Prelude.Maybe Prelude.Text)
+deleteChannel_chimeBearer = Lens.lens (\DeleteChannel' {chimeBearer} -> chimeBearer) (\s@DeleteChannel' {} a -> s {chimeBearer = a} :: DeleteChannel)
+
+-- | The ARN of the channel being deleted.
+deleteChannel_channelArn :: Lens.Lens' DeleteChannel Prelude.Text
+deleteChannel_channelArn = Lens.lens (\DeleteChannel' {channelArn} -> channelArn) (\s@DeleteChannel' {} a -> s {channelArn = a} :: DeleteChannel)
+
+instance Core.AWSRequest DeleteChannel where
+  type
+    AWSResponse DeleteChannel =
+      DeleteChannelResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull DeleteChannelResponse'
+
+instance Prelude.Hashable DeleteChannel where
+  hashWithSalt _salt DeleteChannel' {..} =
+    _salt
+      `Prelude.hashWithSalt` chimeBearer
+      `Prelude.hashWithSalt` channelArn
+
+instance Prelude.NFData DeleteChannel where
+  rnf DeleteChannel' {..} =
+    Prelude.rnf chimeBearer
+      `Prelude.seq` Prelude.rnf channelArn
+
+instance Data.ToHeaders DeleteChannel where
+  toHeaders DeleteChannel' {..} =
+    Prelude.mconcat
+      ["x-amz-chime-bearer" Data.=# chimeBearer]
+
+instance Data.ToPath DeleteChannel where
+  toPath DeleteChannel' {..} =
+    Prelude.mconcat
+      ["/channels/", Data.toBS channelArn]
+
+instance Data.ToQuery DeleteChannel where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteChannelResponse' smart constructor.
+data DeleteChannelResponse = DeleteChannelResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteChannelResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteChannelResponse ::
+  DeleteChannelResponse
+newDeleteChannelResponse = DeleteChannelResponse'
+
+instance Prelude.NFData DeleteChannelResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/DeleteChannelBan.hs b/gen/Amazonka/Chime/DeleteChannelBan.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DeleteChannelBan.hs
@@ -0,0 +1,156 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DeleteChannelBan
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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.
+module Amazonka.Chime.DeleteChannelBan
+  ( -- * Creating a Request
+    DeleteChannelBan (..),
+    newDeleteChannelBan,
+
+    -- * Request Lenses
+    deleteChannelBan_chimeBearer,
+    deleteChannelBan_channelArn,
+    deleteChannelBan_memberArn,
+
+    -- * Destructuring the Response
+    DeleteChannelBanResponse (..),
+    newDeleteChannelBanResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteChannelBan' smart constructor.
+data DeleteChannelBan = DeleteChannelBan'
+  { -- | The @AppInstanceUserArn@ of the user that makes the API call.
+    chimeBearer :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the channel from which the @AppInstanceUser@ was banned.
+    channelArn :: Prelude.Text,
+    -- | The ARN of the @AppInstanceUser@ that you want to reinstate.
+    memberArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteChannelBan' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chimeBearer', 'deleteChannelBan_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
+--
+-- 'channelArn', 'deleteChannelBan_channelArn' - The ARN of the channel from which the @AppInstanceUser@ was banned.
+--
+-- 'memberArn', 'deleteChannelBan_memberArn' - The ARN of the @AppInstanceUser@ that you want to reinstate.
+newDeleteChannelBan ::
+  -- | 'channelArn'
+  Prelude.Text ->
+  -- | 'memberArn'
+  Prelude.Text ->
+  DeleteChannelBan
+newDeleteChannelBan pChannelArn_ pMemberArn_ =
+  DeleteChannelBan'
+    { chimeBearer = Prelude.Nothing,
+      channelArn = pChannelArn_,
+      memberArn = pMemberArn_
+    }
+
+-- | The @AppInstanceUserArn@ of the user that makes the API call.
+deleteChannelBan_chimeBearer :: Lens.Lens' DeleteChannelBan (Prelude.Maybe Prelude.Text)
+deleteChannelBan_chimeBearer = Lens.lens (\DeleteChannelBan' {chimeBearer} -> chimeBearer) (\s@DeleteChannelBan' {} a -> s {chimeBearer = a} :: DeleteChannelBan)
+
+-- | The ARN of the channel from which the @AppInstanceUser@ was banned.
+deleteChannelBan_channelArn :: Lens.Lens' DeleteChannelBan Prelude.Text
+deleteChannelBan_channelArn = Lens.lens (\DeleteChannelBan' {channelArn} -> channelArn) (\s@DeleteChannelBan' {} a -> s {channelArn = a} :: DeleteChannelBan)
+
+-- | The ARN of the @AppInstanceUser@ that you want to reinstate.
+deleteChannelBan_memberArn :: Lens.Lens' DeleteChannelBan Prelude.Text
+deleteChannelBan_memberArn = Lens.lens (\DeleteChannelBan' {memberArn} -> memberArn) (\s@DeleteChannelBan' {} a -> s {memberArn = a} :: DeleteChannelBan)
+
+instance Core.AWSRequest DeleteChannelBan where
+  type
+    AWSResponse DeleteChannelBan =
+      DeleteChannelBanResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull DeleteChannelBanResponse'
+
+instance Prelude.Hashable DeleteChannelBan where
+  hashWithSalt _salt DeleteChannelBan' {..} =
+    _salt
+      `Prelude.hashWithSalt` chimeBearer
+      `Prelude.hashWithSalt` channelArn
+      `Prelude.hashWithSalt` memberArn
+
+instance Prelude.NFData DeleteChannelBan where
+  rnf DeleteChannelBan' {..} =
+    Prelude.rnf chimeBearer
+      `Prelude.seq` Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf memberArn
+
+instance Data.ToHeaders DeleteChannelBan where
+  toHeaders DeleteChannelBan' {..} =
+    Prelude.mconcat
+      ["x-amz-chime-bearer" Data.=# chimeBearer]
+
+instance Data.ToPath DeleteChannelBan where
+  toPath DeleteChannelBan' {..} =
+    Prelude.mconcat
+      [ "/channels/",
+        Data.toBS channelArn,
+        "/bans/",
+        Data.toBS memberArn
+      ]
+
+instance Data.ToQuery DeleteChannelBan where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteChannelBanResponse' smart constructor.
+data DeleteChannelBanResponse = DeleteChannelBanResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteChannelBanResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteChannelBanResponse ::
+  DeleteChannelBanResponse
+newDeleteChannelBanResponse =
+  DeleteChannelBanResponse'
+
+instance Prelude.NFData DeleteChannelBanResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/DeleteChannelMembership.hs b/gen/Amazonka/Chime/DeleteChannelMembership.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DeleteChannelMembership.hs
@@ -0,0 +1,161 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DeleteChannelMembership
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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.
+module Amazonka.Chime.DeleteChannelMembership
+  ( -- * Creating a Request
+    DeleteChannelMembership (..),
+    newDeleteChannelMembership,
+
+    -- * Request Lenses
+    deleteChannelMembership_chimeBearer,
+    deleteChannelMembership_channelArn,
+    deleteChannelMembership_memberArn,
+
+    -- * Destructuring the Response
+    DeleteChannelMembershipResponse (..),
+    newDeleteChannelMembershipResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteChannelMembership' smart constructor.
+data DeleteChannelMembership = DeleteChannelMembership'
+  { -- | The @AppInstanceUserArn@ of the user that makes the API call.
+    chimeBearer :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the channel from which you want to remove the user.
+    channelArn :: Prelude.Text,
+    -- | The ARN of the member that you\'re removing from the channel.
+    memberArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteChannelMembership' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chimeBearer', 'deleteChannelMembership_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
+--
+-- 'channelArn', 'deleteChannelMembership_channelArn' - The ARN of the channel from which you want to remove the user.
+--
+-- 'memberArn', 'deleteChannelMembership_memberArn' - The ARN of the member that you\'re removing from the channel.
+newDeleteChannelMembership ::
+  -- | 'channelArn'
+  Prelude.Text ->
+  -- | 'memberArn'
+  Prelude.Text ->
+  DeleteChannelMembership
+newDeleteChannelMembership pChannelArn_ pMemberArn_ =
+  DeleteChannelMembership'
+    { chimeBearer =
+        Prelude.Nothing,
+      channelArn = pChannelArn_,
+      memberArn = pMemberArn_
+    }
+
+-- | The @AppInstanceUserArn@ of the user that makes the API call.
+deleteChannelMembership_chimeBearer :: Lens.Lens' DeleteChannelMembership (Prelude.Maybe Prelude.Text)
+deleteChannelMembership_chimeBearer = Lens.lens (\DeleteChannelMembership' {chimeBearer} -> chimeBearer) (\s@DeleteChannelMembership' {} a -> s {chimeBearer = a} :: DeleteChannelMembership)
+
+-- | The ARN of the channel from which you want to remove the user.
+deleteChannelMembership_channelArn :: Lens.Lens' DeleteChannelMembership Prelude.Text
+deleteChannelMembership_channelArn = Lens.lens (\DeleteChannelMembership' {channelArn} -> channelArn) (\s@DeleteChannelMembership' {} a -> s {channelArn = a} :: DeleteChannelMembership)
+
+-- | The ARN of the member that you\'re removing from the channel.
+deleteChannelMembership_memberArn :: Lens.Lens' DeleteChannelMembership Prelude.Text
+deleteChannelMembership_memberArn = Lens.lens (\DeleteChannelMembership' {memberArn} -> memberArn) (\s@DeleteChannelMembership' {} a -> s {memberArn = a} :: DeleteChannelMembership)
+
+instance Core.AWSRequest DeleteChannelMembership where
+  type
+    AWSResponse DeleteChannelMembership =
+      DeleteChannelMembershipResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteChannelMembershipResponse'
+
+instance Prelude.Hashable DeleteChannelMembership where
+  hashWithSalt _salt DeleteChannelMembership' {..} =
+    _salt
+      `Prelude.hashWithSalt` chimeBearer
+      `Prelude.hashWithSalt` channelArn
+      `Prelude.hashWithSalt` memberArn
+
+instance Prelude.NFData DeleteChannelMembership where
+  rnf DeleteChannelMembership' {..} =
+    Prelude.rnf chimeBearer
+      `Prelude.seq` Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf memberArn
+
+instance Data.ToHeaders DeleteChannelMembership where
+  toHeaders DeleteChannelMembership' {..} =
+    Prelude.mconcat
+      ["x-amz-chime-bearer" Data.=# chimeBearer]
+
+instance Data.ToPath DeleteChannelMembership where
+  toPath DeleteChannelMembership' {..} =
+    Prelude.mconcat
+      [ "/channels/",
+        Data.toBS channelArn,
+        "/memberships/",
+        Data.toBS memberArn
+      ]
+
+instance Data.ToQuery DeleteChannelMembership where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteChannelMembershipResponse' smart constructor.
+data DeleteChannelMembershipResponse = DeleteChannelMembershipResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteChannelMembershipResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteChannelMembershipResponse ::
+  DeleteChannelMembershipResponse
+newDeleteChannelMembershipResponse =
+  DeleteChannelMembershipResponse'
+
+instance
+  Prelude.NFData
+    DeleteChannelMembershipResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/DeleteChannelMessage.hs b/gen/Amazonka/Chime/DeleteChannelMessage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DeleteChannelMessage.hs
@@ -0,0 +1,159 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DeleteChannelMessage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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.
+module Amazonka.Chime.DeleteChannelMessage
+  ( -- * Creating a Request
+    DeleteChannelMessage (..),
+    newDeleteChannelMessage,
+
+    -- * Request Lenses
+    deleteChannelMessage_chimeBearer,
+    deleteChannelMessage_channelArn,
+    deleteChannelMessage_messageId,
+
+    -- * Destructuring the Response
+    DeleteChannelMessageResponse (..),
+    newDeleteChannelMessageResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteChannelMessage' smart constructor.
+data DeleteChannelMessage = DeleteChannelMessage'
+  { -- | The @AppInstanceUserArn@ of the user that makes the API call.
+    chimeBearer :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the channel.
+    channelArn :: Prelude.Text,
+    -- | The ID of the message being deleted.
+    messageId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteChannelMessage' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chimeBearer', 'deleteChannelMessage_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
+--
+-- 'channelArn', 'deleteChannelMessage_channelArn' - The ARN of the channel.
+--
+-- 'messageId', 'deleteChannelMessage_messageId' - The ID of the message being deleted.
+newDeleteChannelMessage ::
+  -- | 'channelArn'
+  Prelude.Text ->
+  -- | 'messageId'
+  Prelude.Text ->
+  DeleteChannelMessage
+newDeleteChannelMessage pChannelArn_ pMessageId_ =
+  DeleteChannelMessage'
+    { chimeBearer =
+        Prelude.Nothing,
+      channelArn = pChannelArn_,
+      messageId = pMessageId_
+    }
+
+-- | The @AppInstanceUserArn@ of the user that makes the API call.
+deleteChannelMessage_chimeBearer :: Lens.Lens' DeleteChannelMessage (Prelude.Maybe Prelude.Text)
+deleteChannelMessage_chimeBearer = Lens.lens (\DeleteChannelMessage' {chimeBearer} -> chimeBearer) (\s@DeleteChannelMessage' {} a -> s {chimeBearer = a} :: DeleteChannelMessage)
+
+-- | The ARN of the channel.
+deleteChannelMessage_channelArn :: Lens.Lens' DeleteChannelMessage Prelude.Text
+deleteChannelMessage_channelArn = Lens.lens (\DeleteChannelMessage' {channelArn} -> channelArn) (\s@DeleteChannelMessage' {} a -> s {channelArn = a} :: DeleteChannelMessage)
+
+-- | The ID of the message being deleted.
+deleteChannelMessage_messageId :: Lens.Lens' DeleteChannelMessage Prelude.Text
+deleteChannelMessage_messageId = Lens.lens (\DeleteChannelMessage' {messageId} -> messageId) (\s@DeleteChannelMessage' {} a -> s {messageId = a} :: DeleteChannelMessage)
+
+instance Core.AWSRequest DeleteChannelMessage where
+  type
+    AWSResponse DeleteChannelMessage =
+      DeleteChannelMessageResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull DeleteChannelMessageResponse'
+
+instance Prelude.Hashable DeleteChannelMessage where
+  hashWithSalt _salt DeleteChannelMessage' {..} =
+    _salt
+      `Prelude.hashWithSalt` chimeBearer
+      `Prelude.hashWithSalt` channelArn
+      `Prelude.hashWithSalt` messageId
+
+instance Prelude.NFData DeleteChannelMessage where
+  rnf DeleteChannelMessage' {..} =
+    Prelude.rnf chimeBearer
+      `Prelude.seq` Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf messageId
+
+instance Data.ToHeaders DeleteChannelMessage where
+  toHeaders DeleteChannelMessage' {..} =
+    Prelude.mconcat
+      ["x-amz-chime-bearer" Data.=# chimeBearer]
+
+instance Data.ToPath DeleteChannelMessage where
+  toPath DeleteChannelMessage' {..} =
+    Prelude.mconcat
+      [ "/channels/",
+        Data.toBS channelArn,
+        "/messages/",
+        Data.toBS messageId
+      ]
+
+instance Data.ToQuery DeleteChannelMessage where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteChannelMessageResponse' smart constructor.
+data DeleteChannelMessageResponse = DeleteChannelMessageResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteChannelMessageResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteChannelMessageResponse ::
+  DeleteChannelMessageResponse
+newDeleteChannelMessageResponse =
+  DeleteChannelMessageResponse'
+
+instance Prelude.NFData DeleteChannelMessageResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/DeleteChannelModerator.hs b/gen/Amazonka/Chime/DeleteChannelModerator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DeleteChannelModerator.hs
@@ -0,0 +1,163 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DeleteChannelModerator
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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.
+module Amazonka.Chime.DeleteChannelModerator
+  ( -- * Creating a Request
+    DeleteChannelModerator (..),
+    newDeleteChannelModerator,
+
+    -- * Request Lenses
+    deleteChannelModerator_chimeBearer,
+    deleteChannelModerator_channelArn,
+    deleteChannelModerator_channelModeratorArn,
+
+    -- * Destructuring the Response
+    DeleteChannelModeratorResponse (..),
+    newDeleteChannelModeratorResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteChannelModerator' smart constructor.
+data DeleteChannelModerator = DeleteChannelModerator'
+  { -- | The @AppInstanceUserArn@ of the user that makes the API call.
+    chimeBearer :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the channel.
+    channelArn :: Prelude.Text,
+    -- | The ARN of the moderator being deleted.
+    channelModeratorArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteChannelModerator' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chimeBearer', 'deleteChannelModerator_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
+--
+-- 'channelArn', 'deleteChannelModerator_channelArn' - The ARN of the channel.
+--
+-- 'channelModeratorArn', 'deleteChannelModerator_channelModeratorArn' - The ARN of the moderator being deleted.
+newDeleteChannelModerator ::
+  -- | 'channelArn'
+  Prelude.Text ->
+  -- | 'channelModeratorArn'
+  Prelude.Text ->
+  DeleteChannelModerator
+newDeleteChannelModerator
+  pChannelArn_
+  pChannelModeratorArn_ =
+    DeleteChannelModerator'
+      { chimeBearer =
+          Prelude.Nothing,
+        channelArn = pChannelArn_,
+        channelModeratorArn = pChannelModeratorArn_
+      }
+
+-- | The @AppInstanceUserArn@ of the user that makes the API call.
+deleteChannelModerator_chimeBearer :: Lens.Lens' DeleteChannelModerator (Prelude.Maybe Prelude.Text)
+deleteChannelModerator_chimeBearer = Lens.lens (\DeleteChannelModerator' {chimeBearer} -> chimeBearer) (\s@DeleteChannelModerator' {} a -> s {chimeBearer = a} :: DeleteChannelModerator)
+
+-- | The ARN of the channel.
+deleteChannelModerator_channelArn :: Lens.Lens' DeleteChannelModerator Prelude.Text
+deleteChannelModerator_channelArn = Lens.lens (\DeleteChannelModerator' {channelArn} -> channelArn) (\s@DeleteChannelModerator' {} a -> s {channelArn = a} :: DeleteChannelModerator)
+
+-- | The ARN of the moderator being deleted.
+deleteChannelModerator_channelModeratorArn :: Lens.Lens' DeleteChannelModerator Prelude.Text
+deleteChannelModerator_channelModeratorArn = Lens.lens (\DeleteChannelModerator' {channelModeratorArn} -> channelModeratorArn) (\s@DeleteChannelModerator' {} a -> s {channelModeratorArn = a} :: DeleteChannelModerator)
+
+instance Core.AWSRequest DeleteChannelModerator where
+  type
+    AWSResponse DeleteChannelModerator =
+      DeleteChannelModeratorResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteChannelModeratorResponse'
+
+instance Prelude.Hashable DeleteChannelModerator where
+  hashWithSalt _salt DeleteChannelModerator' {..} =
+    _salt
+      `Prelude.hashWithSalt` chimeBearer
+      `Prelude.hashWithSalt` channelArn
+      `Prelude.hashWithSalt` channelModeratorArn
+
+instance Prelude.NFData DeleteChannelModerator where
+  rnf DeleteChannelModerator' {..} =
+    Prelude.rnf chimeBearer
+      `Prelude.seq` Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf channelModeratorArn
+
+instance Data.ToHeaders DeleteChannelModerator where
+  toHeaders DeleteChannelModerator' {..} =
+    Prelude.mconcat
+      ["x-amz-chime-bearer" Data.=# chimeBearer]
+
+instance Data.ToPath DeleteChannelModerator where
+  toPath DeleteChannelModerator' {..} =
+    Prelude.mconcat
+      [ "/channels/",
+        Data.toBS channelArn,
+        "/moderators/",
+        Data.toBS channelModeratorArn
+      ]
+
+instance Data.ToQuery DeleteChannelModerator where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteChannelModeratorResponse' smart constructor.
+data DeleteChannelModeratorResponse = DeleteChannelModeratorResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteChannelModeratorResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteChannelModeratorResponse ::
+  DeleteChannelModeratorResponse
+newDeleteChannelModeratorResponse =
+  DeleteChannelModeratorResponse'
+
+instance
+  Prelude.NFData
+    DeleteChannelModeratorResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/DeleteEventsConfiguration.hs b/gen/Amazonka/Chime/DeleteEventsConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DeleteEventsConfiguration.hs
@@ -0,0 +1,144 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DeleteEventsConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the events configuration that allows a bot to receive outgoing
+-- events.
+module Amazonka.Chime.DeleteEventsConfiguration
+  ( -- * Creating a Request
+    DeleteEventsConfiguration (..),
+    newDeleteEventsConfiguration,
+
+    -- * Request Lenses
+    deleteEventsConfiguration_accountId,
+    deleteEventsConfiguration_botId,
+
+    -- * Destructuring the Response
+    DeleteEventsConfigurationResponse (..),
+    newDeleteEventsConfigurationResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteEventsConfiguration' smart constructor.
+data DeleteEventsConfiguration = DeleteEventsConfiguration'
+  { -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The bot ID.
+    botId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteEventsConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'deleteEventsConfiguration_accountId' - The Amazon Chime account ID.
+--
+-- 'botId', 'deleteEventsConfiguration_botId' - The bot ID.
+newDeleteEventsConfiguration ::
+  -- | 'accountId'
+  Prelude.Text ->
+  -- | 'botId'
+  Prelude.Text ->
+  DeleteEventsConfiguration
+newDeleteEventsConfiguration pAccountId_ pBotId_ =
+  DeleteEventsConfiguration'
+    { accountId = pAccountId_,
+      botId = pBotId_
+    }
+
+-- | The Amazon Chime account ID.
+deleteEventsConfiguration_accountId :: Lens.Lens' DeleteEventsConfiguration Prelude.Text
+deleteEventsConfiguration_accountId = Lens.lens (\DeleteEventsConfiguration' {accountId} -> accountId) (\s@DeleteEventsConfiguration' {} a -> s {accountId = a} :: DeleteEventsConfiguration)
+
+-- | The bot ID.
+deleteEventsConfiguration_botId :: Lens.Lens' DeleteEventsConfiguration Prelude.Text
+deleteEventsConfiguration_botId = Lens.lens (\DeleteEventsConfiguration' {botId} -> botId) (\s@DeleteEventsConfiguration' {} a -> s {botId = a} :: DeleteEventsConfiguration)
+
+instance Core.AWSRequest DeleteEventsConfiguration where
+  type
+    AWSResponse DeleteEventsConfiguration =
+      DeleteEventsConfigurationResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteEventsConfigurationResponse'
+
+instance Prelude.Hashable DeleteEventsConfiguration where
+  hashWithSalt _salt DeleteEventsConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` botId
+
+instance Prelude.NFData DeleteEventsConfiguration where
+  rnf DeleteEventsConfiguration' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf botId
+
+instance Data.ToHeaders DeleteEventsConfiguration where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteEventsConfiguration where
+  toPath DeleteEventsConfiguration' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS accountId,
+        "/bots/",
+        Data.toBS botId,
+        "/events-configuration"
+      ]
+
+instance Data.ToQuery DeleteEventsConfiguration where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteEventsConfigurationResponse' smart constructor.
+data DeleteEventsConfigurationResponse = DeleteEventsConfigurationResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteEventsConfigurationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteEventsConfigurationResponse ::
+  DeleteEventsConfigurationResponse
+newDeleteEventsConfigurationResponse =
+  DeleteEventsConfigurationResponse'
+
+instance
+  Prelude.NFData
+    DeleteEventsConfigurationResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/DeleteMediaCapturePipeline.hs b/gen/Amazonka/Chime/DeleteMediaCapturePipeline.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DeleteMediaCapturePipeline.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DeleteMediaCapturePipeline
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the media capture pipeline.
+module Amazonka.Chime.DeleteMediaCapturePipeline
+  ( -- * Creating a Request
+    DeleteMediaCapturePipeline (..),
+    newDeleteMediaCapturePipeline,
+
+    -- * Request Lenses
+    deleteMediaCapturePipeline_mediaPipelineId,
+
+    -- * Destructuring the Response
+    DeleteMediaCapturePipelineResponse (..),
+    newDeleteMediaCapturePipelineResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteMediaCapturePipeline' smart constructor.
+data DeleteMediaCapturePipeline = DeleteMediaCapturePipeline'
+  { -- | The ID of the media capture pipeline being deleted.
+    mediaPipelineId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteMediaCapturePipeline' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'mediaPipelineId', 'deleteMediaCapturePipeline_mediaPipelineId' - The ID of the media capture pipeline being deleted.
+newDeleteMediaCapturePipeline ::
+  -- | 'mediaPipelineId'
+  Prelude.Text ->
+  DeleteMediaCapturePipeline
+newDeleteMediaCapturePipeline pMediaPipelineId_ =
+  DeleteMediaCapturePipeline'
+    { mediaPipelineId =
+        pMediaPipelineId_
+    }
+
+-- | The ID of the media capture pipeline being deleted.
+deleteMediaCapturePipeline_mediaPipelineId :: Lens.Lens' DeleteMediaCapturePipeline Prelude.Text
+deleteMediaCapturePipeline_mediaPipelineId = Lens.lens (\DeleteMediaCapturePipeline' {mediaPipelineId} -> mediaPipelineId) (\s@DeleteMediaCapturePipeline' {} a -> s {mediaPipelineId = a} :: DeleteMediaCapturePipeline)
+
+instance Core.AWSRequest DeleteMediaCapturePipeline where
+  type
+    AWSResponse DeleteMediaCapturePipeline =
+      DeleteMediaCapturePipelineResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteMediaCapturePipelineResponse'
+
+instance Prelude.Hashable DeleteMediaCapturePipeline where
+  hashWithSalt _salt DeleteMediaCapturePipeline' {..} =
+    _salt `Prelude.hashWithSalt` mediaPipelineId
+
+instance Prelude.NFData DeleteMediaCapturePipeline where
+  rnf DeleteMediaCapturePipeline' {..} =
+    Prelude.rnf mediaPipelineId
+
+instance Data.ToHeaders DeleteMediaCapturePipeline where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteMediaCapturePipeline where
+  toPath DeleteMediaCapturePipeline' {..} =
+    Prelude.mconcat
+      [ "/media-capture-pipelines/",
+        Data.toBS mediaPipelineId
+      ]
+
+instance Data.ToQuery DeleteMediaCapturePipeline where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteMediaCapturePipelineResponse' smart constructor.
+data DeleteMediaCapturePipelineResponse = DeleteMediaCapturePipelineResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteMediaCapturePipelineResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteMediaCapturePipelineResponse ::
+  DeleteMediaCapturePipelineResponse
+newDeleteMediaCapturePipelineResponse =
+  DeleteMediaCapturePipelineResponse'
+
+instance
+  Prelude.NFData
+    DeleteMediaCapturePipelineResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/DeleteMeeting.hs b/gen/Amazonka/Chime/DeleteMeeting.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DeleteMeeting.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DeleteMeeting
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the specified Amazon Chime SDK meeting. The operation deletes
+-- all attendees, disconnects all clients, and prevents new clients from
+-- joining the meeting. For more information about the Amazon Chime SDK,
+-- see
+-- <https://docs.aws.amazon.com/chime/latest/dg/meetings-sdk.html Using the Amazon Chime SDK>
+-- in the /Amazon Chime Developer Guide/.
+module Amazonka.Chime.DeleteMeeting
+  ( -- * Creating a Request
+    DeleteMeeting (..),
+    newDeleteMeeting,
+
+    -- * Request Lenses
+    deleteMeeting_meetingId,
+
+    -- * Destructuring the Response
+    DeleteMeetingResponse (..),
+    newDeleteMeetingResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteMeeting' smart constructor.
+data DeleteMeeting = DeleteMeeting'
+  { -- | The Amazon Chime SDK meeting ID.
+    meetingId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteMeeting' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'meetingId', 'deleteMeeting_meetingId' - The Amazon Chime SDK meeting ID.
+newDeleteMeeting ::
+  -- | 'meetingId'
+  Prelude.Text ->
+  DeleteMeeting
+newDeleteMeeting pMeetingId_ =
+  DeleteMeeting' {meetingId = pMeetingId_}
+
+-- | The Amazon Chime SDK meeting ID.
+deleteMeeting_meetingId :: Lens.Lens' DeleteMeeting Prelude.Text
+deleteMeeting_meetingId = Lens.lens (\DeleteMeeting' {meetingId} -> meetingId) (\s@DeleteMeeting' {} a -> s {meetingId = a} :: DeleteMeeting)
+
+instance Core.AWSRequest DeleteMeeting where
+  type
+    AWSResponse DeleteMeeting =
+      DeleteMeetingResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull DeleteMeetingResponse'
+
+instance Prelude.Hashable DeleteMeeting where
+  hashWithSalt _salt DeleteMeeting' {..} =
+    _salt `Prelude.hashWithSalt` meetingId
+
+instance Prelude.NFData DeleteMeeting where
+  rnf DeleteMeeting' {..} = Prelude.rnf meetingId
+
+instance Data.ToHeaders DeleteMeeting where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteMeeting where
+  toPath DeleteMeeting' {..} =
+    Prelude.mconcat ["/meetings/", Data.toBS meetingId]
+
+instance Data.ToQuery DeleteMeeting where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteMeetingResponse' smart constructor.
+data DeleteMeetingResponse = DeleteMeetingResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteMeetingResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteMeetingResponse ::
+  DeleteMeetingResponse
+newDeleteMeetingResponse = DeleteMeetingResponse'
+
+instance Prelude.NFData DeleteMeetingResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/DeletePhoneNumber.hs b/gen/Amazonka/Chime/DeletePhoneNumber.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DeletePhoneNumber.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DeletePhoneNumber
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Moves the specified phone number into the __Deletion queue__. A phone
+-- number must be disassociated from any users or Amazon Chime Voice
+-- Connectors before it can be deleted.
+--
+-- Deleted phone numbers remain in the __Deletion queue__ for 7 days before
+-- they are deleted permanently.
+module Amazonka.Chime.DeletePhoneNumber
+  ( -- * Creating a Request
+    DeletePhoneNumber (..),
+    newDeletePhoneNumber,
+
+    -- * Request Lenses
+    deletePhoneNumber_phoneNumberId,
+
+    -- * Destructuring the Response
+    DeletePhoneNumberResponse (..),
+    newDeletePhoneNumberResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeletePhoneNumber' smart constructor.
+data DeletePhoneNumber = DeletePhoneNumber'
+  { -- | The phone number ID.
+    phoneNumberId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeletePhoneNumber' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'phoneNumberId', 'deletePhoneNumber_phoneNumberId' - The phone number ID.
+newDeletePhoneNumber ::
+  -- | 'phoneNumberId'
+  Prelude.Text ->
+  DeletePhoneNumber
+newDeletePhoneNumber pPhoneNumberId_ =
+  DeletePhoneNumber' {phoneNumberId = pPhoneNumberId_}
+
+-- | The phone number ID.
+deletePhoneNumber_phoneNumberId :: Lens.Lens' DeletePhoneNumber Prelude.Text
+deletePhoneNumber_phoneNumberId = Lens.lens (\DeletePhoneNumber' {phoneNumberId} -> phoneNumberId) (\s@DeletePhoneNumber' {} a -> s {phoneNumberId = a} :: DeletePhoneNumber)
+
+instance Core.AWSRequest DeletePhoneNumber where
+  type
+    AWSResponse DeletePhoneNumber =
+      DeletePhoneNumberResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull DeletePhoneNumberResponse'
+
+instance Prelude.Hashable DeletePhoneNumber where
+  hashWithSalt _salt DeletePhoneNumber' {..} =
+    _salt `Prelude.hashWithSalt` phoneNumberId
+
+instance Prelude.NFData DeletePhoneNumber where
+  rnf DeletePhoneNumber' {..} =
+    Prelude.rnf phoneNumberId
+
+instance Data.ToHeaders DeletePhoneNumber where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeletePhoneNumber where
+  toPath DeletePhoneNumber' {..} =
+    Prelude.mconcat
+      ["/phone-numbers/", Data.toBS phoneNumberId]
+
+instance Data.ToQuery DeletePhoneNumber where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeletePhoneNumberResponse' smart constructor.
+data DeletePhoneNumberResponse = DeletePhoneNumberResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeletePhoneNumberResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeletePhoneNumberResponse ::
+  DeletePhoneNumberResponse
+newDeletePhoneNumberResponse =
+  DeletePhoneNumberResponse'
+
+instance Prelude.NFData DeletePhoneNumberResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/DeleteProxySession.hs b/gen/Amazonka/Chime/DeleteProxySession.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DeleteProxySession.hs
@@ -0,0 +1,142 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DeleteProxySession
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the specified proxy session from the specified Amazon Chime
+-- Voice Connector.
+module Amazonka.Chime.DeleteProxySession
+  ( -- * Creating a Request
+    DeleteProxySession (..),
+    newDeleteProxySession,
+
+    -- * Request Lenses
+    deleteProxySession_voiceConnectorId,
+    deleteProxySession_proxySessionId,
+
+    -- * Destructuring the Response
+    DeleteProxySessionResponse (..),
+    newDeleteProxySessionResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteProxySession' smart constructor.
+data DeleteProxySession = DeleteProxySession'
+  { -- | The Amazon Chime voice connector ID.
+    voiceConnectorId :: Prelude.Text,
+    -- | The proxy session ID.
+    proxySessionId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteProxySession' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorId', 'deleteProxySession_voiceConnectorId' - The Amazon Chime voice connector ID.
+--
+-- 'proxySessionId', 'deleteProxySession_proxySessionId' - The proxy session ID.
+newDeleteProxySession ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  -- | 'proxySessionId'
+  Prelude.Text ->
+  DeleteProxySession
+newDeleteProxySession
+  pVoiceConnectorId_
+  pProxySessionId_ =
+    DeleteProxySession'
+      { voiceConnectorId =
+          pVoiceConnectorId_,
+        proxySessionId = pProxySessionId_
+      }
+
+-- | The Amazon Chime voice connector ID.
+deleteProxySession_voiceConnectorId :: Lens.Lens' DeleteProxySession Prelude.Text
+deleteProxySession_voiceConnectorId = Lens.lens (\DeleteProxySession' {voiceConnectorId} -> voiceConnectorId) (\s@DeleteProxySession' {} a -> s {voiceConnectorId = a} :: DeleteProxySession)
+
+-- | The proxy session ID.
+deleteProxySession_proxySessionId :: Lens.Lens' DeleteProxySession Prelude.Text
+deleteProxySession_proxySessionId = Lens.lens (\DeleteProxySession' {proxySessionId} -> proxySessionId) (\s@DeleteProxySession' {} a -> s {proxySessionId = a} :: DeleteProxySession)
+
+instance Core.AWSRequest DeleteProxySession where
+  type
+    AWSResponse DeleteProxySession =
+      DeleteProxySessionResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull DeleteProxySessionResponse'
+
+instance Prelude.Hashable DeleteProxySession where
+  hashWithSalt _salt DeleteProxySession' {..} =
+    _salt
+      `Prelude.hashWithSalt` voiceConnectorId
+      `Prelude.hashWithSalt` proxySessionId
+
+instance Prelude.NFData DeleteProxySession where
+  rnf DeleteProxySession' {..} =
+    Prelude.rnf voiceConnectorId
+      `Prelude.seq` Prelude.rnf proxySessionId
+
+instance Data.ToHeaders DeleteProxySession where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteProxySession where
+  toPath DeleteProxySession' {..} =
+    Prelude.mconcat
+      [ "/voice-connectors/",
+        Data.toBS voiceConnectorId,
+        "/proxy-sessions/",
+        Data.toBS proxySessionId
+      ]
+
+instance Data.ToQuery DeleteProxySession where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteProxySessionResponse' smart constructor.
+data DeleteProxySessionResponse = DeleteProxySessionResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteProxySessionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteProxySessionResponse ::
+  DeleteProxySessionResponse
+newDeleteProxySessionResponse =
+  DeleteProxySessionResponse'
+
+instance Prelude.NFData DeleteProxySessionResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/DeleteRoom.hs b/gen/Amazonka/Chime/DeleteRoom.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DeleteRoom.hs
@@ -0,0 +1,134 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DeleteRoom
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a chat room in an Amazon Chime Enterprise account.
+module Amazonka.Chime.DeleteRoom
+  ( -- * Creating a Request
+    DeleteRoom (..),
+    newDeleteRoom,
+
+    -- * Request Lenses
+    deleteRoom_accountId,
+    deleteRoom_roomId,
+
+    -- * Destructuring the Response
+    DeleteRoomResponse (..),
+    newDeleteRoomResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteRoom' smart constructor.
+data DeleteRoom = DeleteRoom'
+  { -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The chat room ID.
+    roomId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteRoom' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'deleteRoom_accountId' - The Amazon Chime account ID.
+--
+-- 'roomId', 'deleteRoom_roomId' - The chat room ID.
+newDeleteRoom ::
+  -- | 'accountId'
+  Prelude.Text ->
+  -- | 'roomId'
+  Prelude.Text ->
+  DeleteRoom
+newDeleteRoom pAccountId_ pRoomId_ =
+  DeleteRoom'
+    { accountId = pAccountId_,
+      roomId = pRoomId_
+    }
+
+-- | The Amazon Chime account ID.
+deleteRoom_accountId :: Lens.Lens' DeleteRoom Prelude.Text
+deleteRoom_accountId = Lens.lens (\DeleteRoom' {accountId} -> accountId) (\s@DeleteRoom' {} a -> s {accountId = a} :: DeleteRoom)
+
+-- | The chat room ID.
+deleteRoom_roomId :: Lens.Lens' DeleteRoom Prelude.Text
+deleteRoom_roomId = Lens.lens (\DeleteRoom' {roomId} -> roomId) (\s@DeleteRoom' {} a -> s {roomId = a} :: DeleteRoom)
+
+instance Core.AWSRequest DeleteRoom where
+  type AWSResponse DeleteRoom = DeleteRoomResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response = Response.receiveNull DeleteRoomResponse'
+
+instance Prelude.Hashable DeleteRoom where
+  hashWithSalt _salt DeleteRoom' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` roomId
+
+instance Prelude.NFData DeleteRoom where
+  rnf DeleteRoom' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf roomId
+
+instance Data.ToHeaders DeleteRoom where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteRoom where
+  toPath DeleteRoom' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS accountId,
+        "/rooms/",
+        Data.toBS roomId
+      ]
+
+instance Data.ToQuery DeleteRoom where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteRoomResponse' smart constructor.
+data DeleteRoomResponse = DeleteRoomResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteRoomResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteRoomResponse ::
+  DeleteRoomResponse
+newDeleteRoomResponse = DeleteRoomResponse'
+
+instance Prelude.NFData DeleteRoomResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/DeleteRoomMembership.hs b/gen/Amazonka/Chime/DeleteRoomMembership.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DeleteRoomMembership.hs
@@ -0,0 +1,157 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DeleteRoomMembership
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes a member from a chat room in an Amazon Chime Enterprise account.
+module Amazonka.Chime.DeleteRoomMembership
+  ( -- * Creating a Request
+    DeleteRoomMembership (..),
+    newDeleteRoomMembership,
+
+    -- * Request Lenses
+    deleteRoomMembership_accountId,
+    deleteRoomMembership_roomId,
+    deleteRoomMembership_memberId,
+
+    -- * Destructuring the Response
+    DeleteRoomMembershipResponse (..),
+    newDeleteRoomMembershipResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteRoomMembership' smart constructor.
+data DeleteRoomMembership = DeleteRoomMembership'
+  { -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The room ID.
+    roomId :: Prelude.Text,
+    -- | The member ID (user ID or bot ID).
+    memberId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteRoomMembership' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'deleteRoomMembership_accountId' - The Amazon Chime account ID.
+--
+-- 'roomId', 'deleteRoomMembership_roomId' - The room ID.
+--
+-- 'memberId', 'deleteRoomMembership_memberId' - The member ID (user ID or bot ID).
+newDeleteRoomMembership ::
+  -- | 'accountId'
+  Prelude.Text ->
+  -- | 'roomId'
+  Prelude.Text ->
+  -- | 'memberId'
+  Prelude.Text ->
+  DeleteRoomMembership
+newDeleteRoomMembership
+  pAccountId_
+  pRoomId_
+  pMemberId_ =
+    DeleteRoomMembership'
+      { accountId = pAccountId_,
+        roomId = pRoomId_,
+        memberId = pMemberId_
+      }
+
+-- | The Amazon Chime account ID.
+deleteRoomMembership_accountId :: Lens.Lens' DeleteRoomMembership Prelude.Text
+deleteRoomMembership_accountId = Lens.lens (\DeleteRoomMembership' {accountId} -> accountId) (\s@DeleteRoomMembership' {} a -> s {accountId = a} :: DeleteRoomMembership)
+
+-- | The room ID.
+deleteRoomMembership_roomId :: Lens.Lens' DeleteRoomMembership Prelude.Text
+deleteRoomMembership_roomId = Lens.lens (\DeleteRoomMembership' {roomId} -> roomId) (\s@DeleteRoomMembership' {} a -> s {roomId = a} :: DeleteRoomMembership)
+
+-- | The member ID (user ID or bot ID).
+deleteRoomMembership_memberId :: Lens.Lens' DeleteRoomMembership Prelude.Text
+deleteRoomMembership_memberId = Lens.lens (\DeleteRoomMembership' {memberId} -> memberId) (\s@DeleteRoomMembership' {} a -> s {memberId = a} :: DeleteRoomMembership)
+
+instance Core.AWSRequest DeleteRoomMembership where
+  type
+    AWSResponse DeleteRoomMembership =
+      DeleteRoomMembershipResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull DeleteRoomMembershipResponse'
+
+instance Prelude.Hashable DeleteRoomMembership where
+  hashWithSalt _salt DeleteRoomMembership' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` roomId
+      `Prelude.hashWithSalt` memberId
+
+instance Prelude.NFData DeleteRoomMembership where
+  rnf DeleteRoomMembership' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf roomId
+      `Prelude.seq` Prelude.rnf memberId
+
+instance Data.ToHeaders DeleteRoomMembership where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteRoomMembership where
+  toPath DeleteRoomMembership' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS accountId,
+        "/rooms/",
+        Data.toBS roomId,
+        "/memberships/",
+        Data.toBS memberId
+      ]
+
+instance Data.ToQuery DeleteRoomMembership where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteRoomMembershipResponse' smart constructor.
+data DeleteRoomMembershipResponse = DeleteRoomMembershipResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteRoomMembershipResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteRoomMembershipResponse ::
+  DeleteRoomMembershipResponse
+newDeleteRoomMembershipResponse =
+  DeleteRoomMembershipResponse'
+
+instance Prelude.NFData DeleteRoomMembershipResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/DeleteSipMediaApplication.hs b/gen/Amazonka/Chime/DeleteSipMediaApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DeleteSipMediaApplication.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DeleteSipMediaApplication
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a SIP media application.
+module Amazonka.Chime.DeleteSipMediaApplication
+  ( -- * Creating a Request
+    DeleteSipMediaApplication (..),
+    newDeleteSipMediaApplication,
+
+    -- * Request Lenses
+    deleteSipMediaApplication_sipMediaApplicationId,
+
+    -- * Destructuring the Response
+    DeleteSipMediaApplicationResponse (..),
+    newDeleteSipMediaApplicationResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteSipMediaApplication' smart constructor.
+data DeleteSipMediaApplication = DeleteSipMediaApplication'
+  { -- | The SIP media application ID.
+    sipMediaApplicationId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteSipMediaApplication' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sipMediaApplicationId', 'deleteSipMediaApplication_sipMediaApplicationId' - The SIP media application ID.
+newDeleteSipMediaApplication ::
+  -- | 'sipMediaApplicationId'
+  Prelude.Text ->
+  DeleteSipMediaApplication
+newDeleteSipMediaApplication pSipMediaApplicationId_ =
+  DeleteSipMediaApplication'
+    { sipMediaApplicationId =
+        pSipMediaApplicationId_
+    }
+
+-- | The SIP media application ID.
+deleteSipMediaApplication_sipMediaApplicationId :: Lens.Lens' DeleteSipMediaApplication Prelude.Text
+deleteSipMediaApplication_sipMediaApplicationId = Lens.lens (\DeleteSipMediaApplication' {sipMediaApplicationId} -> sipMediaApplicationId) (\s@DeleteSipMediaApplication' {} a -> s {sipMediaApplicationId = a} :: DeleteSipMediaApplication)
+
+instance Core.AWSRequest DeleteSipMediaApplication where
+  type
+    AWSResponse DeleteSipMediaApplication =
+      DeleteSipMediaApplicationResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteSipMediaApplicationResponse'
+
+instance Prelude.Hashable DeleteSipMediaApplication where
+  hashWithSalt _salt DeleteSipMediaApplication' {..} =
+    _salt `Prelude.hashWithSalt` sipMediaApplicationId
+
+instance Prelude.NFData DeleteSipMediaApplication where
+  rnf DeleteSipMediaApplication' {..} =
+    Prelude.rnf sipMediaApplicationId
+
+instance Data.ToHeaders DeleteSipMediaApplication where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteSipMediaApplication where
+  toPath DeleteSipMediaApplication' {..} =
+    Prelude.mconcat
+      [ "/sip-media-applications/",
+        Data.toBS sipMediaApplicationId
+      ]
+
+instance Data.ToQuery DeleteSipMediaApplication where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteSipMediaApplicationResponse' smart constructor.
+data DeleteSipMediaApplicationResponse = DeleteSipMediaApplicationResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteSipMediaApplicationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteSipMediaApplicationResponse ::
+  DeleteSipMediaApplicationResponse
+newDeleteSipMediaApplicationResponse =
+  DeleteSipMediaApplicationResponse'
+
+instance
+  Prelude.NFData
+    DeleteSipMediaApplicationResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/DeleteSipRule.hs b/gen/Amazonka/Chime/DeleteSipRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DeleteSipRule.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DeleteSipRule
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a SIP rule. You must disable a SIP rule before you can delete
+-- it.
+module Amazonka.Chime.DeleteSipRule
+  ( -- * Creating a Request
+    DeleteSipRule (..),
+    newDeleteSipRule,
+
+    -- * Request Lenses
+    deleteSipRule_sipRuleId,
+
+    -- * Destructuring the Response
+    DeleteSipRuleResponse (..),
+    newDeleteSipRuleResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteSipRule' smart constructor.
+data DeleteSipRule = DeleteSipRule'
+  { -- | The SIP rule ID.
+    sipRuleId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteSipRule' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sipRuleId', 'deleteSipRule_sipRuleId' - The SIP rule ID.
+newDeleteSipRule ::
+  -- | 'sipRuleId'
+  Prelude.Text ->
+  DeleteSipRule
+newDeleteSipRule pSipRuleId_ =
+  DeleteSipRule' {sipRuleId = pSipRuleId_}
+
+-- | The SIP rule ID.
+deleteSipRule_sipRuleId :: Lens.Lens' DeleteSipRule Prelude.Text
+deleteSipRule_sipRuleId = Lens.lens (\DeleteSipRule' {sipRuleId} -> sipRuleId) (\s@DeleteSipRule' {} a -> s {sipRuleId = a} :: DeleteSipRule)
+
+instance Core.AWSRequest DeleteSipRule where
+  type
+    AWSResponse DeleteSipRule =
+      DeleteSipRuleResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull DeleteSipRuleResponse'
+
+instance Prelude.Hashable DeleteSipRule where
+  hashWithSalt _salt DeleteSipRule' {..} =
+    _salt `Prelude.hashWithSalt` sipRuleId
+
+instance Prelude.NFData DeleteSipRule where
+  rnf DeleteSipRule' {..} = Prelude.rnf sipRuleId
+
+instance Data.ToHeaders DeleteSipRule where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteSipRule where
+  toPath DeleteSipRule' {..} =
+    Prelude.mconcat
+      ["/sip-rules/", Data.toBS sipRuleId]
+
+instance Data.ToQuery DeleteSipRule where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteSipRuleResponse' smart constructor.
+data DeleteSipRuleResponse = DeleteSipRuleResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteSipRuleResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteSipRuleResponse ::
+  DeleteSipRuleResponse
+newDeleteSipRuleResponse = DeleteSipRuleResponse'
+
+instance Prelude.NFData DeleteSipRuleResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/DeleteVoiceConnector.hs b/gen/Amazonka/Chime/DeleteVoiceConnector.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DeleteVoiceConnector.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DeleteVoiceConnector
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the specified Amazon Chime Voice Connector. Any phone numbers
+-- associated with the Amazon Chime Voice Connector must be disassociated
+-- from it before it can be deleted.
+module Amazonka.Chime.DeleteVoiceConnector
+  ( -- * Creating a Request
+    DeleteVoiceConnector (..),
+    newDeleteVoiceConnector,
+
+    -- * Request Lenses
+    deleteVoiceConnector_voiceConnectorId,
+
+    -- * Destructuring the Response
+    DeleteVoiceConnectorResponse (..),
+    newDeleteVoiceConnectorResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteVoiceConnector' smart constructor.
+data DeleteVoiceConnector = DeleteVoiceConnector'
+  { -- | The Amazon Chime Voice Connector ID.
+    voiceConnectorId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteVoiceConnector' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorId', 'deleteVoiceConnector_voiceConnectorId' - The Amazon Chime Voice Connector ID.
+newDeleteVoiceConnector ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  DeleteVoiceConnector
+newDeleteVoiceConnector pVoiceConnectorId_ =
+  DeleteVoiceConnector'
+    { voiceConnectorId =
+        pVoiceConnectorId_
+    }
+
+-- | The Amazon Chime Voice Connector ID.
+deleteVoiceConnector_voiceConnectorId :: Lens.Lens' DeleteVoiceConnector Prelude.Text
+deleteVoiceConnector_voiceConnectorId = Lens.lens (\DeleteVoiceConnector' {voiceConnectorId} -> voiceConnectorId) (\s@DeleteVoiceConnector' {} a -> s {voiceConnectorId = a} :: DeleteVoiceConnector)
+
+instance Core.AWSRequest DeleteVoiceConnector where
+  type
+    AWSResponse DeleteVoiceConnector =
+      DeleteVoiceConnectorResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull DeleteVoiceConnectorResponse'
+
+instance Prelude.Hashable DeleteVoiceConnector where
+  hashWithSalt _salt DeleteVoiceConnector' {..} =
+    _salt `Prelude.hashWithSalt` voiceConnectorId
+
+instance Prelude.NFData DeleteVoiceConnector where
+  rnf DeleteVoiceConnector' {..} =
+    Prelude.rnf voiceConnectorId
+
+instance Data.ToHeaders DeleteVoiceConnector where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteVoiceConnector where
+  toPath DeleteVoiceConnector' {..} =
+    Prelude.mconcat
+      ["/voice-connectors/", Data.toBS voiceConnectorId]
+
+instance Data.ToQuery DeleteVoiceConnector where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteVoiceConnectorResponse' smart constructor.
+data DeleteVoiceConnectorResponse = DeleteVoiceConnectorResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteVoiceConnectorResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteVoiceConnectorResponse ::
+  DeleteVoiceConnectorResponse
+newDeleteVoiceConnectorResponse =
+  DeleteVoiceConnectorResponse'
+
+instance Prelude.NFData DeleteVoiceConnectorResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/DeleteVoiceConnectorEmergencyCallingConfiguration.hs b/gen/Amazonka/Chime/DeleteVoiceConnectorEmergencyCallingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DeleteVoiceConnectorEmergencyCallingConfiguration.hs
@@ -0,0 +1,152 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DeleteVoiceConnectorEmergencyCallingConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the emergency calling configuration details from the specified
+-- Amazon Chime Voice Connector.
+module Amazonka.Chime.DeleteVoiceConnectorEmergencyCallingConfiguration
+  ( -- * Creating a Request
+    DeleteVoiceConnectorEmergencyCallingConfiguration (..),
+    newDeleteVoiceConnectorEmergencyCallingConfiguration,
+
+    -- * Request Lenses
+    deleteVoiceConnectorEmergencyCallingConfiguration_voiceConnectorId,
+
+    -- * Destructuring the Response
+    DeleteVoiceConnectorEmergencyCallingConfigurationResponse (..),
+    newDeleteVoiceConnectorEmergencyCallingConfigurationResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteVoiceConnectorEmergencyCallingConfiguration' smart constructor.
+data DeleteVoiceConnectorEmergencyCallingConfiguration = DeleteVoiceConnectorEmergencyCallingConfiguration'
+  { -- | The Amazon Chime Voice Connector ID.
+    voiceConnectorId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteVoiceConnectorEmergencyCallingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorId', 'deleteVoiceConnectorEmergencyCallingConfiguration_voiceConnectorId' - The Amazon Chime Voice Connector ID.
+newDeleteVoiceConnectorEmergencyCallingConfiguration ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  DeleteVoiceConnectorEmergencyCallingConfiguration
+newDeleteVoiceConnectorEmergencyCallingConfiguration
+  pVoiceConnectorId_ =
+    DeleteVoiceConnectorEmergencyCallingConfiguration'
+      { voiceConnectorId =
+          pVoiceConnectorId_
+      }
+
+-- | The Amazon Chime Voice Connector ID.
+deleteVoiceConnectorEmergencyCallingConfiguration_voiceConnectorId :: Lens.Lens' DeleteVoiceConnectorEmergencyCallingConfiguration Prelude.Text
+deleteVoiceConnectorEmergencyCallingConfiguration_voiceConnectorId = Lens.lens (\DeleteVoiceConnectorEmergencyCallingConfiguration' {voiceConnectorId} -> voiceConnectorId) (\s@DeleteVoiceConnectorEmergencyCallingConfiguration' {} a -> s {voiceConnectorId = a} :: DeleteVoiceConnectorEmergencyCallingConfiguration)
+
+instance
+  Core.AWSRequest
+    DeleteVoiceConnectorEmergencyCallingConfiguration
+  where
+  type
+    AWSResponse
+      DeleteVoiceConnectorEmergencyCallingConfiguration =
+      DeleteVoiceConnectorEmergencyCallingConfigurationResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteVoiceConnectorEmergencyCallingConfigurationResponse'
+
+instance
+  Prelude.Hashable
+    DeleteVoiceConnectorEmergencyCallingConfiguration
+  where
+  hashWithSalt
+    _salt
+    DeleteVoiceConnectorEmergencyCallingConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` voiceConnectorId
+
+instance
+  Prelude.NFData
+    DeleteVoiceConnectorEmergencyCallingConfiguration
+  where
+  rnf
+    DeleteVoiceConnectorEmergencyCallingConfiguration' {..} =
+      Prelude.rnf voiceConnectorId
+
+instance
+  Data.ToHeaders
+    DeleteVoiceConnectorEmergencyCallingConfiguration
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    DeleteVoiceConnectorEmergencyCallingConfiguration
+  where
+  toPath
+    DeleteVoiceConnectorEmergencyCallingConfiguration' {..} =
+      Prelude.mconcat
+        [ "/voice-connectors/",
+          Data.toBS voiceConnectorId,
+          "/emergency-calling-configuration"
+        ]
+
+instance
+  Data.ToQuery
+    DeleteVoiceConnectorEmergencyCallingConfiguration
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteVoiceConnectorEmergencyCallingConfigurationResponse' smart constructor.
+data DeleteVoiceConnectorEmergencyCallingConfigurationResponse = DeleteVoiceConnectorEmergencyCallingConfigurationResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteVoiceConnectorEmergencyCallingConfigurationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteVoiceConnectorEmergencyCallingConfigurationResponse ::
+  DeleteVoiceConnectorEmergencyCallingConfigurationResponse
+newDeleteVoiceConnectorEmergencyCallingConfigurationResponse =
+  DeleteVoiceConnectorEmergencyCallingConfigurationResponse'
+
+instance
+  Prelude.NFData
+    DeleteVoiceConnectorEmergencyCallingConfigurationResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/DeleteVoiceConnectorGroup.hs b/gen/Amazonka/Chime/DeleteVoiceConnectorGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DeleteVoiceConnectorGroup.hs
@@ -0,0 +1,128 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DeleteVoiceConnectorGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the specified Amazon Chime Voice Connector group. Any
+-- @VoiceConnectorItems@ and phone numbers associated with the group must
+-- be removed before it can be deleted.
+module Amazonka.Chime.DeleteVoiceConnectorGroup
+  ( -- * Creating a Request
+    DeleteVoiceConnectorGroup (..),
+    newDeleteVoiceConnectorGroup,
+
+    -- * Request Lenses
+    deleteVoiceConnectorGroup_voiceConnectorGroupId,
+
+    -- * Destructuring the Response
+    DeleteVoiceConnectorGroupResponse (..),
+    newDeleteVoiceConnectorGroupResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteVoiceConnectorGroup' smart constructor.
+data DeleteVoiceConnectorGroup = DeleteVoiceConnectorGroup'
+  { -- | The Amazon Chime Voice Connector group ID.
+    voiceConnectorGroupId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteVoiceConnectorGroup' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorGroupId', 'deleteVoiceConnectorGroup_voiceConnectorGroupId' - The Amazon Chime Voice Connector group ID.
+newDeleteVoiceConnectorGroup ::
+  -- | 'voiceConnectorGroupId'
+  Prelude.Text ->
+  DeleteVoiceConnectorGroup
+newDeleteVoiceConnectorGroup pVoiceConnectorGroupId_ =
+  DeleteVoiceConnectorGroup'
+    { voiceConnectorGroupId =
+        pVoiceConnectorGroupId_
+    }
+
+-- | The Amazon Chime Voice Connector group ID.
+deleteVoiceConnectorGroup_voiceConnectorGroupId :: Lens.Lens' DeleteVoiceConnectorGroup Prelude.Text
+deleteVoiceConnectorGroup_voiceConnectorGroupId = Lens.lens (\DeleteVoiceConnectorGroup' {voiceConnectorGroupId} -> voiceConnectorGroupId) (\s@DeleteVoiceConnectorGroup' {} a -> s {voiceConnectorGroupId = a} :: DeleteVoiceConnectorGroup)
+
+instance Core.AWSRequest DeleteVoiceConnectorGroup where
+  type
+    AWSResponse DeleteVoiceConnectorGroup =
+      DeleteVoiceConnectorGroupResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteVoiceConnectorGroupResponse'
+
+instance Prelude.Hashable DeleteVoiceConnectorGroup where
+  hashWithSalt _salt DeleteVoiceConnectorGroup' {..} =
+    _salt `Prelude.hashWithSalt` voiceConnectorGroupId
+
+instance Prelude.NFData DeleteVoiceConnectorGroup where
+  rnf DeleteVoiceConnectorGroup' {..} =
+    Prelude.rnf voiceConnectorGroupId
+
+instance Data.ToHeaders DeleteVoiceConnectorGroup where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteVoiceConnectorGroup where
+  toPath DeleteVoiceConnectorGroup' {..} =
+    Prelude.mconcat
+      [ "/voice-connector-groups/",
+        Data.toBS voiceConnectorGroupId
+      ]
+
+instance Data.ToQuery DeleteVoiceConnectorGroup where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteVoiceConnectorGroupResponse' smart constructor.
+data DeleteVoiceConnectorGroupResponse = DeleteVoiceConnectorGroupResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteVoiceConnectorGroupResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteVoiceConnectorGroupResponse ::
+  DeleteVoiceConnectorGroupResponse
+newDeleteVoiceConnectorGroupResponse =
+  DeleteVoiceConnectorGroupResponse'
+
+instance
+  Prelude.NFData
+    DeleteVoiceConnectorGroupResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/DeleteVoiceConnectorOrigination.hs b/gen/Amazonka/Chime/DeleteVoiceConnectorOrigination.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DeleteVoiceConnectorOrigination.hs
@@ -0,0 +1,145 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DeleteVoiceConnectorOrigination
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the origination settings for the specified Amazon Chime Voice
+-- Connector.
+--
+-- If emergency calling is configured for the Amazon Chime Voice Connector,
+-- it must be deleted prior to deleting the origination settings.
+module Amazonka.Chime.DeleteVoiceConnectorOrigination
+  ( -- * Creating a Request
+    DeleteVoiceConnectorOrigination (..),
+    newDeleteVoiceConnectorOrigination,
+
+    -- * Request Lenses
+    deleteVoiceConnectorOrigination_voiceConnectorId,
+
+    -- * Destructuring the Response
+    DeleteVoiceConnectorOriginationResponse (..),
+    newDeleteVoiceConnectorOriginationResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteVoiceConnectorOrigination' smart constructor.
+data DeleteVoiceConnectorOrigination = DeleteVoiceConnectorOrigination'
+  { -- | The Amazon Chime Voice Connector ID.
+    voiceConnectorId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteVoiceConnectorOrigination' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorId', 'deleteVoiceConnectorOrigination_voiceConnectorId' - The Amazon Chime Voice Connector ID.
+newDeleteVoiceConnectorOrigination ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  DeleteVoiceConnectorOrigination
+newDeleteVoiceConnectorOrigination pVoiceConnectorId_ =
+  DeleteVoiceConnectorOrigination'
+    { voiceConnectorId =
+        pVoiceConnectorId_
+    }
+
+-- | The Amazon Chime Voice Connector ID.
+deleteVoiceConnectorOrigination_voiceConnectorId :: Lens.Lens' DeleteVoiceConnectorOrigination Prelude.Text
+deleteVoiceConnectorOrigination_voiceConnectorId = Lens.lens (\DeleteVoiceConnectorOrigination' {voiceConnectorId} -> voiceConnectorId) (\s@DeleteVoiceConnectorOrigination' {} a -> s {voiceConnectorId = a} :: DeleteVoiceConnectorOrigination)
+
+instance
+  Core.AWSRequest
+    DeleteVoiceConnectorOrigination
+  where
+  type
+    AWSResponse DeleteVoiceConnectorOrigination =
+      DeleteVoiceConnectorOriginationResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteVoiceConnectorOriginationResponse'
+
+instance
+  Prelude.Hashable
+    DeleteVoiceConnectorOrigination
+  where
+  hashWithSalt
+    _salt
+    DeleteVoiceConnectorOrigination' {..} =
+      _salt `Prelude.hashWithSalt` voiceConnectorId
+
+instance
+  Prelude.NFData
+    DeleteVoiceConnectorOrigination
+  where
+  rnf DeleteVoiceConnectorOrigination' {..} =
+    Prelude.rnf voiceConnectorId
+
+instance
+  Data.ToHeaders
+    DeleteVoiceConnectorOrigination
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteVoiceConnectorOrigination where
+  toPath DeleteVoiceConnectorOrigination' {..} =
+    Prelude.mconcat
+      [ "/voice-connectors/",
+        Data.toBS voiceConnectorId,
+        "/origination"
+      ]
+
+instance Data.ToQuery DeleteVoiceConnectorOrigination where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteVoiceConnectorOriginationResponse' smart constructor.
+data DeleteVoiceConnectorOriginationResponse = DeleteVoiceConnectorOriginationResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteVoiceConnectorOriginationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteVoiceConnectorOriginationResponse ::
+  DeleteVoiceConnectorOriginationResponse
+newDeleteVoiceConnectorOriginationResponse =
+  DeleteVoiceConnectorOriginationResponse'
+
+instance
+  Prelude.NFData
+    DeleteVoiceConnectorOriginationResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/DeleteVoiceConnectorProxy.hs b/gen/Amazonka/Chime/DeleteVoiceConnectorProxy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DeleteVoiceConnectorProxy.hs
@@ -0,0 +1,128 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DeleteVoiceConnectorProxy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the proxy configuration from the specified Amazon Chime Voice
+-- Connector.
+module Amazonka.Chime.DeleteVoiceConnectorProxy
+  ( -- * Creating a Request
+    DeleteVoiceConnectorProxy (..),
+    newDeleteVoiceConnectorProxy,
+
+    -- * Request Lenses
+    deleteVoiceConnectorProxy_voiceConnectorId,
+
+    -- * Destructuring the Response
+    DeleteVoiceConnectorProxyResponse (..),
+    newDeleteVoiceConnectorProxyResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteVoiceConnectorProxy' smart constructor.
+data DeleteVoiceConnectorProxy = DeleteVoiceConnectorProxy'
+  { -- | The Amazon Chime Voice Connector ID.
+    voiceConnectorId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteVoiceConnectorProxy' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorId', 'deleteVoiceConnectorProxy_voiceConnectorId' - The Amazon Chime Voice Connector ID.
+newDeleteVoiceConnectorProxy ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  DeleteVoiceConnectorProxy
+newDeleteVoiceConnectorProxy pVoiceConnectorId_ =
+  DeleteVoiceConnectorProxy'
+    { voiceConnectorId =
+        pVoiceConnectorId_
+    }
+
+-- | The Amazon Chime Voice Connector ID.
+deleteVoiceConnectorProxy_voiceConnectorId :: Lens.Lens' DeleteVoiceConnectorProxy Prelude.Text
+deleteVoiceConnectorProxy_voiceConnectorId = Lens.lens (\DeleteVoiceConnectorProxy' {voiceConnectorId} -> voiceConnectorId) (\s@DeleteVoiceConnectorProxy' {} a -> s {voiceConnectorId = a} :: DeleteVoiceConnectorProxy)
+
+instance Core.AWSRequest DeleteVoiceConnectorProxy where
+  type
+    AWSResponse DeleteVoiceConnectorProxy =
+      DeleteVoiceConnectorProxyResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteVoiceConnectorProxyResponse'
+
+instance Prelude.Hashable DeleteVoiceConnectorProxy where
+  hashWithSalt _salt DeleteVoiceConnectorProxy' {..} =
+    _salt `Prelude.hashWithSalt` voiceConnectorId
+
+instance Prelude.NFData DeleteVoiceConnectorProxy where
+  rnf DeleteVoiceConnectorProxy' {..} =
+    Prelude.rnf voiceConnectorId
+
+instance Data.ToHeaders DeleteVoiceConnectorProxy where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteVoiceConnectorProxy where
+  toPath DeleteVoiceConnectorProxy' {..} =
+    Prelude.mconcat
+      [ "/voice-connectors/",
+        Data.toBS voiceConnectorId,
+        "/programmable-numbers/proxy"
+      ]
+
+instance Data.ToQuery DeleteVoiceConnectorProxy where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteVoiceConnectorProxyResponse' smart constructor.
+data DeleteVoiceConnectorProxyResponse = DeleteVoiceConnectorProxyResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteVoiceConnectorProxyResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteVoiceConnectorProxyResponse ::
+  DeleteVoiceConnectorProxyResponse
+newDeleteVoiceConnectorProxyResponse =
+  DeleteVoiceConnectorProxyResponse'
+
+instance
+  Prelude.NFData
+    DeleteVoiceConnectorProxyResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/DeleteVoiceConnectorStreamingConfiguration.hs b/gen/Amazonka/Chime/DeleteVoiceConnectorStreamingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DeleteVoiceConnectorStreamingConfiguration.hs
@@ -0,0 +1,151 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DeleteVoiceConnectorStreamingConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the streaming configuration for the specified Amazon Chime Voice
+-- Connector.
+module Amazonka.Chime.DeleteVoiceConnectorStreamingConfiguration
+  ( -- * Creating a Request
+    DeleteVoiceConnectorStreamingConfiguration (..),
+    newDeleteVoiceConnectorStreamingConfiguration,
+
+    -- * Request Lenses
+    deleteVoiceConnectorStreamingConfiguration_voiceConnectorId,
+
+    -- * Destructuring the Response
+    DeleteVoiceConnectorStreamingConfigurationResponse (..),
+    newDeleteVoiceConnectorStreamingConfigurationResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteVoiceConnectorStreamingConfiguration' smart constructor.
+data DeleteVoiceConnectorStreamingConfiguration = DeleteVoiceConnectorStreamingConfiguration'
+  { -- | The Amazon Chime Voice Connector ID.
+    voiceConnectorId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteVoiceConnectorStreamingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorId', 'deleteVoiceConnectorStreamingConfiguration_voiceConnectorId' - The Amazon Chime Voice Connector ID.
+newDeleteVoiceConnectorStreamingConfiguration ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  DeleteVoiceConnectorStreamingConfiguration
+newDeleteVoiceConnectorStreamingConfiguration
+  pVoiceConnectorId_ =
+    DeleteVoiceConnectorStreamingConfiguration'
+      { voiceConnectorId =
+          pVoiceConnectorId_
+      }
+
+-- | The Amazon Chime Voice Connector ID.
+deleteVoiceConnectorStreamingConfiguration_voiceConnectorId :: Lens.Lens' DeleteVoiceConnectorStreamingConfiguration Prelude.Text
+deleteVoiceConnectorStreamingConfiguration_voiceConnectorId = Lens.lens (\DeleteVoiceConnectorStreamingConfiguration' {voiceConnectorId} -> voiceConnectorId) (\s@DeleteVoiceConnectorStreamingConfiguration' {} a -> s {voiceConnectorId = a} :: DeleteVoiceConnectorStreamingConfiguration)
+
+instance
+  Core.AWSRequest
+    DeleteVoiceConnectorStreamingConfiguration
+  where
+  type
+    AWSResponse
+      DeleteVoiceConnectorStreamingConfiguration =
+      DeleteVoiceConnectorStreamingConfigurationResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteVoiceConnectorStreamingConfigurationResponse'
+
+instance
+  Prelude.Hashable
+    DeleteVoiceConnectorStreamingConfiguration
+  where
+  hashWithSalt
+    _salt
+    DeleteVoiceConnectorStreamingConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` voiceConnectorId
+
+instance
+  Prelude.NFData
+    DeleteVoiceConnectorStreamingConfiguration
+  where
+  rnf DeleteVoiceConnectorStreamingConfiguration' {..} =
+    Prelude.rnf voiceConnectorId
+
+instance
+  Data.ToHeaders
+    DeleteVoiceConnectorStreamingConfiguration
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    DeleteVoiceConnectorStreamingConfiguration
+  where
+  toPath
+    DeleteVoiceConnectorStreamingConfiguration' {..} =
+      Prelude.mconcat
+        [ "/voice-connectors/",
+          Data.toBS voiceConnectorId,
+          "/streaming-configuration"
+        ]
+
+instance
+  Data.ToQuery
+    DeleteVoiceConnectorStreamingConfiguration
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteVoiceConnectorStreamingConfigurationResponse' smart constructor.
+data DeleteVoiceConnectorStreamingConfigurationResponse = DeleteVoiceConnectorStreamingConfigurationResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteVoiceConnectorStreamingConfigurationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteVoiceConnectorStreamingConfigurationResponse ::
+  DeleteVoiceConnectorStreamingConfigurationResponse
+newDeleteVoiceConnectorStreamingConfigurationResponse =
+  DeleteVoiceConnectorStreamingConfigurationResponse'
+
+instance
+  Prelude.NFData
+    DeleteVoiceConnectorStreamingConfigurationResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/DeleteVoiceConnectorTermination.hs b/gen/Amazonka/Chime/DeleteVoiceConnectorTermination.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DeleteVoiceConnectorTermination.hs
@@ -0,0 +1,145 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DeleteVoiceConnectorTermination
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the termination settings for the specified Amazon Chime Voice
+-- Connector.
+--
+-- If emergency calling is configured for the Amazon Chime Voice Connector,
+-- it must be deleted prior to deleting the termination settings.
+module Amazonka.Chime.DeleteVoiceConnectorTermination
+  ( -- * Creating a Request
+    DeleteVoiceConnectorTermination (..),
+    newDeleteVoiceConnectorTermination,
+
+    -- * Request Lenses
+    deleteVoiceConnectorTermination_voiceConnectorId,
+
+    -- * Destructuring the Response
+    DeleteVoiceConnectorTerminationResponse (..),
+    newDeleteVoiceConnectorTerminationResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteVoiceConnectorTermination' smart constructor.
+data DeleteVoiceConnectorTermination = DeleteVoiceConnectorTermination'
+  { -- | The Amazon Chime Voice Connector ID.
+    voiceConnectorId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteVoiceConnectorTermination' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorId', 'deleteVoiceConnectorTermination_voiceConnectorId' - The Amazon Chime Voice Connector ID.
+newDeleteVoiceConnectorTermination ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  DeleteVoiceConnectorTermination
+newDeleteVoiceConnectorTermination pVoiceConnectorId_ =
+  DeleteVoiceConnectorTermination'
+    { voiceConnectorId =
+        pVoiceConnectorId_
+    }
+
+-- | The Amazon Chime Voice Connector ID.
+deleteVoiceConnectorTermination_voiceConnectorId :: Lens.Lens' DeleteVoiceConnectorTermination Prelude.Text
+deleteVoiceConnectorTermination_voiceConnectorId = Lens.lens (\DeleteVoiceConnectorTermination' {voiceConnectorId} -> voiceConnectorId) (\s@DeleteVoiceConnectorTermination' {} a -> s {voiceConnectorId = a} :: DeleteVoiceConnectorTermination)
+
+instance
+  Core.AWSRequest
+    DeleteVoiceConnectorTermination
+  where
+  type
+    AWSResponse DeleteVoiceConnectorTermination =
+      DeleteVoiceConnectorTerminationResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteVoiceConnectorTerminationResponse'
+
+instance
+  Prelude.Hashable
+    DeleteVoiceConnectorTermination
+  where
+  hashWithSalt
+    _salt
+    DeleteVoiceConnectorTermination' {..} =
+      _salt `Prelude.hashWithSalt` voiceConnectorId
+
+instance
+  Prelude.NFData
+    DeleteVoiceConnectorTermination
+  where
+  rnf DeleteVoiceConnectorTermination' {..} =
+    Prelude.rnf voiceConnectorId
+
+instance
+  Data.ToHeaders
+    DeleteVoiceConnectorTermination
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteVoiceConnectorTermination where
+  toPath DeleteVoiceConnectorTermination' {..} =
+    Prelude.mconcat
+      [ "/voice-connectors/",
+        Data.toBS voiceConnectorId,
+        "/termination"
+      ]
+
+instance Data.ToQuery DeleteVoiceConnectorTermination where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteVoiceConnectorTerminationResponse' smart constructor.
+data DeleteVoiceConnectorTerminationResponse = DeleteVoiceConnectorTerminationResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteVoiceConnectorTerminationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteVoiceConnectorTerminationResponse ::
+  DeleteVoiceConnectorTerminationResponse
+newDeleteVoiceConnectorTerminationResponse =
+  DeleteVoiceConnectorTerminationResponse'
+
+instance
+  Prelude.NFData
+    DeleteVoiceConnectorTerminationResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/DeleteVoiceConnectorTerminationCredentials.hs b/gen/Amazonka/Chime/DeleteVoiceConnectorTerminationCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DeleteVoiceConnectorTerminationCredentials.hs
@@ -0,0 +1,181 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DeleteVoiceConnectorTerminationCredentials
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the specified SIP credentials used by your equipment to
+-- authenticate during call termination.
+module Amazonka.Chime.DeleteVoiceConnectorTerminationCredentials
+  ( -- * Creating a Request
+    DeleteVoiceConnectorTerminationCredentials (..),
+    newDeleteVoiceConnectorTerminationCredentials,
+
+    -- * Request Lenses
+    deleteVoiceConnectorTerminationCredentials_usernames,
+    deleteVoiceConnectorTerminationCredentials_voiceConnectorId,
+
+    -- * Destructuring the Response
+    DeleteVoiceConnectorTerminationCredentialsResponse (..),
+    newDeleteVoiceConnectorTerminationCredentialsResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteVoiceConnectorTerminationCredentials' smart constructor.
+data DeleteVoiceConnectorTerminationCredentials = DeleteVoiceConnectorTerminationCredentials'
+  { -- | The RFC2617 compliant username associated with the SIP credentials, in
+    -- US-ASCII format.
+    usernames :: [Data.Sensitive Prelude.Text],
+    -- | The Amazon Chime Voice Connector ID.
+    voiceConnectorId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteVoiceConnectorTerminationCredentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'usernames', 'deleteVoiceConnectorTerminationCredentials_usernames' - The RFC2617 compliant username associated with the SIP credentials, in
+-- US-ASCII format.
+--
+-- 'voiceConnectorId', 'deleteVoiceConnectorTerminationCredentials_voiceConnectorId' - The Amazon Chime Voice Connector ID.
+newDeleteVoiceConnectorTerminationCredentials ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  DeleteVoiceConnectorTerminationCredentials
+newDeleteVoiceConnectorTerminationCredentials
+  pVoiceConnectorId_ =
+    DeleteVoiceConnectorTerminationCredentials'
+      { usernames =
+          Prelude.mempty,
+        voiceConnectorId =
+          pVoiceConnectorId_
+      }
+
+-- | The RFC2617 compliant username associated with the SIP credentials, in
+-- US-ASCII format.
+deleteVoiceConnectorTerminationCredentials_usernames :: Lens.Lens' DeleteVoiceConnectorTerminationCredentials [Prelude.Text]
+deleteVoiceConnectorTerminationCredentials_usernames = Lens.lens (\DeleteVoiceConnectorTerminationCredentials' {usernames} -> usernames) (\s@DeleteVoiceConnectorTerminationCredentials' {} a -> s {usernames = a} :: DeleteVoiceConnectorTerminationCredentials) Prelude.. Lens.coerced
+
+-- | The Amazon Chime Voice Connector ID.
+deleteVoiceConnectorTerminationCredentials_voiceConnectorId :: Lens.Lens' DeleteVoiceConnectorTerminationCredentials Prelude.Text
+deleteVoiceConnectorTerminationCredentials_voiceConnectorId = Lens.lens (\DeleteVoiceConnectorTerminationCredentials' {voiceConnectorId} -> voiceConnectorId) (\s@DeleteVoiceConnectorTerminationCredentials' {} a -> s {voiceConnectorId = a} :: DeleteVoiceConnectorTerminationCredentials)
+
+instance
+  Core.AWSRequest
+    DeleteVoiceConnectorTerminationCredentials
+  where
+  type
+    AWSResponse
+      DeleteVoiceConnectorTerminationCredentials =
+      DeleteVoiceConnectorTerminationCredentialsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteVoiceConnectorTerminationCredentialsResponse'
+
+instance
+  Prelude.Hashable
+    DeleteVoiceConnectorTerminationCredentials
+  where
+  hashWithSalt
+    _salt
+    DeleteVoiceConnectorTerminationCredentials' {..} =
+      _salt
+        `Prelude.hashWithSalt` usernames
+        `Prelude.hashWithSalt` voiceConnectorId
+
+instance
+  Prelude.NFData
+    DeleteVoiceConnectorTerminationCredentials
+  where
+  rnf DeleteVoiceConnectorTerminationCredentials' {..} =
+    Prelude.rnf usernames
+      `Prelude.seq` Prelude.rnf voiceConnectorId
+
+instance
+  Data.ToHeaders
+    DeleteVoiceConnectorTerminationCredentials
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToJSON
+    DeleteVoiceConnectorTerminationCredentials
+  where
+  toJSON
+    DeleteVoiceConnectorTerminationCredentials' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [Prelude.Just ("Usernames" Data..= usernames)]
+        )
+
+instance
+  Data.ToPath
+    DeleteVoiceConnectorTerminationCredentials
+  where
+  toPath
+    DeleteVoiceConnectorTerminationCredentials' {..} =
+      Prelude.mconcat
+        [ "/voice-connectors/",
+          Data.toBS voiceConnectorId,
+          "/termination/credentials"
+        ]
+
+instance
+  Data.ToQuery
+    DeleteVoiceConnectorTerminationCredentials
+  where
+  toQuery =
+    Prelude.const
+      (Prelude.mconcat ["operation=delete"])
+
+-- | /See:/ 'newDeleteVoiceConnectorTerminationCredentialsResponse' smart constructor.
+data DeleteVoiceConnectorTerminationCredentialsResponse = DeleteVoiceConnectorTerminationCredentialsResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteVoiceConnectorTerminationCredentialsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteVoiceConnectorTerminationCredentialsResponse ::
+  DeleteVoiceConnectorTerminationCredentialsResponse
+newDeleteVoiceConnectorTerminationCredentialsResponse =
+  DeleteVoiceConnectorTerminationCredentialsResponse'
+
+instance
+  Prelude.NFData
+    DeleteVoiceConnectorTerminationCredentialsResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/DescribeAppInstance.hs b/gen/Amazonka/Chime/DescribeAppInstance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DescribeAppInstance.hs
@@ -0,0 +1,158 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DescribeAppInstance
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the full details of an @AppInstance@.
+module Amazonka.Chime.DescribeAppInstance
+  ( -- * Creating a Request
+    DescribeAppInstance (..),
+    newDescribeAppInstance,
+
+    -- * Request Lenses
+    describeAppInstance_appInstanceArn,
+
+    -- * Destructuring the Response
+    DescribeAppInstanceResponse (..),
+    newDescribeAppInstanceResponse,
+
+    -- * Response Lenses
+    describeAppInstanceResponse_appInstance,
+    describeAppInstanceResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeAppInstance' smart constructor.
+data DescribeAppInstance = DescribeAppInstance'
+  { -- | The ARN of the @AppInstance@.
+    appInstanceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeAppInstance' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceArn', 'describeAppInstance_appInstanceArn' - The ARN of the @AppInstance@.
+newDescribeAppInstance ::
+  -- | 'appInstanceArn'
+  Prelude.Text ->
+  DescribeAppInstance
+newDescribeAppInstance pAppInstanceArn_ =
+  DescribeAppInstance'
+    { appInstanceArn =
+        pAppInstanceArn_
+    }
+
+-- | The ARN of the @AppInstance@.
+describeAppInstance_appInstanceArn :: Lens.Lens' DescribeAppInstance Prelude.Text
+describeAppInstance_appInstanceArn = Lens.lens (\DescribeAppInstance' {appInstanceArn} -> appInstanceArn) (\s@DescribeAppInstance' {} a -> s {appInstanceArn = a} :: DescribeAppInstance)
+
+instance Core.AWSRequest DescribeAppInstance where
+  type
+    AWSResponse DescribeAppInstance =
+      DescribeAppInstanceResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeAppInstanceResponse'
+            Prelude.<$> (x Data..?> "AppInstance")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeAppInstance where
+  hashWithSalt _salt DescribeAppInstance' {..} =
+    _salt `Prelude.hashWithSalt` appInstanceArn
+
+instance Prelude.NFData DescribeAppInstance where
+  rnf DescribeAppInstance' {..} =
+    Prelude.rnf appInstanceArn
+
+instance Data.ToHeaders DescribeAppInstance where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DescribeAppInstance where
+  toPath DescribeAppInstance' {..} =
+    Prelude.mconcat
+      ["/app-instances/", Data.toBS appInstanceArn]
+
+instance Data.ToQuery DescribeAppInstance where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeAppInstanceResponse' smart constructor.
+data DescribeAppInstanceResponse = DescribeAppInstanceResponse'
+  { -- | The ARN, metadata, created and last-updated timestamps, and the name of
+    -- the @AppInstance@. All timestamps use epoch milliseconds.
+    appInstance :: Prelude.Maybe AppInstance,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeAppInstanceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstance', 'describeAppInstanceResponse_appInstance' - The ARN, metadata, created and last-updated timestamps, and the name of
+-- the @AppInstance@. All timestamps use epoch milliseconds.
+--
+-- 'httpStatus', 'describeAppInstanceResponse_httpStatus' - The response's http status code.
+newDescribeAppInstanceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeAppInstanceResponse
+newDescribeAppInstanceResponse pHttpStatus_ =
+  DescribeAppInstanceResponse'
+    { appInstance =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN, metadata, created and last-updated timestamps, and the name of
+-- the @AppInstance@. All timestamps use epoch milliseconds.
+describeAppInstanceResponse_appInstance :: Lens.Lens' DescribeAppInstanceResponse (Prelude.Maybe AppInstance)
+describeAppInstanceResponse_appInstance = Lens.lens (\DescribeAppInstanceResponse' {appInstance} -> appInstance) (\s@DescribeAppInstanceResponse' {} a -> s {appInstance = a} :: DescribeAppInstanceResponse)
+
+-- | The response's http status code.
+describeAppInstanceResponse_httpStatus :: Lens.Lens' DescribeAppInstanceResponse Prelude.Int
+describeAppInstanceResponse_httpStatus = Lens.lens (\DescribeAppInstanceResponse' {httpStatus} -> httpStatus) (\s@DescribeAppInstanceResponse' {} a -> s {httpStatus = a} :: DescribeAppInstanceResponse)
+
+instance Prelude.NFData DescribeAppInstanceResponse where
+  rnf DescribeAppInstanceResponse' {..} =
+    Prelude.rnf appInstance
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/DescribeAppInstanceAdmin.hs b/gen/Amazonka/Chime/DescribeAppInstanceAdmin.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DescribeAppInstanceAdmin.hs
@@ -0,0 +1,185 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DescribeAppInstanceAdmin
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the full details of an @AppInstanceAdmin@.
+module Amazonka.Chime.DescribeAppInstanceAdmin
+  ( -- * Creating a Request
+    DescribeAppInstanceAdmin (..),
+    newDescribeAppInstanceAdmin,
+
+    -- * Request Lenses
+    describeAppInstanceAdmin_appInstanceAdminArn,
+    describeAppInstanceAdmin_appInstanceArn,
+
+    -- * Destructuring the Response
+    DescribeAppInstanceAdminResponse (..),
+    newDescribeAppInstanceAdminResponse,
+
+    -- * Response Lenses
+    describeAppInstanceAdminResponse_appInstanceAdmin,
+    describeAppInstanceAdminResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeAppInstanceAdmin' smart constructor.
+data DescribeAppInstanceAdmin = DescribeAppInstanceAdmin'
+  { -- | The ARN of the @AppInstanceAdmin@.
+    appInstanceAdminArn :: Prelude.Text,
+    -- | The ARN of the @AppInstance@.
+    appInstanceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeAppInstanceAdmin' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceAdminArn', 'describeAppInstanceAdmin_appInstanceAdminArn' - The ARN of the @AppInstanceAdmin@.
+--
+-- 'appInstanceArn', 'describeAppInstanceAdmin_appInstanceArn' - The ARN of the @AppInstance@.
+newDescribeAppInstanceAdmin ::
+  -- | 'appInstanceAdminArn'
+  Prelude.Text ->
+  -- | 'appInstanceArn'
+  Prelude.Text ->
+  DescribeAppInstanceAdmin
+newDescribeAppInstanceAdmin
+  pAppInstanceAdminArn_
+  pAppInstanceArn_ =
+    DescribeAppInstanceAdmin'
+      { appInstanceAdminArn =
+          pAppInstanceAdminArn_,
+        appInstanceArn = pAppInstanceArn_
+      }
+
+-- | The ARN of the @AppInstanceAdmin@.
+describeAppInstanceAdmin_appInstanceAdminArn :: Lens.Lens' DescribeAppInstanceAdmin Prelude.Text
+describeAppInstanceAdmin_appInstanceAdminArn = Lens.lens (\DescribeAppInstanceAdmin' {appInstanceAdminArn} -> appInstanceAdminArn) (\s@DescribeAppInstanceAdmin' {} a -> s {appInstanceAdminArn = a} :: DescribeAppInstanceAdmin)
+
+-- | The ARN of the @AppInstance@.
+describeAppInstanceAdmin_appInstanceArn :: Lens.Lens' DescribeAppInstanceAdmin Prelude.Text
+describeAppInstanceAdmin_appInstanceArn = Lens.lens (\DescribeAppInstanceAdmin' {appInstanceArn} -> appInstanceArn) (\s@DescribeAppInstanceAdmin' {} a -> s {appInstanceArn = a} :: DescribeAppInstanceAdmin)
+
+instance Core.AWSRequest DescribeAppInstanceAdmin where
+  type
+    AWSResponse DescribeAppInstanceAdmin =
+      DescribeAppInstanceAdminResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeAppInstanceAdminResponse'
+            Prelude.<$> (x Data..?> "AppInstanceAdmin")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeAppInstanceAdmin where
+  hashWithSalt _salt DescribeAppInstanceAdmin' {..} =
+    _salt
+      `Prelude.hashWithSalt` appInstanceAdminArn
+      `Prelude.hashWithSalt` appInstanceArn
+
+instance Prelude.NFData DescribeAppInstanceAdmin where
+  rnf DescribeAppInstanceAdmin' {..} =
+    Prelude.rnf appInstanceAdminArn
+      `Prelude.seq` Prelude.rnf appInstanceArn
+
+instance Data.ToHeaders DescribeAppInstanceAdmin where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DescribeAppInstanceAdmin where
+  toPath DescribeAppInstanceAdmin' {..} =
+    Prelude.mconcat
+      [ "/app-instances/",
+        Data.toBS appInstanceArn,
+        "/admins/",
+        Data.toBS appInstanceAdminArn
+      ]
+
+instance Data.ToQuery DescribeAppInstanceAdmin where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeAppInstanceAdminResponse' smart constructor.
+data DescribeAppInstanceAdminResponse = DescribeAppInstanceAdminResponse'
+  { -- | The ARN and name of the @AppInstanceUser@, the ARN of the @AppInstance@,
+    -- and the created and last-updated timestamps. All timestamps use epoch
+    -- milliseconds.
+    appInstanceAdmin :: Prelude.Maybe AppInstanceAdmin,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeAppInstanceAdminResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceAdmin', 'describeAppInstanceAdminResponse_appInstanceAdmin' - The ARN and name of the @AppInstanceUser@, the ARN of the @AppInstance@,
+-- and the created and last-updated timestamps. All timestamps use epoch
+-- milliseconds.
+--
+-- 'httpStatus', 'describeAppInstanceAdminResponse_httpStatus' - The response's http status code.
+newDescribeAppInstanceAdminResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeAppInstanceAdminResponse
+newDescribeAppInstanceAdminResponse pHttpStatus_ =
+  DescribeAppInstanceAdminResponse'
+    { appInstanceAdmin =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN and name of the @AppInstanceUser@, the ARN of the @AppInstance@,
+-- and the created and last-updated timestamps. All timestamps use epoch
+-- milliseconds.
+describeAppInstanceAdminResponse_appInstanceAdmin :: Lens.Lens' DescribeAppInstanceAdminResponse (Prelude.Maybe AppInstanceAdmin)
+describeAppInstanceAdminResponse_appInstanceAdmin = Lens.lens (\DescribeAppInstanceAdminResponse' {appInstanceAdmin} -> appInstanceAdmin) (\s@DescribeAppInstanceAdminResponse' {} a -> s {appInstanceAdmin = a} :: DescribeAppInstanceAdminResponse)
+
+-- | The response's http status code.
+describeAppInstanceAdminResponse_httpStatus :: Lens.Lens' DescribeAppInstanceAdminResponse Prelude.Int
+describeAppInstanceAdminResponse_httpStatus = Lens.lens (\DescribeAppInstanceAdminResponse' {httpStatus} -> httpStatus) (\s@DescribeAppInstanceAdminResponse' {} a -> s {httpStatus = a} :: DescribeAppInstanceAdminResponse)
+
+instance
+  Prelude.NFData
+    DescribeAppInstanceAdminResponse
+  where
+  rnf DescribeAppInstanceAdminResponse' {..} =
+    Prelude.rnf appInstanceAdmin
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/DescribeAppInstanceUser.hs b/gen/Amazonka/Chime/DescribeAppInstanceUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DescribeAppInstanceUser.hs
@@ -0,0 +1,160 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DescribeAppInstanceUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the full details of an @AppInstanceUser@.
+module Amazonka.Chime.DescribeAppInstanceUser
+  ( -- * Creating a Request
+    DescribeAppInstanceUser (..),
+    newDescribeAppInstanceUser,
+
+    -- * Request Lenses
+    describeAppInstanceUser_appInstanceUserArn,
+
+    -- * Destructuring the Response
+    DescribeAppInstanceUserResponse (..),
+    newDescribeAppInstanceUserResponse,
+
+    -- * Response Lenses
+    describeAppInstanceUserResponse_appInstanceUser,
+    describeAppInstanceUserResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeAppInstanceUser' smart constructor.
+data DescribeAppInstanceUser = DescribeAppInstanceUser'
+  { -- | The ARN of the @AppInstanceUser@.
+    appInstanceUserArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeAppInstanceUser' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceUserArn', 'describeAppInstanceUser_appInstanceUserArn' - The ARN of the @AppInstanceUser@.
+newDescribeAppInstanceUser ::
+  -- | 'appInstanceUserArn'
+  Prelude.Text ->
+  DescribeAppInstanceUser
+newDescribeAppInstanceUser pAppInstanceUserArn_ =
+  DescribeAppInstanceUser'
+    { appInstanceUserArn =
+        pAppInstanceUserArn_
+    }
+
+-- | The ARN of the @AppInstanceUser@.
+describeAppInstanceUser_appInstanceUserArn :: Lens.Lens' DescribeAppInstanceUser Prelude.Text
+describeAppInstanceUser_appInstanceUserArn = Lens.lens (\DescribeAppInstanceUser' {appInstanceUserArn} -> appInstanceUserArn) (\s@DescribeAppInstanceUser' {} a -> s {appInstanceUserArn = a} :: DescribeAppInstanceUser)
+
+instance Core.AWSRequest DescribeAppInstanceUser where
+  type
+    AWSResponse DescribeAppInstanceUser =
+      DescribeAppInstanceUserResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeAppInstanceUserResponse'
+            Prelude.<$> (x Data..?> "AppInstanceUser")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeAppInstanceUser where
+  hashWithSalt _salt DescribeAppInstanceUser' {..} =
+    _salt `Prelude.hashWithSalt` appInstanceUserArn
+
+instance Prelude.NFData DescribeAppInstanceUser where
+  rnf DescribeAppInstanceUser' {..} =
+    Prelude.rnf appInstanceUserArn
+
+instance Data.ToHeaders DescribeAppInstanceUser where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DescribeAppInstanceUser where
+  toPath DescribeAppInstanceUser' {..} =
+    Prelude.mconcat
+      [ "/app-instance-users/",
+        Data.toBS appInstanceUserArn
+      ]
+
+instance Data.ToQuery DescribeAppInstanceUser where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeAppInstanceUserResponse' smart constructor.
+data DescribeAppInstanceUserResponse = DescribeAppInstanceUserResponse'
+  { -- | The name of the @AppInstanceUser@.
+    appInstanceUser :: Prelude.Maybe AppInstanceUser,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeAppInstanceUserResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceUser', 'describeAppInstanceUserResponse_appInstanceUser' - The name of the @AppInstanceUser@.
+--
+-- 'httpStatus', 'describeAppInstanceUserResponse_httpStatus' - The response's http status code.
+newDescribeAppInstanceUserResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeAppInstanceUserResponse
+newDescribeAppInstanceUserResponse pHttpStatus_ =
+  DescribeAppInstanceUserResponse'
+    { appInstanceUser =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The name of the @AppInstanceUser@.
+describeAppInstanceUserResponse_appInstanceUser :: Lens.Lens' DescribeAppInstanceUserResponse (Prelude.Maybe AppInstanceUser)
+describeAppInstanceUserResponse_appInstanceUser = Lens.lens (\DescribeAppInstanceUserResponse' {appInstanceUser} -> appInstanceUser) (\s@DescribeAppInstanceUserResponse' {} a -> s {appInstanceUser = a} :: DescribeAppInstanceUserResponse)
+
+-- | The response's http status code.
+describeAppInstanceUserResponse_httpStatus :: Lens.Lens' DescribeAppInstanceUserResponse Prelude.Int
+describeAppInstanceUserResponse_httpStatus = Lens.lens (\DescribeAppInstanceUserResponse' {httpStatus} -> httpStatus) (\s@DescribeAppInstanceUserResponse' {} a -> s {httpStatus = a} :: DescribeAppInstanceUserResponse)
+
+instance
+  Prelude.NFData
+    DescribeAppInstanceUserResponse
+  where
+  rnf DescribeAppInstanceUserResponse' {..} =
+    Prelude.rnf appInstanceUser
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/DescribeChannel.hs b/gen/Amazonka/Chime/DescribeChannel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DescribeChannel.hs
@@ -0,0 +1,172 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DescribeChannel
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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.
+module Amazonka.Chime.DescribeChannel
+  ( -- * Creating a Request
+    DescribeChannel (..),
+    newDescribeChannel,
+
+    -- * Request Lenses
+    describeChannel_chimeBearer,
+    describeChannel_channelArn,
+
+    -- * Destructuring the Response
+    DescribeChannelResponse (..),
+    newDescribeChannelResponse,
+
+    -- * Response Lenses
+    describeChannelResponse_channel,
+    describeChannelResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeChannel' smart constructor.
+data DescribeChannel = DescribeChannel'
+  { -- | The @AppInstanceUserArn@ of the user that makes the API call.
+    chimeBearer :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the channel.
+    channelArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeChannel' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chimeBearer', 'describeChannel_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
+--
+-- 'channelArn', 'describeChannel_channelArn' - The ARN of the channel.
+newDescribeChannel ::
+  -- | 'channelArn'
+  Prelude.Text ->
+  DescribeChannel
+newDescribeChannel pChannelArn_ =
+  DescribeChannel'
+    { chimeBearer = Prelude.Nothing,
+      channelArn = pChannelArn_
+    }
+
+-- | The @AppInstanceUserArn@ of the user that makes the API call.
+describeChannel_chimeBearer :: Lens.Lens' DescribeChannel (Prelude.Maybe Prelude.Text)
+describeChannel_chimeBearer = Lens.lens (\DescribeChannel' {chimeBearer} -> chimeBearer) (\s@DescribeChannel' {} a -> s {chimeBearer = a} :: DescribeChannel)
+
+-- | The ARN of the channel.
+describeChannel_channelArn :: Lens.Lens' DescribeChannel Prelude.Text
+describeChannel_channelArn = Lens.lens (\DescribeChannel' {channelArn} -> channelArn) (\s@DescribeChannel' {} a -> s {channelArn = a} :: DescribeChannel)
+
+instance Core.AWSRequest DescribeChannel where
+  type
+    AWSResponse DescribeChannel =
+      DescribeChannelResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeChannelResponse'
+            Prelude.<$> (x Data..?> "Channel")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeChannel where
+  hashWithSalt _salt DescribeChannel' {..} =
+    _salt
+      `Prelude.hashWithSalt` chimeBearer
+      `Prelude.hashWithSalt` channelArn
+
+instance Prelude.NFData DescribeChannel where
+  rnf DescribeChannel' {..} =
+    Prelude.rnf chimeBearer
+      `Prelude.seq` Prelude.rnf channelArn
+
+instance Data.ToHeaders DescribeChannel where
+  toHeaders DescribeChannel' {..} =
+    Prelude.mconcat
+      ["x-amz-chime-bearer" Data.=# chimeBearer]
+
+instance Data.ToPath DescribeChannel where
+  toPath DescribeChannel' {..} =
+    Prelude.mconcat
+      ["/channels/", Data.toBS channelArn]
+
+instance Data.ToQuery DescribeChannel where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeChannelResponse' smart constructor.
+data DescribeChannelResponse = DescribeChannelResponse'
+  { -- | The channel details.
+    channel :: Prelude.Maybe Channel,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeChannelResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channel', 'describeChannelResponse_channel' - The channel details.
+--
+-- 'httpStatus', 'describeChannelResponse_httpStatus' - The response's http status code.
+newDescribeChannelResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeChannelResponse
+newDescribeChannelResponse pHttpStatus_ =
+  DescribeChannelResponse'
+    { channel = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The channel details.
+describeChannelResponse_channel :: Lens.Lens' DescribeChannelResponse (Prelude.Maybe Channel)
+describeChannelResponse_channel = Lens.lens (\DescribeChannelResponse' {channel} -> channel) (\s@DescribeChannelResponse' {} a -> s {channel = a} :: DescribeChannelResponse)
+
+-- | The response's http status code.
+describeChannelResponse_httpStatus :: Lens.Lens' DescribeChannelResponse Prelude.Int
+describeChannelResponse_httpStatus = Lens.lens (\DescribeChannelResponse' {httpStatus} -> httpStatus) (\s@DescribeChannelResponse' {} a -> s {httpStatus = a} :: DescribeChannelResponse)
+
+instance Prelude.NFData DescribeChannelResponse where
+  rnf DescribeChannelResponse' {..} =
+    Prelude.rnf channel
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/DescribeChannelBan.hs b/gen/Amazonka/Chime/DescribeChannelBan.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DescribeChannelBan.hs
@@ -0,0 +1,191 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DescribeChannelBan
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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.
+module Amazonka.Chime.DescribeChannelBan
+  ( -- * Creating a Request
+    DescribeChannelBan (..),
+    newDescribeChannelBan,
+
+    -- * Request Lenses
+    describeChannelBan_chimeBearer,
+    describeChannelBan_channelArn,
+    describeChannelBan_memberArn,
+
+    -- * Destructuring the Response
+    DescribeChannelBanResponse (..),
+    newDescribeChannelBanResponse,
+
+    -- * Response Lenses
+    describeChannelBanResponse_channelBan,
+    describeChannelBanResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeChannelBan' smart constructor.
+data DescribeChannelBan = DescribeChannelBan'
+  { -- | The @AppInstanceUserArn@ of the user that makes the API call.
+    chimeBearer :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the channel from which the user is banned.
+    channelArn :: Prelude.Text,
+    -- | The ARN of the member being banned.
+    memberArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeChannelBan' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chimeBearer', 'describeChannelBan_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
+--
+-- 'channelArn', 'describeChannelBan_channelArn' - The ARN of the channel from which the user is banned.
+--
+-- 'memberArn', 'describeChannelBan_memberArn' - The ARN of the member being banned.
+newDescribeChannelBan ::
+  -- | 'channelArn'
+  Prelude.Text ->
+  -- | 'memberArn'
+  Prelude.Text ->
+  DescribeChannelBan
+newDescribeChannelBan pChannelArn_ pMemberArn_ =
+  DescribeChannelBan'
+    { chimeBearer = Prelude.Nothing,
+      channelArn = pChannelArn_,
+      memberArn = pMemberArn_
+    }
+
+-- | The @AppInstanceUserArn@ of the user that makes the API call.
+describeChannelBan_chimeBearer :: Lens.Lens' DescribeChannelBan (Prelude.Maybe Prelude.Text)
+describeChannelBan_chimeBearer = Lens.lens (\DescribeChannelBan' {chimeBearer} -> chimeBearer) (\s@DescribeChannelBan' {} a -> s {chimeBearer = a} :: DescribeChannelBan)
+
+-- | The ARN of the channel from which the user is banned.
+describeChannelBan_channelArn :: Lens.Lens' DescribeChannelBan Prelude.Text
+describeChannelBan_channelArn = Lens.lens (\DescribeChannelBan' {channelArn} -> channelArn) (\s@DescribeChannelBan' {} a -> s {channelArn = a} :: DescribeChannelBan)
+
+-- | The ARN of the member being banned.
+describeChannelBan_memberArn :: Lens.Lens' DescribeChannelBan Prelude.Text
+describeChannelBan_memberArn = Lens.lens (\DescribeChannelBan' {memberArn} -> memberArn) (\s@DescribeChannelBan' {} a -> s {memberArn = a} :: DescribeChannelBan)
+
+instance Core.AWSRequest DescribeChannelBan where
+  type
+    AWSResponse DescribeChannelBan =
+      DescribeChannelBanResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeChannelBanResponse'
+            Prelude.<$> (x Data..?> "ChannelBan")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeChannelBan where
+  hashWithSalt _salt DescribeChannelBan' {..} =
+    _salt
+      `Prelude.hashWithSalt` chimeBearer
+      `Prelude.hashWithSalt` channelArn
+      `Prelude.hashWithSalt` memberArn
+
+instance Prelude.NFData DescribeChannelBan where
+  rnf DescribeChannelBan' {..} =
+    Prelude.rnf chimeBearer
+      `Prelude.seq` Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf memberArn
+
+instance Data.ToHeaders DescribeChannelBan where
+  toHeaders DescribeChannelBan' {..} =
+    Prelude.mconcat
+      ["x-amz-chime-bearer" Data.=# chimeBearer]
+
+instance Data.ToPath DescribeChannelBan where
+  toPath DescribeChannelBan' {..} =
+    Prelude.mconcat
+      [ "/channels/",
+        Data.toBS channelArn,
+        "/bans/",
+        Data.toBS memberArn
+      ]
+
+instance Data.ToQuery DescribeChannelBan where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeChannelBanResponse' smart constructor.
+data DescribeChannelBanResponse = DescribeChannelBanResponse'
+  { -- | The details of the ban.
+    channelBan :: Prelude.Maybe ChannelBan,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeChannelBanResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channelBan', 'describeChannelBanResponse_channelBan' - The details of the ban.
+--
+-- 'httpStatus', 'describeChannelBanResponse_httpStatus' - The response's http status code.
+newDescribeChannelBanResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeChannelBanResponse
+newDescribeChannelBanResponse pHttpStatus_ =
+  DescribeChannelBanResponse'
+    { channelBan =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The details of the ban.
+describeChannelBanResponse_channelBan :: Lens.Lens' DescribeChannelBanResponse (Prelude.Maybe ChannelBan)
+describeChannelBanResponse_channelBan = Lens.lens (\DescribeChannelBanResponse' {channelBan} -> channelBan) (\s@DescribeChannelBanResponse' {} a -> s {channelBan = a} :: DescribeChannelBanResponse)
+
+-- | The response's http status code.
+describeChannelBanResponse_httpStatus :: Lens.Lens' DescribeChannelBanResponse Prelude.Int
+describeChannelBanResponse_httpStatus = Lens.lens (\DescribeChannelBanResponse' {httpStatus} -> httpStatus) (\s@DescribeChannelBanResponse' {} a -> s {httpStatus = a} :: DescribeChannelBanResponse)
+
+instance Prelude.NFData DescribeChannelBanResponse where
+  rnf DescribeChannelBanResponse' {..} =
+    Prelude.rnf channelBan
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/DescribeChannelMembership.hs b/gen/Amazonka/Chime/DescribeChannelMembership.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DescribeChannelMembership.hs
@@ -0,0 +1,195 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DescribeChannelMembership
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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.
+module Amazonka.Chime.DescribeChannelMembership
+  ( -- * Creating a Request
+    DescribeChannelMembership (..),
+    newDescribeChannelMembership,
+
+    -- * Request Lenses
+    describeChannelMembership_chimeBearer,
+    describeChannelMembership_channelArn,
+    describeChannelMembership_memberArn,
+
+    -- * Destructuring the Response
+    DescribeChannelMembershipResponse (..),
+    newDescribeChannelMembershipResponse,
+
+    -- * Response Lenses
+    describeChannelMembershipResponse_channelMembership,
+    describeChannelMembershipResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeChannelMembership' smart constructor.
+data DescribeChannelMembership = DescribeChannelMembership'
+  { -- | The @AppInstanceUserArn@ of the user that makes the API call.
+    chimeBearer :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the channel.
+    channelArn :: Prelude.Text,
+    -- | The ARN of the member.
+    memberArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeChannelMembership' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chimeBearer', 'describeChannelMembership_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
+--
+-- 'channelArn', 'describeChannelMembership_channelArn' - The ARN of the channel.
+--
+-- 'memberArn', 'describeChannelMembership_memberArn' - The ARN of the member.
+newDescribeChannelMembership ::
+  -- | 'channelArn'
+  Prelude.Text ->
+  -- | 'memberArn'
+  Prelude.Text ->
+  DescribeChannelMembership
+newDescribeChannelMembership pChannelArn_ pMemberArn_ =
+  DescribeChannelMembership'
+    { chimeBearer =
+        Prelude.Nothing,
+      channelArn = pChannelArn_,
+      memberArn = pMemberArn_
+    }
+
+-- | The @AppInstanceUserArn@ of the user that makes the API call.
+describeChannelMembership_chimeBearer :: Lens.Lens' DescribeChannelMembership (Prelude.Maybe Prelude.Text)
+describeChannelMembership_chimeBearer = Lens.lens (\DescribeChannelMembership' {chimeBearer} -> chimeBearer) (\s@DescribeChannelMembership' {} a -> s {chimeBearer = a} :: DescribeChannelMembership)
+
+-- | The ARN of the channel.
+describeChannelMembership_channelArn :: Lens.Lens' DescribeChannelMembership Prelude.Text
+describeChannelMembership_channelArn = Lens.lens (\DescribeChannelMembership' {channelArn} -> channelArn) (\s@DescribeChannelMembership' {} a -> s {channelArn = a} :: DescribeChannelMembership)
+
+-- | The ARN of the member.
+describeChannelMembership_memberArn :: Lens.Lens' DescribeChannelMembership Prelude.Text
+describeChannelMembership_memberArn = Lens.lens (\DescribeChannelMembership' {memberArn} -> memberArn) (\s@DescribeChannelMembership' {} a -> s {memberArn = a} :: DescribeChannelMembership)
+
+instance Core.AWSRequest DescribeChannelMembership where
+  type
+    AWSResponse DescribeChannelMembership =
+      DescribeChannelMembershipResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeChannelMembershipResponse'
+            Prelude.<$> (x Data..?> "ChannelMembership")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeChannelMembership where
+  hashWithSalt _salt DescribeChannelMembership' {..} =
+    _salt
+      `Prelude.hashWithSalt` chimeBearer
+      `Prelude.hashWithSalt` channelArn
+      `Prelude.hashWithSalt` memberArn
+
+instance Prelude.NFData DescribeChannelMembership where
+  rnf DescribeChannelMembership' {..} =
+    Prelude.rnf chimeBearer
+      `Prelude.seq` Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf memberArn
+
+instance Data.ToHeaders DescribeChannelMembership where
+  toHeaders DescribeChannelMembership' {..} =
+    Prelude.mconcat
+      ["x-amz-chime-bearer" Data.=# chimeBearer]
+
+instance Data.ToPath DescribeChannelMembership where
+  toPath DescribeChannelMembership' {..} =
+    Prelude.mconcat
+      [ "/channels/",
+        Data.toBS channelArn,
+        "/memberships/",
+        Data.toBS memberArn
+      ]
+
+instance Data.ToQuery DescribeChannelMembership where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeChannelMembershipResponse' smart constructor.
+data DescribeChannelMembershipResponse = DescribeChannelMembershipResponse'
+  { -- | The details of the membership.
+    channelMembership :: Prelude.Maybe ChannelMembership,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeChannelMembershipResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channelMembership', 'describeChannelMembershipResponse_channelMembership' - The details of the membership.
+--
+-- 'httpStatus', 'describeChannelMembershipResponse_httpStatus' - The response's http status code.
+newDescribeChannelMembershipResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeChannelMembershipResponse
+newDescribeChannelMembershipResponse pHttpStatus_ =
+  DescribeChannelMembershipResponse'
+    { channelMembership =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The details of the membership.
+describeChannelMembershipResponse_channelMembership :: Lens.Lens' DescribeChannelMembershipResponse (Prelude.Maybe ChannelMembership)
+describeChannelMembershipResponse_channelMembership = Lens.lens (\DescribeChannelMembershipResponse' {channelMembership} -> channelMembership) (\s@DescribeChannelMembershipResponse' {} a -> s {channelMembership = a} :: DescribeChannelMembershipResponse)
+
+-- | The response's http status code.
+describeChannelMembershipResponse_httpStatus :: Lens.Lens' DescribeChannelMembershipResponse Prelude.Int
+describeChannelMembershipResponse_httpStatus = Lens.lens (\DescribeChannelMembershipResponse' {httpStatus} -> httpStatus) (\s@DescribeChannelMembershipResponse' {} a -> s {httpStatus = a} :: DescribeChannelMembershipResponse)
+
+instance
+  Prelude.NFData
+    DescribeChannelMembershipResponse
+  where
+  rnf DescribeChannelMembershipResponse' {..} =
+    Prelude.rnf channelMembership
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/DescribeChannelMembershipForAppInstanceUser.hs b/gen/Amazonka/Chime/DescribeChannelMembershipForAppInstanceUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DescribeChannelMembershipForAppInstanceUser.hs
@@ -0,0 +1,226 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DescribeChannelMembershipForAppInstanceUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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.
+module Amazonka.Chime.DescribeChannelMembershipForAppInstanceUser
+  ( -- * Creating a Request
+    DescribeChannelMembershipForAppInstanceUser (..),
+    newDescribeChannelMembershipForAppInstanceUser,
+
+    -- * Request Lenses
+    describeChannelMembershipForAppInstanceUser_chimeBearer,
+    describeChannelMembershipForAppInstanceUser_channelArn,
+    describeChannelMembershipForAppInstanceUser_appInstanceUserArn,
+
+    -- * Destructuring the Response
+    DescribeChannelMembershipForAppInstanceUserResponse (..),
+    newDescribeChannelMembershipForAppInstanceUserResponse,
+
+    -- * Response Lenses
+    describeChannelMembershipForAppInstanceUserResponse_channelMembership,
+    describeChannelMembershipForAppInstanceUserResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeChannelMembershipForAppInstanceUser' smart constructor.
+data DescribeChannelMembershipForAppInstanceUser = DescribeChannelMembershipForAppInstanceUser'
+  { -- | The @AppInstanceUserArn@ of the user that makes the API call.
+    chimeBearer :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the channel to which the user belongs.
+    channelArn :: Prelude.Text,
+    -- | The ARN of the user in a channel.
+    appInstanceUserArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeChannelMembershipForAppInstanceUser' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chimeBearer', 'describeChannelMembershipForAppInstanceUser_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
+--
+-- 'channelArn', 'describeChannelMembershipForAppInstanceUser_channelArn' - The ARN of the channel to which the user belongs.
+--
+-- 'appInstanceUserArn', 'describeChannelMembershipForAppInstanceUser_appInstanceUserArn' - The ARN of the user in a channel.
+newDescribeChannelMembershipForAppInstanceUser ::
+  -- | 'channelArn'
+  Prelude.Text ->
+  -- | 'appInstanceUserArn'
+  Prelude.Text ->
+  DescribeChannelMembershipForAppInstanceUser
+newDescribeChannelMembershipForAppInstanceUser
+  pChannelArn_
+  pAppInstanceUserArn_ =
+    DescribeChannelMembershipForAppInstanceUser'
+      { chimeBearer =
+          Prelude.Nothing,
+        channelArn = pChannelArn_,
+        appInstanceUserArn =
+          pAppInstanceUserArn_
+      }
+
+-- | The @AppInstanceUserArn@ of the user that makes the API call.
+describeChannelMembershipForAppInstanceUser_chimeBearer :: Lens.Lens' DescribeChannelMembershipForAppInstanceUser (Prelude.Maybe Prelude.Text)
+describeChannelMembershipForAppInstanceUser_chimeBearer = Lens.lens (\DescribeChannelMembershipForAppInstanceUser' {chimeBearer} -> chimeBearer) (\s@DescribeChannelMembershipForAppInstanceUser' {} a -> s {chimeBearer = a} :: DescribeChannelMembershipForAppInstanceUser)
+
+-- | The ARN of the channel to which the user belongs.
+describeChannelMembershipForAppInstanceUser_channelArn :: Lens.Lens' DescribeChannelMembershipForAppInstanceUser Prelude.Text
+describeChannelMembershipForAppInstanceUser_channelArn = Lens.lens (\DescribeChannelMembershipForAppInstanceUser' {channelArn} -> channelArn) (\s@DescribeChannelMembershipForAppInstanceUser' {} a -> s {channelArn = a} :: DescribeChannelMembershipForAppInstanceUser)
+
+-- | The ARN of the user in a channel.
+describeChannelMembershipForAppInstanceUser_appInstanceUserArn :: Lens.Lens' DescribeChannelMembershipForAppInstanceUser Prelude.Text
+describeChannelMembershipForAppInstanceUser_appInstanceUserArn = Lens.lens (\DescribeChannelMembershipForAppInstanceUser' {appInstanceUserArn} -> appInstanceUserArn) (\s@DescribeChannelMembershipForAppInstanceUser' {} a -> s {appInstanceUserArn = a} :: DescribeChannelMembershipForAppInstanceUser)
+
+instance
+  Core.AWSRequest
+    DescribeChannelMembershipForAppInstanceUser
+  where
+  type
+    AWSResponse
+      DescribeChannelMembershipForAppInstanceUser =
+      DescribeChannelMembershipForAppInstanceUserResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeChannelMembershipForAppInstanceUserResponse'
+            Prelude.<$> (x Data..?> "ChannelMembership")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DescribeChannelMembershipForAppInstanceUser
+  where
+  hashWithSalt
+    _salt
+    DescribeChannelMembershipForAppInstanceUser' {..} =
+      _salt
+        `Prelude.hashWithSalt` chimeBearer
+        `Prelude.hashWithSalt` channelArn
+        `Prelude.hashWithSalt` appInstanceUserArn
+
+instance
+  Prelude.NFData
+    DescribeChannelMembershipForAppInstanceUser
+  where
+  rnf DescribeChannelMembershipForAppInstanceUser' {..} =
+    Prelude.rnf chimeBearer
+      `Prelude.seq` Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf appInstanceUserArn
+
+instance
+  Data.ToHeaders
+    DescribeChannelMembershipForAppInstanceUser
+  where
+  toHeaders
+    DescribeChannelMembershipForAppInstanceUser' {..} =
+      Prelude.mconcat
+        ["x-amz-chime-bearer" Data.=# chimeBearer]
+
+instance
+  Data.ToPath
+    DescribeChannelMembershipForAppInstanceUser
+  where
+  toPath
+    DescribeChannelMembershipForAppInstanceUser' {..} =
+      Prelude.mconcat
+        ["/channels/", Data.toBS channelArn]
+
+instance
+  Data.ToQuery
+    DescribeChannelMembershipForAppInstanceUser
+  where
+  toQuery
+    DescribeChannelMembershipForAppInstanceUser' {..} =
+      Prelude.mconcat
+        [ "app-instance-user-arn" Data.=: appInstanceUserArn,
+          "scope=app-instance-user-membership"
+        ]
+
+-- | /See:/ 'newDescribeChannelMembershipForAppInstanceUserResponse' smart constructor.
+data DescribeChannelMembershipForAppInstanceUserResponse = DescribeChannelMembershipForAppInstanceUserResponse'
+  { -- | The channel to which a user belongs.
+    channelMembership :: Prelude.Maybe ChannelMembershipForAppInstanceUserSummary,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeChannelMembershipForAppInstanceUserResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channelMembership', 'describeChannelMembershipForAppInstanceUserResponse_channelMembership' - The channel to which a user belongs.
+--
+-- 'httpStatus', 'describeChannelMembershipForAppInstanceUserResponse_httpStatus' - The response's http status code.
+newDescribeChannelMembershipForAppInstanceUserResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeChannelMembershipForAppInstanceUserResponse
+newDescribeChannelMembershipForAppInstanceUserResponse
+  pHttpStatus_ =
+    DescribeChannelMembershipForAppInstanceUserResponse'
+      { channelMembership =
+          Prelude.Nothing,
+        httpStatus =
+          pHttpStatus_
+      }
+
+-- | The channel to which a user belongs.
+describeChannelMembershipForAppInstanceUserResponse_channelMembership :: Lens.Lens' DescribeChannelMembershipForAppInstanceUserResponse (Prelude.Maybe ChannelMembershipForAppInstanceUserSummary)
+describeChannelMembershipForAppInstanceUserResponse_channelMembership = Lens.lens (\DescribeChannelMembershipForAppInstanceUserResponse' {channelMembership} -> channelMembership) (\s@DescribeChannelMembershipForAppInstanceUserResponse' {} a -> s {channelMembership = a} :: DescribeChannelMembershipForAppInstanceUserResponse)
+
+-- | The response's http status code.
+describeChannelMembershipForAppInstanceUserResponse_httpStatus :: Lens.Lens' DescribeChannelMembershipForAppInstanceUserResponse Prelude.Int
+describeChannelMembershipForAppInstanceUserResponse_httpStatus = Lens.lens (\DescribeChannelMembershipForAppInstanceUserResponse' {httpStatus} -> httpStatus) (\s@DescribeChannelMembershipForAppInstanceUserResponse' {} a -> s {httpStatus = a} :: DescribeChannelMembershipForAppInstanceUserResponse)
+
+instance
+  Prelude.NFData
+    DescribeChannelMembershipForAppInstanceUserResponse
+  where
+  rnf
+    DescribeChannelMembershipForAppInstanceUserResponse' {..} =
+      Prelude.rnf channelMembership
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/DescribeChannelModeratedByAppInstanceUser.hs b/gen/Amazonka/Chime/DescribeChannelModeratedByAppInstanceUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DescribeChannelModeratedByAppInstanceUser.hs
@@ -0,0 +1,225 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DescribeChannelModeratedByAppInstanceUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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.
+module Amazonka.Chime.DescribeChannelModeratedByAppInstanceUser
+  ( -- * Creating a Request
+    DescribeChannelModeratedByAppInstanceUser (..),
+    newDescribeChannelModeratedByAppInstanceUser,
+
+    -- * Request Lenses
+    describeChannelModeratedByAppInstanceUser_chimeBearer,
+    describeChannelModeratedByAppInstanceUser_channelArn,
+    describeChannelModeratedByAppInstanceUser_appInstanceUserArn,
+
+    -- * Destructuring the Response
+    DescribeChannelModeratedByAppInstanceUserResponse (..),
+    newDescribeChannelModeratedByAppInstanceUserResponse,
+
+    -- * Response Lenses
+    describeChannelModeratedByAppInstanceUserResponse_channel,
+    describeChannelModeratedByAppInstanceUserResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeChannelModeratedByAppInstanceUser' smart constructor.
+data DescribeChannelModeratedByAppInstanceUser = DescribeChannelModeratedByAppInstanceUser'
+  { -- | The @AppInstanceUserArn@ of the user that makes the API call.
+    chimeBearer :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the moderated channel.
+    channelArn :: Prelude.Text,
+    -- | The ARN of the @AppInstanceUser@ in the moderated channel.
+    appInstanceUserArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeChannelModeratedByAppInstanceUser' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chimeBearer', 'describeChannelModeratedByAppInstanceUser_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
+--
+-- 'channelArn', 'describeChannelModeratedByAppInstanceUser_channelArn' - The ARN of the moderated channel.
+--
+-- 'appInstanceUserArn', 'describeChannelModeratedByAppInstanceUser_appInstanceUserArn' - The ARN of the @AppInstanceUser@ in the moderated channel.
+newDescribeChannelModeratedByAppInstanceUser ::
+  -- | 'channelArn'
+  Prelude.Text ->
+  -- | 'appInstanceUserArn'
+  Prelude.Text ->
+  DescribeChannelModeratedByAppInstanceUser
+newDescribeChannelModeratedByAppInstanceUser
+  pChannelArn_
+  pAppInstanceUserArn_ =
+    DescribeChannelModeratedByAppInstanceUser'
+      { chimeBearer =
+          Prelude.Nothing,
+        channelArn = pChannelArn_,
+        appInstanceUserArn =
+          pAppInstanceUserArn_
+      }
+
+-- | The @AppInstanceUserArn@ of the user that makes the API call.
+describeChannelModeratedByAppInstanceUser_chimeBearer :: Lens.Lens' DescribeChannelModeratedByAppInstanceUser (Prelude.Maybe Prelude.Text)
+describeChannelModeratedByAppInstanceUser_chimeBearer = Lens.lens (\DescribeChannelModeratedByAppInstanceUser' {chimeBearer} -> chimeBearer) (\s@DescribeChannelModeratedByAppInstanceUser' {} a -> s {chimeBearer = a} :: DescribeChannelModeratedByAppInstanceUser)
+
+-- | The ARN of the moderated channel.
+describeChannelModeratedByAppInstanceUser_channelArn :: Lens.Lens' DescribeChannelModeratedByAppInstanceUser Prelude.Text
+describeChannelModeratedByAppInstanceUser_channelArn = Lens.lens (\DescribeChannelModeratedByAppInstanceUser' {channelArn} -> channelArn) (\s@DescribeChannelModeratedByAppInstanceUser' {} a -> s {channelArn = a} :: DescribeChannelModeratedByAppInstanceUser)
+
+-- | The ARN of the @AppInstanceUser@ in the moderated channel.
+describeChannelModeratedByAppInstanceUser_appInstanceUserArn :: Lens.Lens' DescribeChannelModeratedByAppInstanceUser Prelude.Text
+describeChannelModeratedByAppInstanceUser_appInstanceUserArn = Lens.lens (\DescribeChannelModeratedByAppInstanceUser' {appInstanceUserArn} -> appInstanceUserArn) (\s@DescribeChannelModeratedByAppInstanceUser' {} a -> s {appInstanceUserArn = a} :: DescribeChannelModeratedByAppInstanceUser)
+
+instance
+  Core.AWSRequest
+    DescribeChannelModeratedByAppInstanceUser
+  where
+  type
+    AWSResponse
+      DescribeChannelModeratedByAppInstanceUser =
+      DescribeChannelModeratedByAppInstanceUserResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeChannelModeratedByAppInstanceUserResponse'
+            Prelude.<$> (x Data..?> "Channel")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DescribeChannelModeratedByAppInstanceUser
+  where
+  hashWithSalt
+    _salt
+    DescribeChannelModeratedByAppInstanceUser' {..} =
+      _salt
+        `Prelude.hashWithSalt` chimeBearer
+        `Prelude.hashWithSalt` channelArn
+        `Prelude.hashWithSalt` appInstanceUserArn
+
+instance
+  Prelude.NFData
+    DescribeChannelModeratedByAppInstanceUser
+  where
+  rnf DescribeChannelModeratedByAppInstanceUser' {..} =
+    Prelude.rnf chimeBearer
+      `Prelude.seq` Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf appInstanceUserArn
+
+instance
+  Data.ToHeaders
+    DescribeChannelModeratedByAppInstanceUser
+  where
+  toHeaders
+    DescribeChannelModeratedByAppInstanceUser' {..} =
+      Prelude.mconcat
+        ["x-amz-chime-bearer" Data.=# chimeBearer]
+
+instance
+  Data.ToPath
+    DescribeChannelModeratedByAppInstanceUser
+  where
+  toPath DescribeChannelModeratedByAppInstanceUser' {..} =
+    Prelude.mconcat
+      ["/channels/", Data.toBS channelArn]
+
+instance
+  Data.ToQuery
+    DescribeChannelModeratedByAppInstanceUser
+  where
+  toQuery
+    DescribeChannelModeratedByAppInstanceUser' {..} =
+      Prelude.mconcat
+        [ "app-instance-user-arn" Data.=: appInstanceUserArn,
+          "scope=app-instance-user-moderated-channel"
+        ]
+
+-- | /See:/ 'newDescribeChannelModeratedByAppInstanceUserResponse' smart constructor.
+data DescribeChannelModeratedByAppInstanceUserResponse = DescribeChannelModeratedByAppInstanceUserResponse'
+  { -- | The moderated channel.
+    channel :: Prelude.Maybe ChannelModeratedByAppInstanceUserSummary,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeChannelModeratedByAppInstanceUserResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channel', 'describeChannelModeratedByAppInstanceUserResponse_channel' - The moderated channel.
+--
+-- 'httpStatus', 'describeChannelModeratedByAppInstanceUserResponse_httpStatus' - The response's http status code.
+newDescribeChannelModeratedByAppInstanceUserResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeChannelModeratedByAppInstanceUserResponse
+newDescribeChannelModeratedByAppInstanceUserResponse
+  pHttpStatus_ =
+    DescribeChannelModeratedByAppInstanceUserResponse'
+      { channel =
+          Prelude.Nothing,
+        httpStatus =
+          pHttpStatus_
+      }
+
+-- | The moderated channel.
+describeChannelModeratedByAppInstanceUserResponse_channel :: Lens.Lens' DescribeChannelModeratedByAppInstanceUserResponse (Prelude.Maybe ChannelModeratedByAppInstanceUserSummary)
+describeChannelModeratedByAppInstanceUserResponse_channel = Lens.lens (\DescribeChannelModeratedByAppInstanceUserResponse' {channel} -> channel) (\s@DescribeChannelModeratedByAppInstanceUserResponse' {} a -> s {channel = a} :: DescribeChannelModeratedByAppInstanceUserResponse)
+
+-- | The response's http status code.
+describeChannelModeratedByAppInstanceUserResponse_httpStatus :: Lens.Lens' DescribeChannelModeratedByAppInstanceUserResponse Prelude.Int
+describeChannelModeratedByAppInstanceUserResponse_httpStatus = Lens.lens (\DescribeChannelModeratedByAppInstanceUserResponse' {httpStatus} -> httpStatus) (\s@DescribeChannelModeratedByAppInstanceUserResponse' {} a -> s {httpStatus = a} :: DescribeChannelModeratedByAppInstanceUserResponse)
+
+instance
+  Prelude.NFData
+    DescribeChannelModeratedByAppInstanceUserResponse
+  where
+  rnf
+    DescribeChannelModeratedByAppInstanceUserResponse' {..} =
+      Prelude.rnf channel
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/DescribeChannelModerator.hs b/gen/Amazonka/Chime/DescribeChannelModerator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DescribeChannelModerator.hs
@@ -0,0 +1,197 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DescribeChannelModerator
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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.
+module Amazonka.Chime.DescribeChannelModerator
+  ( -- * Creating a Request
+    DescribeChannelModerator (..),
+    newDescribeChannelModerator,
+
+    -- * Request Lenses
+    describeChannelModerator_chimeBearer,
+    describeChannelModerator_channelArn,
+    describeChannelModerator_channelModeratorArn,
+
+    -- * Destructuring the Response
+    DescribeChannelModeratorResponse (..),
+    newDescribeChannelModeratorResponse,
+
+    -- * Response Lenses
+    describeChannelModeratorResponse_channelModerator,
+    describeChannelModeratorResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeChannelModerator' smart constructor.
+data DescribeChannelModerator = DescribeChannelModerator'
+  { -- | The @AppInstanceUserArn@ of the user that makes the API call.
+    chimeBearer :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the channel.
+    channelArn :: Prelude.Text,
+    -- | The ARN of the channel moderator.
+    channelModeratorArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeChannelModerator' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chimeBearer', 'describeChannelModerator_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
+--
+-- 'channelArn', 'describeChannelModerator_channelArn' - The ARN of the channel.
+--
+-- 'channelModeratorArn', 'describeChannelModerator_channelModeratorArn' - The ARN of the channel moderator.
+newDescribeChannelModerator ::
+  -- | 'channelArn'
+  Prelude.Text ->
+  -- | 'channelModeratorArn'
+  Prelude.Text ->
+  DescribeChannelModerator
+newDescribeChannelModerator
+  pChannelArn_
+  pChannelModeratorArn_ =
+    DescribeChannelModerator'
+      { chimeBearer =
+          Prelude.Nothing,
+        channelArn = pChannelArn_,
+        channelModeratorArn = pChannelModeratorArn_
+      }
+
+-- | The @AppInstanceUserArn@ of the user that makes the API call.
+describeChannelModerator_chimeBearer :: Lens.Lens' DescribeChannelModerator (Prelude.Maybe Prelude.Text)
+describeChannelModerator_chimeBearer = Lens.lens (\DescribeChannelModerator' {chimeBearer} -> chimeBearer) (\s@DescribeChannelModerator' {} a -> s {chimeBearer = a} :: DescribeChannelModerator)
+
+-- | The ARN of the channel.
+describeChannelModerator_channelArn :: Lens.Lens' DescribeChannelModerator Prelude.Text
+describeChannelModerator_channelArn = Lens.lens (\DescribeChannelModerator' {channelArn} -> channelArn) (\s@DescribeChannelModerator' {} a -> s {channelArn = a} :: DescribeChannelModerator)
+
+-- | The ARN of the channel moderator.
+describeChannelModerator_channelModeratorArn :: Lens.Lens' DescribeChannelModerator Prelude.Text
+describeChannelModerator_channelModeratorArn = Lens.lens (\DescribeChannelModerator' {channelModeratorArn} -> channelModeratorArn) (\s@DescribeChannelModerator' {} a -> s {channelModeratorArn = a} :: DescribeChannelModerator)
+
+instance Core.AWSRequest DescribeChannelModerator where
+  type
+    AWSResponse DescribeChannelModerator =
+      DescribeChannelModeratorResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeChannelModeratorResponse'
+            Prelude.<$> (x Data..?> "ChannelModerator")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeChannelModerator where
+  hashWithSalt _salt DescribeChannelModerator' {..} =
+    _salt
+      `Prelude.hashWithSalt` chimeBearer
+      `Prelude.hashWithSalt` channelArn
+      `Prelude.hashWithSalt` channelModeratorArn
+
+instance Prelude.NFData DescribeChannelModerator where
+  rnf DescribeChannelModerator' {..} =
+    Prelude.rnf chimeBearer
+      `Prelude.seq` Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf channelModeratorArn
+
+instance Data.ToHeaders DescribeChannelModerator where
+  toHeaders DescribeChannelModerator' {..} =
+    Prelude.mconcat
+      ["x-amz-chime-bearer" Data.=# chimeBearer]
+
+instance Data.ToPath DescribeChannelModerator where
+  toPath DescribeChannelModerator' {..} =
+    Prelude.mconcat
+      [ "/channels/",
+        Data.toBS channelArn,
+        "/moderators/",
+        Data.toBS channelModeratorArn
+      ]
+
+instance Data.ToQuery DescribeChannelModerator where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeChannelModeratorResponse' smart constructor.
+data DescribeChannelModeratorResponse = DescribeChannelModeratorResponse'
+  { -- | The details of the channel moderator.
+    channelModerator :: Prelude.Maybe ChannelModerator,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeChannelModeratorResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channelModerator', 'describeChannelModeratorResponse_channelModerator' - The details of the channel moderator.
+--
+-- 'httpStatus', 'describeChannelModeratorResponse_httpStatus' - The response's http status code.
+newDescribeChannelModeratorResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeChannelModeratorResponse
+newDescribeChannelModeratorResponse pHttpStatus_ =
+  DescribeChannelModeratorResponse'
+    { channelModerator =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The details of the channel moderator.
+describeChannelModeratorResponse_channelModerator :: Lens.Lens' DescribeChannelModeratorResponse (Prelude.Maybe ChannelModerator)
+describeChannelModeratorResponse_channelModerator = Lens.lens (\DescribeChannelModeratorResponse' {channelModerator} -> channelModerator) (\s@DescribeChannelModeratorResponse' {} a -> s {channelModerator = a} :: DescribeChannelModeratorResponse)
+
+-- | The response's http status code.
+describeChannelModeratorResponse_httpStatus :: Lens.Lens' DescribeChannelModeratorResponse Prelude.Int
+describeChannelModeratorResponse_httpStatus = Lens.lens (\DescribeChannelModeratorResponse' {httpStatus} -> httpStatus) (\s@DescribeChannelModeratorResponse' {} a -> s {httpStatus = a} :: DescribeChannelModeratorResponse)
+
+instance
+  Prelude.NFData
+    DescribeChannelModeratorResponse
+  where
+  rnf DescribeChannelModeratorResponse' {..} =
+    Prelude.rnf channelModerator
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/DisassociatePhoneNumberFromUser.hs b/gen/Amazonka/Chime/DisassociatePhoneNumberFromUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DisassociatePhoneNumberFromUser.hs
@@ -0,0 +1,190 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DisassociatePhoneNumberFromUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Disassociates the primary provisioned phone number from the specified
+-- Amazon Chime user.
+module Amazonka.Chime.DisassociatePhoneNumberFromUser
+  ( -- * Creating a Request
+    DisassociatePhoneNumberFromUser (..),
+    newDisassociatePhoneNumberFromUser,
+
+    -- * Request Lenses
+    disassociatePhoneNumberFromUser_accountId,
+    disassociatePhoneNumberFromUser_userId,
+
+    -- * Destructuring the Response
+    DisassociatePhoneNumberFromUserResponse (..),
+    newDisassociatePhoneNumberFromUserResponse,
+
+    -- * Response Lenses
+    disassociatePhoneNumberFromUserResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDisassociatePhoneNumberFromUser' smart constructor.
+data DisassociatePhoneNumberFromUser = DisassociatePhoneNumberFromUser'
+  { -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The user ID.
+    userId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociatePhoneNumberFromUser' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'disassociatePhoneNumberFromUser_accountId' - The Amazon Chime account ID.
+--
+-- 'userId', 'disassociatePhoneNumberFromUser_userId' - The user ID.
+newDisassociatePhoneNumberFromUser ::
+  -- | 'accountId'
+  Prelude.Text ->
+  -- | 'userId'
+  Prelude.Text ->
+  DisassociatePhoneNumberFromUser
+newDisassociatePhoneNumberFromUser
+  pAccountId_
+  pUserId_ =
+    DisassociatePhoneNumberFromUser'
+      { accountId =
+          pAccountId_,
+        userId = pUserId_
+      }
+
+-- | The Amazon Chime account ID.
+disassociatePhoneNumberFromUser_accountId :: Lens.Lens' DisassociatePhoneNumberFromUser Prelude.Text
+disassociatePhoneNumberFromUser_accountId = Lens.lens (\DisassociatePhoneNumberFromUser' {accountId} -> accountId) (\s@DisassociatePhoneNumberFromUser' {} a -> s {accountId = a} :: DisassociatePhoneNumberFromUser)
+
+-- | The user ID.
+disassociatePhoneNumberFromUser_userId :: Lens.Lens' DisassociatePhoneNumberFromUser Prelude.Text
+disassociatePhoneNumberFromUser_userId = Lens.lens (\DisassociatePhoneNumberFromUser' {userId} -> userId) (\s@DisassociatePhoneNumberFromUser' {} a -> s {userId = a} :: DisassociatePhoneNumberFromUser)
+
+instance
+  Core.AWSRequest
+    DisassociatePhoneNumberFromUser
+  where
+  type
+    AWSResponse DisassociatePhoneNumberFromUser =
+      DisassociatePhoneNumberFromUserResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DisassociatePhoneNumberFromUserResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DisassociatePhoneNumberFromUser
+  where
+  hashWithSalt
+    _salt
+    DisassociatePhoneNumberFromUser' {..} =
+      _salt
+        `Prelude.hashWithSalt` accountId
+        `Prelude.hashWithSalt` userId
+
+instance
+  Prelude.NFData
+    DisassociatePhoneNumberFromUser
+  where
+  rnf DisassociatePhoneNumberFromUser' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf userId
+
+instance
+  Data.ToHeaders
+    DisassociatePhoneNumberFromUser
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON DisassociatePhoneNumberFromUser where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath DisassociatePhoneNumberFromUser where
+  toPath DisassociatePhoneNumberFromUser' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS accountId,
+        "/users/",
+        Data.toBS userId
+      ]
+
+instance Data.ToQuery DisassociatePhoneNumberFromUser where
+  toQuery =
+    Prelude.const
+      ( Prelude.mconcat
+          ["operation=disassociate-phone-number"]
+      )
+
+-- | /See:/ 'newDisassociatePhoneNumberFromUserResponse' smart constructor.
+data DisassociatePhoneNumberFromUserResponse = DisassociatePhoneNumberFromUserResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociatePhoneNumberFromUserResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'disassociatePhoneNumberFromUserResponse_httpStatus' - The response's http status code.
+newDisassociatePhoneNumberFromUserResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DisassociatePhoneNumberFromUserResponse
+newDisassociatePhoneNumberFromUserResponse
+  pHttpStatus_ =
+    DisassociatePhoneNumberFromUserResponse'
+      { httpStatus =
+          pHttpStatus_
+      }
+
+-- | The response's http status code.
+disassociatePhoneNumberFromUserResponse_httpStatus :: Lens.Lens' DisassociatePhoneNumberFromUserResponse Prelude.Int
+disassociatePhoneNumberFromUserResponse_httpStatus = Lens.lens (\DisassociatePhoneNumberFromUserResponse' {httpStatus} -> httpStatus) (\s@DisassociatePhoneNumberFromUserResponse' {} a -> s {httpStatus = a} :: DisassociatePhoneNumberFromUserResponse)
+
+instance
+  Prelude.NFData
+    DisassociatePhoneNumberFromUserResponse
+  where
+  rnf DisassociatePhoneNumberFromUserResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/DisassociatePhoneNumbersFromVoiceConnector.hs b/gen/Amazonka/Chime/DisassociatePhoneNumbersFromVoiceConnector.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DisassociatePhoneNumbersFromVoiceConnector.hs
@@ -0,0 +1,225 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DisassociatePhoneNumbersFromVoiceConnector
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Disassociates the specified phone numbers from the specified Amazon
+-- Chime Voice Connector.
+module Amazonka.Chime.DisassociatePhoneNumbersFromVoiceConnector
+  ( -- * Creating a Request
+    DisassociatePhoneNumbersFromVoiceConnector (..),
+    newDisassociatePhoneNumbersFromVoiceConnector,
+
+    -- * Request Lenses
+    disassociatePhoneNumbersFromVoiceConnector_voiceConnectorId,
+    disassociatePhoneNumbersFromVoiceConnector_e164PhoneNumbers,
+
+    -- * Destructuring the Response
+    DisassociatePhoneNumbersFromVoiceConnectorResponse (..),
+    newDisassociatePhoneNumbersFromVoiceConnectorResponse,
+
+    -- * Response Lenses
+    disassociatePhoneNumbersFromVoiceConnectorResponse_phoneNumberErrors,
+    disassociatePhoneNumbersFromVoiceConnectorResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDisassociatePhoneNumbersFromVoiceConnector' smart constructor.
+data DisassociatePhoneNumbersFromVoiceConnector = DisassociatePhoneNumbersFromVoiceConnector'
+  { -- | The Amazon Chime Voice Connector ID.
+    voiceConnectorId :: Prelude.Text,
+    -- | List of phone numbers, in E.164 format.
+    e164PhoneNumbers :: [Data.Sensitive Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociatePhoneNumbersFromVoiceConnector' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorId', 'disassociatePhoneNumbersFromVoiceConnector_voiceConnectorId' - The Amazon Chime Voice Connector ID.
+--
+-- 'e164PhoneNumbers', 'disassociatePhoneNumbersFromVoiceConnector_e164PhoneNumbers' - List of phone numbers, in E.164 format.
+newDisassociatePhoneNumbersFromVoiceConnector ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  DisassociatePhoneNumbersFromVoiceConnector
+newDisassociatePhoneNumbersFromVoiceConnector
+  pVoiceConnectorId_ =
+    DisassociatePhoneNumbersFromVoiceConnector'
+      { voiceConnectorId =
+          pVoiceConnectorId_,
+        e164PhoneNumbers =
+          Prelude.mempty
+      }
+
+-- | The Amazon Chime Voice Connector ID.
+disassociatePhoneNumbersFromVoiceConnector_voiceConnectorId :: Lens.Lens' DisassociatePhoneNumbersFromVoiceConnector Prelude.Text
+disassociatePhoneNumbersFromVoiceConnector_voiceConnectorId = Lens.lens (\DisassociatePhoneNumbersFromVoiceConnector' {voiceConnectorId} -> voiceConnectorId) (\s@DisassociatePhoneNumbersFromVoiceConnector' {} a -> s {voiceConnectorId = a} :: DisassociatePhoneNumbersFromVoiceConnector)
+
+-- | List of phone numbers, in E.164 format.
+disassociatePhoneNumbersFromVoiceConnector_e164PhoneNumbers :: Lens.Lens' DisassociatePhoneNumbersFromVoiceConnector [Prelude.Text]
+disassociatePhoneNumbersFromVoiceConnector_e164PhoneNumbers = Lens.lens (\DisassociatePhoneNumbersFromVoiceConnector' {e164PhoneNumbers} -> e164PhoneNumbers) (\s@DisassociatePhoneNumbersFromVoiceConnector' {} a -> s {e164PhoneNumbers = a} :: DisassociatePhoneNumbersFromVoiceConnector) Prelude.. Lens.coerced
+
+instance
+  Core.AWSRequest
+    DisassociatePhoneNumbersFromVoiceConnector
+  where
+  type
+    AWSResponse
+      DisassociatePhoneNumbersFromVoiceConnector =
+      DisassociatePhoneNumbersFromVoiceConnectorResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DisassociatePhoneNumbersFromVoiceConnectorResponse'
+            Prelude.<$> ( x
+                            Data..?> "PhoneNumberErrors"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DisassociatePhoneNumbersFromVoiceConnector
+  where
+  hashWithSalt
+    _salt
+    DisassociatePhoneNumbersFromVoiceConnector' {..} =
+      _salt
+        `Prelude.hashWithSalt` voiceConnectorId
+        `Prelude.hashWithSalt` e164PhoneNumbers
+
+instance
+  Prelude.NFData
+    DisassociatePhoneNumbersFromVoiceConnector
+  where
+  rnf DisassociatePhoneNumbersFromVoiceConnector' {..} =
+    Prelude.rnf voiceConnectorId
+      `Prelude.seq` Prelude.rnf e164PhoneNumbers
+
+instance
+  Data.ToHeaders
+    DisassociatePhoneNumbersFromVoiceConnector
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToJSON
+    DisassociatePhoneNumbersFromVoiceConnector
+  where
+  toJSON
+    DisassociatePhoneNumbersFromVoiceConnector' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ Prelude.Just
+                ("E164PhoneNumbers" Data..= e164PhoneNumbers)
+            ]
+        )
+
+instance
+  Data.ToPath
+    DisassociatePhoneNumbersFromVoiceConnector
+  where
+  toPath
+    DisassociatePhoneNumbersFromVoiceConnector' {..} =
+      Prelude.mconcat
+        ["/voice-connectors/", Data.toBS voiceConnectorId]
+
+instance
+  Data.ToQuery
+    DisassociatePhoneNumbersFromVoiceConnector
+  where
+  toQuery =
+    Prelude.const
+      ( Prelude.mconcat
+          ["operation=disassociate-phone-numbers"]
+      )
+
+-- | /See:/ 'newDisassociatePhoneNumbersFromVoiceConnectorResponse' smart constructor.
+data DisassociatePhoneNumbersFromVoiceConnectorResponse = DisassociatePhoneNumbersFromVoiceConnectorResponse'
+  { -- | If the action fails for one or more of the phone numbers in the request,
+    -- a list of the phone numbers is returned, along with error codes and
+    -- error messages.
+    phoneNumberErrors :: Prelude.Maybe [PhoneNumberError],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociatePhoneNumbersFromVoiceConnectorResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'phoneNumberErrors', 'disassociatePhoneNumbersFromVoiceConnectorResponse_phoneNumberErrors' - If the action fails for one or more of the phone numbers in the request,
+-- a list of the phone numbers is returned, along with error codes and
+-- error messages.
+--
+-- 'httpStatus', 'disassociatePhoneNumbersFromVoiceConnectorResponse_httpStatus' - The response's http status code.
+newDisassociatePhoneNumbersFromVoiceConnectorResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DisassociatePhoneNumbersFromVoiceConnectorResponse
+newDisassociatePhoneNumbersFromVoiceConnectorResponse
+  pHttpStatus_ =
+    DisassociatePhoneNumbersFromVoiceConnectorResponse'
+      { phoneNumberErrors =
+          Prelude.Nothing,
+        httpStatus =
+          pHttpStatus_
+      }
+
+-- | If the action fails for one or more of the phone numbers in the request,
+-- a list of the phone numbers is returned, along with error codes and
+-- error messages.
+disassociatePhoneNumbersFromVoiceConnectorResponse_phoneNumberErrors :: Lens.Lens' DisassociatePhoneNumbersFromVoiceConnectorResponse (Prelude.Maybe [PhoneNumberError])
+disassociatePhoneNumbersFromVoiceConnectorResponse_phoneNumberErrors = Lens.lens (\DisassociatePhoneNumbersFromVoiceConnectorResponse' {phoneNumberErrors} -> phoneNumberErrors) (\s@DisassociatePhoneNumbersFromVoiceConnectorResponse' {} a -> s {phoneNumberErrors = a} :: DisassociatePhoneNumbersFromVoiceConnectorResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+disassociatePhoneNumbersFromVoiceConnectorResponse_httpStatus :: Lens.Lens' DisassociatePhoneNumbersFromVoiceConnectorResponse Prelude.Int
+disassociatePhoneNumbersFromVoiceConnectorResponse_httpStatus = Lens.lens (\DisassociatePhoneNumbersFromVoiceConnectorResponse' {httpStatus} -> httpStatus) (\s@DisassociatePhoneNumbersFromVoiceConnectorResponse' {} a -> s {httpStatus = a} :: DisassociatePhoneNumbersFromVoiceConnectorResponse)
+
+instance
+  Prelude.NFData
+    DisassociatePhoneNumbersFromVoiceConnectorResponse
+  where
+  rnf
+    DisassociatePhoneNumbersFromVoiceConnectorResponse' {..} =
+      Prelude.rnf phoneNumberErrors
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/DisassociatePhoneNumbersFromVoiceConnectorGroup.hs b/gen/Amazonka/Chime/DisassociatePhoneNumbersFromVoiceConnectorGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DisassociatePhoneNumbersFromVoiceConnectorGroup.hs
@@ -0,0 +1,228 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DisassociatePhoneNumbersFromVoiceConnectorGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Disassociates the specified phone numbers from the specified Amazon
+-- Chime Voice Connector group.
+module Amazonka.Chime.DisassociatePhoneNumbersFromVoiceConnectorGroup
+  ( -- * Creating a Request
+    DisassociatePhoneNumbersFromVoiceConnectorGroup (..),
+    newDisassociatePhoneNumbersFromVoiceConnectorGroup,
+
+    -- * Request Lenses
+    disassociatePhoneNumbersFromVoiceConnectorGroup_voiceConnectorGroupId,
+    disassociatePhoneNumbersFromVoiceConnectorGroup_e164PhoneNumbers,
+
+    -- * Destructuring the Response
+    DisassociatePhoneNumbersFromVoiceConnectorGroupResponse (..),
+    newDisassociatePhoneNumbersFromVoiceConnectorGroupResponse,
+
+    -- * Response Lenses
+    disassociatePhoneNumbersFromVoiceConnectorGroupResponse_phoneNumberErrors,
+    disassociatePhoneNumbersFromVoiceConnectorGroupResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDisassociatePhoneNumbersFromVoiceConnectorGroup' smart constructor.
+data DisassociatePhoneNumbersFromVoiceConnectorGroup = DisassociatePhoneNumbersFromVoiceConnectorGroup'
+  { -- | The Amazon Chime Voice Connector group ID.
+    voiceConnectorGroupId :: Prelude.Text,
+    -- | List of phone numbers, in E.164 format.
+    e164PhoneNumbers :: [Data.Sensitive Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociatePhoneNumbersFromVoiceConnectorGroup' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorGroupId', 'disassociatePhoneNumbersFromVoiceConnectorGroup_voiceConnectorGroupId' - The Amazon Chime Voice Connector group ID.
+--
+-- 'e164PhoneNumbers', 'disassociatePhoneNumbersFromVoiceConnectorGroup_e164PhoneNumbers' - List of phone numbers, in E.164 format.
+newDisassociatePhoneNumbersFromVoiceConnectorGroup ::
+  -- | 'voiceConnectorGroupId'
+  Prelude.Text ->
+  DisassociatePhoneNumbersFromVoiceConnectorGroup
+newDisassociatePhoneNumbersFromVoiceConnectorGroup
+  pVoiceConnectorGroupId_ =
+    DisassociatePhoneNumbersFromVoiceConnectorGroup'
+      { voiceConnectorGroupId =
+          pVoiceConnectorGroupId_,
+        e164PhoneNumbers =
+          Prelude.mempty
+      }
+
+-- | The Amazon Chime Voice Connector group ID.
+disassociatePhoneNumbersFromVoiceConnectorGroup_voiceConnectorGroupId :: Lens.Lens' DisassociatePhoneNumbersFromVoiceConnectorGroup Prelude.Text
+disassociatePhoneNumbersFromVoiceConnectorGroup_voiceConnectorGroupId = Lens.lens (\DisassociatePhoneNumbersFromVoiceConnectorGroup' {voiceConnectorGroupId} -> voiceConnectorGroupId) (\s@DisassociatePhoneNumbersFromVoiceConnectorGroup' {} a -> s {voiceConnectorGroupId = a} :: DisassociatePhoneNumbersFromVoiceConnectorGroup)
+
+-- | List of phone numbers, in E.164 format.
+disassociatePhoneNumbersFromVoiceConnectorGroup_e164PhoneNumbers :: Lens.Lens' DisassociatePhoneNumbersFromVoiceConnectorGroup [Prelude.Text]
+disassociatePhoneNumbersFromVoiceConnectorGroup_e164PhoneNumbers = Lens.lens (\DisassociatePhoneNumbersFromVoiceConnectorGroup' {e164PhoneNumbers} -> e164PhoneNumbers) (\s@DisassociatePhoneNumbersFromVoiceConnectorGroup' {} a -> s {e164PhoneNumbers = a} :: DisassociatePhoneNumbersFromVoiceConnectorGroup) Prelude.. Lens.coerced
+
+instance
+  Core.AWSRequest
+    DisassociatePhoneNumbersFromVoiceConnectorGroup
+  where
+  type
+    AWSResponse
+      DisassociatePhoneNumbersFromVoiceConnectorGroup =
+      DisassociatePhoneNumbersFromVoiceConnectorGroupResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DisassociatePhoneNumbersFromVoiceConnectorGroupResponse'
+            Prelude.<$> ( x
+                            Data..?> "PhoneNumberErrors"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DisassociatePhoneNumbersFromVoiceConnectorGroup
+  where
+  hashWithSalt
+    _salt
+    DisassociatePhoneNumbersFromVoiceConnectorGroup' {..} =
+      _salt
+        `Prelude.hashWithSalt` voiceConnectorGroupId
+        `Prelude.hashWithSalt` e164PhoneNumbers
+
+instance
+  Prelude.NFData
+    DisassociatePhoneNumbersFromVoiceConnectorGroup
+  where
+  rnf
+    DisassociatePhoneNumbersFromVoiceConnectorGroup' {..} =
+      Prelude.rnf voiceConnectorGroupId
+        `Prelude.seq` Prelude.rnf e164PhoneNumbers
+
+instance
+  Data.ToHeaders
+    DisassociatePhoneNumbersFromVoiceConnectorGroup
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToJSON
+    DisassociatePhoneNumbersFromVoiceConnectorGroup
+  where
+  toJSON
+    DisassociatePhoneNumbersFromVoiceConnectorGroup' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ Prelude.Just
+                ("E164PhoneNumbers" Data..= e164PhoneNumbers)
+            ]
+        )
+
+instance
+  Data.ToPath
+    DisassociatePhoneNumbersFromVoiceConnectorGroup
+  where
+  toPath
+    DisassociatePhoneNumbersFromVoiceConnectorGroup' {..} =
+      Prelude.mconcat
+        [ "/voice-connector-groups/",
+          Data.toBS voiceConnectorGroupId
+        ]
+
+instance
+  Data.ToQuery
+    DisassociatePhoneNumbersFromVoiceConnectorGroup
+  where
+  toQuery =
+    Prelude.const
+      ( Prelude.mconcat
+          ["operation=disassociate-phone-numbers"]
+      )
+
+-- | /See:/ 'newDisassociatePhoneNumbersFromVoiceConnectorGroupResponse' smart constructor.
+data DisassociatePhoneNumbersFromVoiceConnectorGroupResponse = DisassociatePhoneNumbersFromVoiceConnectorGroupResponse'
+  { -- | If the action fails for one or more of the phone numbers in the request,
+    -- a list of the phone numbers is returned, along with error codes and
+    -- error messages.
+    phoneNumberErrors :: Prelude.Maybe [PhoneNumberError],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociatePhoneNumbersFromVoiceConnectorGroupResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'phoneNumberErrors', 'disassociatePhoneNumbersFromVoiceConnectorGroupResponse_phoneNumberErrors' - If the action fails for one or more of the phone numbers in the request,
+-- a list of the phone numbers is returned, along with error codes and
+-- error messages.
+--
+-- 'httpStatus', 'disassociatePhoneNumbersFromVoiceConnectorGroupResponse_httpStatus' - The response's http status code.
+newDisassociatePhoneNumbersFromVoiceConnectorGroupResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DisassociatePhoneNumbersFromVoiceConnectorGroupResponse
+newDisassociatePhoneNumbersFromVoiceConnectorGroupResponse
+  pHttpStatus_ =
+    DisassociatePhoneNumbersFromVoiceConnectorGroupResponse'
+      { phoneNumberErrors =
+          Prelude.Nothing,
+        httpStatus =
+          pHttpStatus_
+      }
+
+-- | If the action fails for one or more of the phone numbers in the request,
+-- a list of the phone numbers is returned, along with error codes and
+-- error messages.
+disassociatePhoneNumbersFromVoiceConnectorGroupResponse_phoneNumberErrors :: Lens.Lens' DisassociatePhoneNumbersFromVoiceConnectorGroupResponse (Prelude.Maybe [PhoneNumberError])
+disassociatePhoneNumbersFromVoiceConnectorGroupResponse_phoneNumberErrors = Lens.lens (\DisassociatePhoneNumbersFromVoiceConnectorGroupResponse' {phoneNumberErrors} -> phoneNumberErrors) (\s@DisassociatePhoneNumbersFromVoiceConnectorGroupResponse' {} a -> s {phoneNumberErrors = a} :: DisassociatePhoneNumbersFromVoiceConnectorGroupResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+disassociatePhoneNumbersFromVoiceConnectorGroupResponse_httpStatus :: Lens.Lens' DisassociatePhoneNumbersFromVoiceConnectorGroupResponse Prelude.Int
+disassociatePhoneNumbersFromVoiceConnectorGroupResponse_httpStatus = Lens.lens (\DisassociatePhoneNumbersFromVoiceConnectorGroupResponse' {httpStatus} -> httpStatus) (\s@DisassociatePhoneNumbersFromVoiceConnectorGroupResponse' {} a -> s {httpStatus = a} :: DisassociatePhoneNumbersFromVoiceConnectorGroupResponse)
+
+instance
+  Prelude.NFData
+    DisassociatePhoneNumbersFromVoiceConnectorGroupResponse
+  where
+  rnf
+    DisassociatePhoneNumbersFromVoiceConnectorGroupResponse' {..} =
+      Prelude.rnf phoneNumberErrors
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/DisassociateSigninDelegateGroupsFromAccount.hs b/gen/Amazonka/Chime/DisassociateSigninDelegateGroupsFromAccount.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/DisassociateSigninDelegateGroupsFromAccount.hs
@@ -0,0 +1,204 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.DisassociateSigninDelegateGroupsFromAccount
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Disassociates the specified sign-in delegate groups from the specified
+-- Amazon Chime account.
+module Amazonka.Chime.DisassociateSigninDelegateGroupsFromAccount
+  ( -- * Creating a Request
+    DisassociateSigninDelegateGroupsFromAccount (..),
+    newDisassociateSigninDelegateGroupsFromAccount,
+
+    -- * Request Lenses
+    disassociateSigninDelegateGroupsFromAccount_accountId,
+    disassociateSigninDelegateGroupsFromAccount_groupNames,
+
+    -- * Destructuring the Response
+    DisassociateSigninDelegateGroupsFromAccountResponse (..),
+    newDisassociateSigninDelegateGroupsFromAccountResponse,
+
+    -- * Response Lenses
+    disassociateSigninDelegateGroupsFromAccountResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDisassociateSigninDelegateGroupsFromAccount' smart constructor.
+data DisassociateSigninDelegateGroupsFromAccount = DisassociateSigninDelegateGroupsFromAccount'
+  { -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The sign-in delegate group names.
+    groupNames :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateSigninDelegateGroupsFromAccount' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'disassociateSigninDelegateGroupsFromAccount_accountId' - The Amazon Chime account ID.
+--
+-- 'groupNames', 'disassociateSigninDelegateGroupsFromAccount_groupNames' - The sign-in delegate group names.
+newDisassociateSigninDelegateGroupsFromAccount ::
+  -- | 'accountId'
+  Prelude.Text ->
+  -- | 'groupNames'
+  Prelude.NonEmpty Prelude.Text ->
+  DisassociateSigninDelegateGroupsFromAccount
+newDisassociateSigninDelegateGroupsFromAccount
+  pAccountId_
+  pGroupNames_ =
+    DisassociateSigninDelegateGroupsFromAccount'
+      { accountId =
+          pAccountId_,
+        groupNames =
+          Lens.coerced
+            Lens.# pGroupNames_
+      }
+
+-- | The Amazon Chime account ID.
+disassociateSigninDelegateGroupsFromAccount_accountId :: Lens.Lens' DisassociateSigninDelegateGroupsFromAccount Prelude.Text
+disassociateSigninDelegateGroupsFromAccount_accountId = Lens.lens (\DisassociateSigninDelegateGroupsFromAccount' {accountId} -> accountId) (\s@DisassociateSigninDelegateGroupsFromAccount' {} a -> s {accountId = a} :: DisassociateSigninDelegateGroupsFromAccount)
+
+-- | The sign-in delegate group names.
+disassociateSigninDelegateGroupsFromAccount_groupNames :: Lens.Lens' DisassociateSigninDelegateGroupsFromAccount (Prelude.NonEmpty Prelude.Text)
+disassociateSigninDelegateGroupsFromAccount_groupNames = Lens.lens (\DisassociateSigninDelegateGroupsFromAccount' {groupNames} -> groupNames) (\s@DisassociateSigninDelegateGroupsFromAccount' {} a -> s {groupNames = a} :: DisassociateSigninDelegateGroupsFromAccount) Prelude.. Lens.coerced
+
+instance
+  Core.AWSRequest
+    DisassociateSigninDelegateGroupsFromAccount
+  where
+  type
+    AWSResponse
+      DisassociateSigninDelegateGroupsFromAccount =
+      DisassociateSigninDelegateGroupsFromAccountResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DisassociateSigninDelegateGroupsFromAccountResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DisassociateSigninDelegateGroupsFromAccount
+  where
+  hashWithSalt
+    _salt
+    DisassociateSigninDelegateGroupsFromAccount' {..} =
+      _salt
+        `Prelude.hashWithSalt` accountId
+        `Prelude.hashWithSalt` groupNames
+
+instance
+  Prelude.NFData
+    DisassociateSigninDelegateGroupsFromAccount
+  where
+  rnf DisassociateSigninDelegateGroupsFromAccount' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf groupNames
+
+instance
+  Data.ToHeaders
+    DisassociateSigninDelegateGroupsFromAccount
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToJSON
+    DisassociateSigninDelegateGroupsFromAccount
+  where
+  toJSON
+    DisassociateSigninDelegateGroupsFromAccount' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [Prelude.Just ("GroupNames" Data..= groupNames)]
+        )
+
+instance
+  Data.ToPath
+    DisassociateSigninDelegateGroupsFromAccount
+  where
+  toPath
+    DisassociateSigninDelegateGroupsFromAccount' {..} =
+      Prelude.mconcat ["/accounts/", Data.toBS accountId]
+
+instance
+  Data.ToQuery
+    DisassociateSigninDelegateGroupsFromAccount
+  where
+  toQuery =
+    Prelude.const
+      ( Prelude.mconcat
+          ["operation=disassociate-signin-delegate-groups"]
+      )
+
+-- | /See:/ 'newDisassociateSigninDelegateGroupsFromAccountResponse' smart constructor.
+data DisassociateSigninDelegateGroupsFromAccountResponse = DisassociateSigninDelegateGroupsFromAccountResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateSigninDelegateGroupsFromAccountResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'disassociateSigninDelegateGroupsFromAccountResponse_httpStatus' - The response's http status code.
+newDisassociateSigninDelegateGroupsFromAccountResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DisassociateSigninDelegateGroupsFromAccountResponse
+newDisassociateSigninDelegateGroupsFromAccountResponse
+  pHttpStatus_ =
+    DisassociateSigninDelegateGroupsFromAccountResponse'
+      { httpStatus =
+          pHttpStatus_
+      }
+
+-- | The response's http status code.
+disassociateSigninDelegateGroupsFromAccountResponse_httpStatus :: Lens.Lens' DisassociateSigninDelegateGroupsFromAccountResponse Prelude.Int
+disassociateSigninDelegateGroupsFromAccountResponse_httpStatus = Lens.lens (\DisassociateSigninDelegateGroupsFromAccountResponse' {httpStatus} -> httpStatus) (\s@DisassociateSigninDelegateGroupsFromAccountResponse' {} a -> s {httpStatus = a} :: DisassociateSigninDelegateGroupsFromAccountResponse)
+
+instance
+  Prelude.NFData
+    DisassociateSigninDelegateGroupsFromAccountResponse
+  where
+  rnf
+    DisassociateSigninDelegateGroupsFromAccountResponse' {..} =
+      Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetAccount.hs b/gen/Amazonka/Chime/GetAccount.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetAccount.hs
@@ -0,0 +1,148 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetAccount
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves details for the specified Amazon Chime account, such as
+-- account type and supported licenses.
+module Amazonka.Chime.GetAccount
+  ( -- * Creating a Request
+    GetAccount (..),
+    newGetAccount,
+
+    -- * Request Lenses
+    getAccount_accountId,
+
+    -- * Destructuring the Response
+    GetAccountResponse (..),
+    newGetAccountResponse,
+
+    -- * Response Lenses
+    getAccountResponse_account,
+    getAccountResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetAccount' smart constructor.
+data GetAccount = GetAccount'
+  { -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetAccount' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'getAccount_accountId' - The Amazon Chime account ID.
+newGetAccount ::
+  -- | 'accountId'
+  Prelude.Text ->
+  GetAccount
+newGetAccount pAccountId_ =
+  GetAccount' {accountId = pAccountId_}
+
+-- | The Amazon Chime account ID.
+getAccount_accountId :: Lens.Lens' GetAccount Prelude.Text
+getAccount_accountId = Lens.lens (\GetAccount' {accountId} -> accountId) (\s@GetAccount' {} a -> s {accountId = a} :: GetAccount)
+
+instance Core.AWSRequest GetAccount where
+  type AWSResponse GetAccount = GetAccountResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetAccountResponse'
+            Prelude.<$> (x Data..?> "Account")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetAccount where
+  hashWithSalt _salt GetAccount' {..} =
+    _salt `Prelude.hashWithSalt` accountId
+
+instance Prelude.NFData GetAccount where
+  rnf GetAccount' {..} = Prelude.rnf accountId
+
+instance Data.ToHeaders GetAccount where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetAccount where
+  toPath GetAccount' {..} =
+    Prelude.mconcat ["/accounts/", Data.toBS accountId]
+
+instance Data.ToQuery GetAccount where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetAccountResponse' smart constructor.
+data GetAccountResponse = GetAccountResponse'
+  { -- | The Amazon Chime account details.
+    account :: Prelude.Maybe Account,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetAccountResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'account', 'getAccountResponse_account' - The Amazon Chime account details.
+--
+-- 'httpStatus', 'getAccountResponse_httpStatus' - The response's http status code.
+newGetAccountResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetAccountResponse
+newGetAccountResponse pHttpStatus_ =
+  GetAccountResponse'
+    { account = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Chime account details.
+getAccountResponse_account :: Lens.Lens' GetAccountResponse (Prelude.Maybe Account)
+getAccountResponse_account = Lens.lens (\GetAccountResponse' {account} -> account) (\s@GetAccountResponse' {} a -> s {account = a} :: GetAccountResponse)
+
+-- | The response's http status code.
+getAccountResponse_httpStatus :: Lens.Lens' GetAccountResponse Prelude.Int
+getAccountResponse_httpStatus = Lens.lens (\GetAccountResponse' {httpStatus} -> httpStatus) (\s@GetAccountResponse' {} a -> s {httpStatus = a} :: GetAccountResponse)
+
+instance Prelude.NFData GetAccountResponse where
+  rnf GetAccountResponse' {..} =
+    Prelude.rnf account
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetAccountSettings.hs b/gen/Amazonka/Chime/GetAccountSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetAccountSettings.hs
@@ -0,0 +1,155 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetAccountSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves account settings for the specified Amazon Chime account ID,
+-- such as remote control and dialout settings. For more information about
+-- these settings, see
+-- <https://docs.aws.amazon.com/chime/latest/ag/policies.html Use the Policies Page>
+-- in the /Amazon Chime Administration Guide/.
+module Amazonka.Chime.GetAccountSettings
+  ( -- * Creating a Request
+    GetAccountSettings (..),
+    newGetAccountSettings,
+
+    -- * Request Lenses
+    getAccountSettings_accountId,
+
+    -- * Destructuring the Response
+    GetAccountSettingsResponse (..),
+    newGetAccountSettingsResponse,
+
+    -- * Response Lenses
+    getAccountSettingsResponse_accountSettings,
+    getAccountSettingsResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetAccountSettings' smart constructor.
+data GetAccountSettings = GetAccountSettings'
+  { -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetAccountSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'getAccountSettings_accountId' - The Amazon Chime account ID.
+newGetAccountSettings ::
+  -- | 'accountId'
+  Prelude.Text ->
+  GetAccountSettings
+newGetAccountSettings pAccountId_ =
+  GetAccountSettings' {accountId = pAccountId_}
+
+-- | The Amazon Chime account ID.
+getAccountSettings_accountId :: Lens.Lens' GetAccountSettings Prelude.Text
+getAccountSettings_accountId = Lens.lens (\GetAccountSettings' {accountId} -> accountId) (\s@GetAccountSettings' {} a -> s {accountId = a} :: GetAccountSettings)
+
+instance Core.AWSRequest GetAccountSettings where
+  type
+    AWSResponse GetAccountSettings =
+      GetAccountSettingsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetAccountSettingsResponse'
+            Prelude.<$> (x Data..?> "AccountSettings")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetAccountSettings where
+  hashWithSalt _salt GetAccountSettings' {..} =
+    _salt `Prelude.hashWithSalt` accountId
+
+instance Prelude.NFData GetAccountSettings where
+  rnf GetAccountSettings' {..} = Prelude.rnf accountId
+
+instance Data.ToHeaders GetAccountSettings where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetAccountSettings where
+  toPath GetAccountSettings' {..} =
+    Prelude.mconcat
+      ["/accounts/", Data.toBS accountId, "/settings"]
+
+instance Data.ToQuery GetAccountSettings where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetAccountSettingsResponse' smart constructor.
+data GetAccountSettingsResponse = GetAccountSettingsResponse'
+  { -- | The Amazon Chime account settings.
+    accountSettings :: Prelude.Maybe AccountSettings,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetAccountSettingsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountSettings', 'getAccountSettingsResponse_accountSettings' - The Amazon Chime account settings.
+--
+-- 'httpStatus', 'getAccountSettingsResponse_httpStatus' - The response's http status code.
+newGetAccountSettingsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetAccountSettingsResponse
+newGetAccountSettingsResponse pHttpStatus_ =
+  GetAccountSettingsResponse'
+    { accountSettings =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Chime account settings.
+getAccountSettingsResponse_accountSettings :: Lens.Lens' GetAccountSettingsResponse (Prelude.Maybe AccountSettings)
+getAccountSettingsResponse_accountSettings = Lens.lens (\GetAccountSettingsResponse' {accountSettings} -> accountSettings) (\s@GetAccountSettingsResponse' {} a -> s {accountSettings = a} :: GetAccountSettingsResponse)
+
+-- | The response's http status code.
+getAccountSettingsResponse_httpStatus :: Lens.Lens' GetAccountSettingsResponse Prelude.Int
+getAccountSettingsResponse_httpStatus = Lens.lens (\GetAccountSettingsResponse' {httpStatus} -> httpStatus) (\s@GetAccountSettingsResponse' {} a -> s {httpStatus = a} :: GetAccountSettingsResponse)
+
+instance Prelude.NFData GetAccountSettingsResponse where
+  rnf GetAccountSettingsResponse' {..} =
+    Prelude.rnf accountSettings
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetAppInstanceRetentionSettings.hs b/gen/Amazonka/Chime/GetAppInstanceRetentionSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetAppInstanceRetentionSettings.hs
@@ -0,0 +1,192 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetAppInstanceRetentionSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the retention settings for an @AppInstance@.
+module Amazonka.Chime.GetAppInstanceRetentionSettings
+  ( -- * Creating a Request
+    GetAppInstanceRetentionSettings (..),
+    newGetAppInstanceRetentionSettings,
+
+    -- * Request Lenses
+    getAppInstanceRetentionSettings_appInstanceArn,
+
+    -- * Destructuring the Response
+    GetAppInstanceRetentionSettingsResponse (..),
+    newGetAppInstanceRetentionSettingsResponse,
+
+    -- * Response Lenses
+    getAppInstanceRetentionSettingsResponse_appInstanceRetentionSettings,
+    getAppInstanceRetentionSettingsResponse_initiateDeletionTimestamp,
+    getAppInstanceRetentionSettingsResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetAppInstanceRetentionSettings' smart constructor.
+data GetAppInstanceRetentionSettings = GetAppInstanceRetentionSettings'
+  { -- | The ARN of the @AppInstance@.
+    appInstanceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetAppInstanceRetentionSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceArn', 'getAppInstanceRetentionSettings_appInstanceArn' - The ARN of the @AppInstance@.
+newGetAppInstanceRetentionSettings ::
+  -- | 'appInstanceArn'
+  Prelude.Text ->
+  GetAppInstanceRetentionSettings
+newGetAppInstanceRetentionSettings pAppInstanceArn_ =
+  GetAppInstanceRetentionSettings'
+    { appInstanceArn =
+        pAppInstanceArn_
+    }
+
+-- | The ARN of the @AppInstance@.
+getAppInstanceRetentionSettings_appInstanceArn :: Lens.Lens' GetAppInstanceRetentionSettings Prelude.Text
+getAppInstanceRetentionSettings_appInstanceArn = Lens.lens (\GetAppInstanceRetentionSettings' {appInstanceArn} -> appInstanceArn) (\s@GetAppInstanceRetentionSettings' {} a -> s {appInstanceArn = a} :: GetAppInstanceRetentionSettings)
+
+instance
+  Core.AWSRequest
+    GetAppInstanceRetentionSettings
+  where
+  type
+    AWSResponse GetAppInstanceRetentionSettings =
+      GetAppInstanceRetentionSettingsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetAppInstanceRetentionSettingsResponse'
+            Prelude.<$> (x Data..?> "AppInstanceRetentionSettings")
+            Prelude.<*> (x Data..?> "InitiateDeletionTimestamp")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    GetAppInstanceRetentionSettings
+  where
+  hashWithSalt
+    _salt
+    GetAppInstanceRetentionSettings' {..} =
+      _salt `Prelude.hashWithSalt` appInstanceArn
+
+instance
+  Prelude.NFData
+    GetAppInstanceRetentionSettings
+  where
+  rnf GetAppInstanceRetentionSettings' {..} =
+    Prelude.rnf appInstanceArn
+
+instance
+  Data.ToHeaders
+    GetAppInstanceRetentionSettings
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetAppInstanceRetentionSettings where
+  toPath GetAppInstanceRetentionSettings' {..} =
+    Prelude.mconcat
+      [ "/app-instances/",
+        Data.toBS appInstanceArn,
+        "/retention-settings"
+      ]
+
+instance Data.ToQuery GetAppInstanceRetentionSettings where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetAppInstanceRetentionSettingsResponse' smart constructor.
+data GetAppInstanceRetentionSettingsResponse = GetAppInstanceRetentionSettingsResponse'
+  { -- | The retention settings for the @AppInstance@.
+    appInstanceRetentionSettings :: Prelude.Maybe AppInstanceRetentionSettings,
+    -- | The timestamp representing the time at which the specified items are
+    -- retained, in Epoch Seconds.
+    initiateDeletionTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetAppInstanceRetentionSettingsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceRetentionSettings', 'getAppInstanceRetentionSettingsResponse_appInstanceRetentionSettings' - The retention settings for the @AppInstance@.
+--
+-- 'initiateDeletionTimestamp', 'getAppInstanceRetentionSettingsResponse_initiateDeletionTimestamp' - The timestamp representing the time at which the specified items are
+-- retained, in Epoch Seconds.
+--
+-- 'httpStatus', 'getAppInstanceRetentionSettingsResponse_httpStatus' - The response's http status code.
+newGetAppInstanceRetentionSettingsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetAppInstanceRetentionSettingsResponse
+newGetAppInstanceRetentionSettingsResponse
+  pHttpStatus_ =
+    GetAppInstanceRetentionSettingsResponse'
+      { appInstanceRetentionSettings =
+          Prelude.Nothing,
+        initiateDeletionTimestamp =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The retention settings for the @AppInstance@.
+getAppInstanceRetentionSettingsResponse_appInstanceRetentionSettings :: Lens.Lens' GetAppInstanceRetentionSettingsResponse (Prelude.Maybe AppInstanceRetentionSettings)
+getAppInstanceRetentionSettingsResponse_appInstanceRetentionSettings = Lens.lens (\GetAppInstanceRetentionSettingsResponse' {appInstanceRetentionSettings} -> appInstanceRetentionSettings) (\s@GetAppInstanceRetentionSettingsResponse' {} a -> s {appInstanceRetentionSettings = a} :: GetAppInstanceRetentionSettingsResponse)
+
+-- | The timestamp representing the time at which the specified items are
+-- retained, in Epoch Seconds.
+getAppInstanceRetentionSettingsResponse_initiateDeletionTimestamp :: Lens.Lens' GetAppInstanceRetentionSettingsResponse (Prelude.Maybe Prelude.UTCTime)
+getAppInstanceRetentionSettingsResponse_initiateDeletionTimestamp = Lens.lens (\GetAppInstanceRetentionSettingsResponse' {initiateDeletionTimestamp} -> initiateDeletionTimestamp) (\s@GetAppInstanceRetentionSettingsResponse' {} a -> s {initiateDeletionTimestamp = a} :: GetAppInstanceRetentionSettingsResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The response's http status code.
+getAppInstanceRetentionSettingsResponse_httpStatus :: Lens.Lens' GetAppInstanceRetentionSettingsResponse Prelude.Int
+getAppInstanceRetentionSettingsResponse_httpStatus = Lens.lens (\GetAppInstanceRetentionSettingsResponse' {httpStatus} -> httpStatus) (\s@GetAppInstanceRetentionSettingsResponse' {} a -> s {httpStatus = a} :: GetAppInstanceRetentionSettingsResponse)
+
+instance
+  Prelude.NFData
+    GetAppInstanceRetentionSettingsResponse
+  where
+  rnf GetAppInstanceRetentionSettingsResponse' {..} =
+    Prelude.rnf appInstanceRetentionSettings
+      `Prelude.seq` Prelude.rnf initiateDeletionTimestamp
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetAppInstanceStreamingConfigurations.hs b/gen/Amazonka/Chime/GetAppInstanceStreamingConfigurations.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetAppInstanceStreamingConfigurations.hs
@@ -0,0 +1,185 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetAppInstanceStreamingConfigurations
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the streaming settings for an @AppInstance@.
+module Amazonka.Chime.GetAppInstanceStreamingConfigurations
+  ( -- * Creating a Request
+    GetAppInstanceStreamingConfigurations (..),
+    newGetAppInstanceStreamingConfigurations,
+
+    -- * Request Lenses
+    getAppInstanceStreamingConfigurations_appInstanceArn,
+
+    -- * Destructuring the Response
+    GetAppInstanceStreamingConfigurationsResponse (..),
+    newGetAppInstanceStreamingConfigurationsResponse,
+
+    -- * Response Lenses
+    getAppInstanceStreamingConfigurationsResponse_appInstanceStreamingConfigurations,
+    getAppInstanceStreamingConfigurationsResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetAppInstanceStreamingConfigurations' smart constructor.
+data GetAppInstanceStreamingConfigurations = GetAppInstanceStreamingConfigurations'
+  { -- | The ARN of the @AppInstance@.
+    appInstanceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetAppInstanceStreamingConfigurations' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceArn', 'getAppInstanceStreamingConfigurations_appInstanceArn' - The ARN of the @AppInstance@.
+newGetAppInstanceStreamingConfigurations ::
+  -- | 'appInstanceArn'
+  Prelude.Text ->
+  GetAppInstanceStreamingConfigurations
+newGetAppInstanceStreamingConfigurations
+  pAppInstanceArn_ =
+    GetAppInstanceStreamingConfigurations'
+      { appInstanceArn =
+          pAppInstanceArn_
+      }
+
+-- | The ARN of the @AppInstance@.
+getAppInstanceStreamingConfigurations_appInstanceArn :: Lens.Lens' GetAppInstanceStreamingConfigurations Prelude.Text
+getAppInstanceStreamingConfigurations_appInstanceArn = Lens.lens (\GetAppInstanceStreamingConfigurations' {appInstanceArn} -> appInstanceArn) (\s@GetAppInstanceStreamingConfigurations' {} a -> s {appInstanceArn = a} :: GetAppInstanceStreamingConfigurations)
+
+instance
+  Core.AWSRequest
+    GetAppInstanceStreamingConfigurations
+  where
+  type
+    AWSResponse
+      GetAppInstanceStreamingConfigurations =
+      GetAppInstanceStreamingConfigurationsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetAppInstanceStreamingConfigurationsResponse'
+            Prelude.<$> (x Data..?> "AppInstanceStreamingConfigurations")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    GetAppInstanceStreamingConfigurations
+  where
+  hashWithSalt
+    _salt
+    GetAppInstanceStreamingConfigurations' {..} =
+      _salt `Prelude.hashWithSalt` appInstanceArn
+
+instance
+  Prelude.NFData
+    GetAppInstanceStreamingConfigurations
+  where
+  rnf GetAppInstanceStreamingConfigurations' {..} =
+    Prelude.rnf appInstanceArn
+
+instance
+  Data.ToHeaders
+    GetAppInstanceStreamingConfigurations
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    GetAppInstanceStreamingConfigurations
+  where
+  toPath GetAppInstanceStreamingConfigurations' {..} =
+    Prelude.mconcat
+      [ "/app-instances/",
+        Data.toBS appInstanceArn,
+        "/streaming-configurations"
+      ]
+
+instance
+  Data.ToQuery
+    GetAppInstanceStreamingConfigurations
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetAppInstanceStreamingConfigurationsResponse' smart constructor.
+data GetAppInstanceStreamingConfigurationsResponse = GetAppInstanceStreamingConfigurationsResponse'
+  { -- | The streaming settings.
+    appInstanceStreamingConfigurations :: Prelude.Maybe (Prelude.NonEmpty AppInstanceStreamingConfiguration),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetAppInstanceStreamingConfigurationsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceStreamingConfigurations', 'getAppInstanceStreamingConfigurationsResponse_appInstanceStreamingConfigurations' - The streaming settings.
+--
+-- 'httpStatus', 'getAppInstanceStreamingConfigurationsResponse_httpStatus' - The response's http status code.
+newGetAppInstanceStreamingConfigurationsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetAppInstanceStreamingConfigurationsResponse
+newGetAppInstanceStreamingConfigurationsResponse
+  pHttpStatus_ =
+    GetAppInstanceStreamingConfigurationsResponse'
+      { appInstanceStreamingConfigurations =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The streaming settings.
+getAppInstanceStreamingConfigurationsResponse_appInstanceStreamingConfigurations :: Lens.Lens' GetAppInstanceStreamingConfigurationsResponse (Prelude.Maybe (Prelude.NonEmpty AppInstanceStreamingConfiguration))
+getAppInstanceStreamingConfigurationsResponse_appInstanceStreamingConfigurations = Lens.lens (\GetAppInstanceStreamingConfigurationsResponse' {appInstanceStreamingConfigurations} -> appInstanceStreamingConfigurations) (\s@GetAppInstanceStreamingConfigurationsResponse' {} a -> s {appInstanceStreamingConfigurations = a} :: GetAppInstanceStreamingConfigurationsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+getAppInstanceStreamingConfigurationsResponse_httpStatus :: Lens.Lens' GetAppInstanceStreamingConfigurationsResponse Prelude.Int
+getAppInstanceStreamingConfigurationsResponse_httpStatus = Lens.lens (\GetAppInstanceStreamingConfigurationsResponse' {httpStatus} -> httpStatus) (\s@GetAppInstanceStreamingConfigurationsResponse' {} a -> s {httpStatus = a} :: GetAppInstanceStreamingConfigurationsResponse)
+
+instance
+  Prelude.NFData
+    GetAppInstanceStreamingConfigurationsResponse
+  where
+  rnf
+    GetAppInstanceStreamingConfigurationsResponse' {..} =
+      Prelude.rnf appInstanceStreamingConfigurations
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetAttendee.hs b/gen/Amazonka/Chime/GetAttendee.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetAttendee.hs
@@ -0,0 +1,173 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetAttendee
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the Amazon Chime SDK attendee details for a specified meeting ID
+-- and attendee ID. For more information about the Amazon Chime SDK, see
+-- <https://docs.aws.amazon.com/chime/latest/dg/meetings-sdk.html Using the Amazon Chime SDK>
+-- in the /Amazon Chime Developer Guide/ .
+module Amazonka.Chime.GetAttendee
+  ( -- * Creating a Request
+    GetAttendee (..),
+    newGetAttendee,
+
+    -- * Request Lenses
+    getAttendee_meetingId,
+    getAttendee_attendeeId,
+
+    -- * Destructuring the Response
+    GetAttendeeResponse (..),
+    newGetAttendeeResponse,
+
+    -- * Response Lenses
+    getAttendeeResponse_attendee,
+    getAttendeeResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetAttendee' smart constructor.
+data GetAttendee = GetAttendee'
+  { -- | The Amazon Chime SDK meeting ID.
+    meetingId :: Prelude.Text,
+    -- | The Amazon Chime SDK attendee ID.
+    attendeeId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetAttendee' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'meetingId', 'getAttendee_meetingId' - The Amazon Chime SDK meeting ID.
+--
+-- 'attendeeId', 'getAttendee_attendeeId' - The Amazon Chime SDK attendee ID.
+newGetAttendee ::
+  -- | 'meetingId'
+  Prelude.Text ->
+  -- | 'attendeeId'
+  Prelude.Text ->
+  GetAttendee
+newGetAttendee pMeetingId_ pAttendeeId_ =
+  GetAttendee'
+    { meetingId = pMeetingId_,
+      attendeeId = pAttendeeId_
+    }
+
+-- | The Amazon Chime SDK meeting ID.
+getAttendee_meetingId :: Lens.Lens' GetAttendee Prelude.Text
+getAttendee_meetingId = Lens.lens (\GetAttendee' {meetingId} -> meetingId) (\s@GetAttendee' {} a -> s {meetingId = a} :: GetAttendee)
+
+-- | The Amazon Chime SDK attendee ID.
+getAttendee_attendeeId :: Lens.Lens' GetAttendee Prelude.Text
+getAttendee_attendeeId = Lens.lens (\GetAttendee' {attendeeId} -> attendeeId) (\s@GetAttendee' {} a -> s {attendeeId = a} :: GetAttendee)
+
+instance Core.AWSRequest GetAttendee where
+  type AWSResponse GetAttendee = GetAttendeeResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetAttendeeResponse'
+            Prelude.<$> (x Data..?> "Attendee")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetAttendee where
+  hashWithSalt _salt GetAttendee' {..} =
+    _salt
+      `Prelude.hashWithSalt` meetingId
+      `Prelude.hashWithSalt` attendeeId
+
+instance Prelude.NFData GetAttendee where
+  rnf GetAttendee' {..} =
+    Prelude.rnf meetingId
+      `Prelude.seq` Prelude.rnf attendeeId
+
+instance Data.ToHeaders GetAttendee where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetAttendee where
+  toPath GetAttendee' {..} =
+    Prelude.mconcat
+      [ "/meetings/",
+        Data.toBS meetingId,
+        "/attendees/",
+        Data.toBS attendeeId
+      ]
+
+instance Data.ToQuery GetAttendee where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetAttendeeResponse' smart constructor.
+data GetAttendeeResponse = GetAttendeeResponse'
+  { -- | The Amazon Chime SDK attendee information.
+    attendee :: Prelude.Maybe Attendee,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetAttendeeResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'attendee', 'getAttendeeResponse_attendee' - The Amazon Chime SDK attendee information.
+--
+-- 'httpStatus', 'getAttendeeResponse_httpStatus' - The response's http status code.
+newGetAttendeeResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetAttendeeResponse
+newGetAttendeeResponse pHttpStatus_ =
+  GetAttendeeResponse'
+    { attendee = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Chime SDK attendee information.
+getAttendeeResponse_attendee :: Lens.Lens' GetAttendeeResponse (Prelude.Maybe Attendee)
+getAttendeeResponse_attendee = Lens.lens (\GetAttendeeResponse' {attendee} -> attendee) (\s@GetAttendeeResponse' {} a -> s {attendee = a} :: GetAttendeeResponse)
+
+-- | The response's http status code.
+getAttendeeResponse_httpStatus :: Lens.Lens' GetAttendeeResponse Prelude.Int
+getAttendeeResponse_httpStatus = Lens.lens (\GetAttendeeResponse' {httpStatus} -> httpStatus) (\s@GetAttendeeResponse' {} a -> s {httpStatus = a} :: GetAttendeeResponse)
+
+instance Prelude.NFData GetAttendeeResponse where
+  rnf GetAttendeeResponse' {..} =
+    Prelude.rnf attendee
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetBot.hs b/gen/Amazonka/Chime/GetBot.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetBot.hs
@@ -0,0 +1,168 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetBot
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves details for the specified bot, such as bot email address, bot
+-- type, status, and display name.
+module Amazonka.Chime.GetBot
+  ( -- * Creating a Request
+    GetBot (..),
+    newGetBot,
+
+    -- * Request Lenses
+    getBot_accountId,
+    getBot_botId,
+
+    -- * Destructuring the Response
+    GetBotResponse (..),
+    newGetBotResponse,
+
+    -- * Response Lenses
+    getBotResponse_bot,
+    getBotResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetBot' smart constructor.
+data GetBot = GetBot'
+  { -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The bot ID.
+    botId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetBot' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'getBot_accountId' - The Amazon Chime account ID.
+--
+-- 'botId', 'getBot_botId' - The bot ID.
+newGetBot ::
+  -- | 'accountId'
+  Prelude.Text ->
+  -- | 'botId'
+  Prelude.Text ->
+  GetBot
+newGetBot pAccountId_ pBotId_ =
+  GetBot' {accountId = pAccountId_, botId = pBotId_}
+
+-- | The Amazon Chime account ID.
+getBot_accountId :: Lens.Lens' GetBot Prelude.Text
+getBot_accountId = Lens.lens (\GetBot' {accountId} -> accountId) (\s@GetBot' {} a -> s {accountId = a} :: GetBot)
+
+-- | The bot ID.
+getBot_botId :: Lens.Lens' GetBot Prelude.Text
+getBot_botId = Lens.lens (\GetBot' {botId} -> botId) (\s@GetBot' {} a -> s {botId = a} :: GetBot)
+
+instance Core.AWSRequest GetBot where
+  type AWSResponse GetBot = GetBotResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetBotResponse'
+            Prelude.<$> (x Data..?> "Bot")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetBot where
+  hashWithSalt _salt GetBot' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` botId
+
+instance Prelude.NFData GetBot where
+  rnf GetBot' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf botId
+
+instance Data.ToHeaders GetBot where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetBot where
+  toPath GetBot' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS accountId,
+        "/bots/",
+        Data.toBS botId
+      ]
+
+instance Data.ToQuery GetBot where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetBotResponse' smart constructor.
+data GetBotResponse = GetBotResponse'
+  { -- | The chat bot details.
+    bot :: Prelude.Maybe Bot,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetBotResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bot', 'getBotResponse_bot' - The chat bot details.
+--
+-- 'httpStatus', 'getBotResponse_httpStatus' - The response's http status code.
+newGetBotResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetBotResponse
+newGetBotResponse pHttpStatus_ =
+  GetBotResponse'
+    { bot = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The chat bot details.
+getBotResponse_bot :: Lens.Lens' GetBotResponse (Prelude.Maybe Bot)
+getBotResponse_bot = Lens.lens (\GetBotResponse' {bot} -> bot) (\s@GetBotResponse' {} a -> s {bot = a} :: GetBotResponse)
+
+-- | The response's http status code.
+getBotResponse_httpStatus :: Lens.Lens' GetBotResponse Prelude.Int
+getBotResponse_httpStatus = Lens.lens (\GetBotResponse' {httpStatus} -> httpStatus) (\s@GetBotResponse' {} a -> s {httpStatus = a} :: GetBotResponse)
+
+instance Prelude.NFData GetBotResponse where
+  rnf GetBotResponse' {..} =
+    Prelude.rnf bot
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetChannelMessage.hs b/gen/Amazonka/Chime/GetChannelMessage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetChannelMessage.hs
@@ -0,0 +1,191 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetChannelMessage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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.
+module Amazonka.Chime.GetChannelMessage
+  ( -- * Creating a Request
+    GetChannelMessage (..),
+    newGetChannelMessage,
+
+    -- * Request Lenses
+    getChannelMessage_chimeBearer,
+    getChannelMessage_channelArn,
+    getChannelMessage_messageId,
+
+    -- * Destructuring the Response
+    GetChannelMessageResponse (..),
+    newGetChannelMessageResponse,
+
+    -- * Response Lenses
+    getChannelMessageResponse_channelMessage,
+    getChannelMessageResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetChannelMessage' smart constructor.
+data GetChannelMessage = GetChannelMessage'
+  { -- | The @AppInstanceUserArn@ of the user that makes the API call.
+    chimeBearer :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the channel.
+    channelArn :: Prelude.Text,
+    -- | The ID of the message.
+    messageId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetChannelMessage' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chimeBearer', 'getChannelMessage_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
+--
+-- 'channelArn', 'getChannelMessage_channelArn' - The ARN of the channel.
+--
+-- 'messageId', 'getChannelMessage_messageId' - The ID of the message.
+newGetChannelMessage ::
+  -- | 'channelArn'
+  Prelude.Text ->
+  -- | 'messageId'
+  Prelude.Text ->
+  GetChannelMessage
+newGetChannelMessage pChannelArn_ pMessageId_ =
+  GetChannelMessage'
+    { chimeBearer = Prelude.Nothing,
+      channelArn = pChannelArn_,
+      messageId = pMessageId_
+    }
+
+-- | The @AppInstanceUserArn@ of the user that makes the API call.
+getChannelMessage_chimeBearer :: Lens.Lens' GetChannelMessage (Prelude.Maybe Prelude.Text)
+getChannelMessage_chimeBearer = Lens.lens (\GetChannelMessage' {chimeBearer} -> chimeBearer) (\s@GetChannelMessage' {} a -> s {chimeBearer = a} :: GetChannelMessage)
+
+-- | The ARN of the channel.
+getChannelMessage_channelArn :: Lens.Lens' GetChannelMessage Prelude.Text
+getChannelMessage_channelArn = Lens.lens (\GetChannelMessage' {channelArn} -> channelArn) (\s@GetChannelMessage' {} a -> s {channelArn = a} :: GetChannelMessage)
+
+-- | The ID of the message.
+getChannelMessage_messageId :: Lens.Lens' GetChannelMessage Prelude.Text
+getChannelMessage_messageId = Lens.lens (\GetChannelMessage' {messageId} -> messageId) (\s@GetChannelMessage' {} a -> s {messageId = a} :: GetChannelMessage)
+
+instance Core.AWSRequest GetChannelMessage where
+  type
+    AWSResponse GetChannelMessage =
+      GetChannelMessageResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetChannelMessageResponse'
+            Prelude.<$> (x Data..?> "ChannelMessage")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetChannelMessage where
+  hashWithSalt _salt GetChannelMessage' {..} =
+    _salt
+      `Prelude.hashWithSalt` chimeBearer
+      `Prelude.hashWithSalt` channelArn
+      `Prelude.hashWithSalt` messageId
+
+instance Prelude.NFData GetChannelMessage where
+  rnf GetChannelMessage' {..} =
+    Prelude.rnf chimeBearer
+      `Prelude.seq` Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf messageId
+
+instance Data.ToHeaders GetChannelMessage where
+  toHeaders GetChannelMessage' {..} =
+    Prelude.mconcat
+      ["x-amz-chime-bearer" Data.=# chimeBearer]
+
+instance Data.ToPath GetChannelMessage where
+  toPath GetChannelMessage' {..} =
+    Prelude.mconcat
+      [ "/channels/",
+        Data.toBS channelArn,
+        "/messages/",
+        Data.toBS messageId
+      ]
+
+instance Data.ToQuery GetChannelMessage where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetChannelMessageResponse' smart constructor.
+data GetChannelMessageResponse = GetChannelMessageResponse'
+  { -- | The details of and content in the message.
+    channelMessage :: Prelude.Maybe ChannelMessage,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetChannelMessageResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channelMessage', 'getChannelMessageResponse_channelMessage' - The details of and content in the message.
+--
+-- 'httpStatus', 'getChannelMessageResponse_httpStatus' - The response's http status code.
+newGetChannelMessageResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetChannelMessageResponse
+newGetChannelMessageResponse pHttpStatus_ =
+  GetChannelMessageResponse'
+    { channelMessage =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The details of and content in the message.
+getChannelMessageResponse_channelMessage :: Lens.Lens' GetChannelMessageResponse (Prelude.Maybe ChannelMessage)
+getChannelMessageResponse_channelMessage = Lens.lens (\GetChannelMessageResponse' {channelMessage} -> channelMessage) (\s@GetChannelMessageResponse' {} a -> s {channelMessage = a} :: GetChannelMessageResponse)
+
+-- | The response's http status code.
+getChannelMessageResponse_httpStatus :: Lens.Lens' GetChannelMessageResponse Prelude.Int
+getChannelMessageResponse_httpStatus = Lens.lens (\GetChannelMessageResponse' {httpStatus} -> httpStatus) (\s@GetChannelMessageResponse' {} a -> s {httpStatus = a} :: GetChannelMessageResponse)
+
+instance Prelude.NFData GetChannelMessageResponse where
+  rnf GetChannelMessageResponse' {..} =
+    Prelude.rnf channelMessage
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetEventsConfiguration.hs b/gen/Amazonka/Chime/GetEventsConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetEventsConfiguration.hs
@@ -0,0 +1,178 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetEventsConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets details for an events configuration that allows a bot to receive
+-- outgoing events, such as an HTTPS endpoint or Lambda function ARN.
+module Amazonka.Chime.GetEventsConfiguration
+  ( -- * Creating a Request
+    GetEventsConfiguration (..),
+    newGetEventsConfiguration,
+
+    -- * Request Lenses
+    getEventsConfiguration_accountId,
+    getEventsConfiguration_botId,
+
+    -- * Destructuring the Response
+    GetEventsConfigurationResponse (..),
+    newGetEventsConfigurationResponse,
+
+    -- * Response Lenses
+    getEventsConfigurationResponse_eventsConfiguration,
+    getEventsConfigurationResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetEventsConfiguration' smart constructor.
+data GetEventsConfiguration = GetEventsConfiguration'
+  { -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The bot ID.
+    botId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetEventsConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'getEventsConfiguration_accountId' - The Amazon Chime account ID.
+--
+-- 'botId', 'getEventsConfiguration_botId' - The bot ID.
+newGetEventsConfiguration ::
+  -- | 'accountId'
+  Prelude.Text ->
+  -- | 'botId'
+  Prelude.Text ->
+  GetEventsConfiguration
+newGetEventsConfiguration pAccountId_ pBotId_ =
+  GetEventsConfiguration'
+    { accountId = pAccountId_,
+      botId = pBotId_
+    }
+
+-- | The Amazon Chime account ID.
+getEventsConfiguration_accountId :: Lens.Lens' GetEventsConfiguration Prelude.Text
+getEventsConfiguration_accountId = Lens.lens (\GetEventsConfiguration' {accountId} -> accountId) (\s@GetEventsConfiguration' {} a -> s {accountId = a} :: GetEventsConfiguration)
+
+-- | The bot ID.
+getEventsConfiguration_botId :: Lens.Lens' GetEventsConfiguration Prelude.Text
+getEventsConfiguration_botId = Lens.lens (\GetEventsConfiguration' {botId} -> botId) (\s@GetEventsConfiguration' {} a -> s {botId = a} :: GetEventsConfiguration)
+
+instance Core.AWSRequest GetEventsConfiguration where
+  type
+    AWSResponse GetEventsConfiguration =
+      GetEventsConfigurationResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetEventsConfigurationResponse'
+            Prelude.<$> (x Data..?> "EventsConfiguration")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetEventsConfiguration where
+  hashWithSalt _salt GetEventsConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` botId
+
+instance Prelude.NFData GetEventsConfiguration where
+  rnf GetEventsConfiguration' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf botId
+
+instance Data.ToHeaders GetEventsConfiguration where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetEventsConfiguration where
+  toPath GetEventsConfiguration' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS accountId,
+        "/bots/",
+        Data.toBS botId,
+        "/events-configuration"
+      ]
+
+instance Data.ToQuery GetEventsConfiguration where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetEventsConfigurationResponse' smart constructor.
+data GetEventsConfigurationResponse = GetEventsConfigurationResponse'
+  { -- | The events configuration details.
+    eventsConfiguration :: Prelude.Maybe EventsConfiguration,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetEventsConfigurationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'eventsConfiguration', 'getEventsConfigurationResponse_eventsConfiguration' - The events configuration details.
+--
+-- 'httpStatus', 'getEventsConfigurationResponse_httpStatus' - The response's http status code.
+newGetEventsConfigurationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetEventsConfigurationResponse
+newGetEventsConfigurationResponse pHttpStatus_ =
+  GetEventsConfigurationResponse'
+    { eventsConfiguration =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The events configuration details.
+getEventsConfigurationResponse_eventsConfiguration :: Lens.Lens' GetEventsConfigurationResponse (Prelude.Maybe EventsConfiguration)
+getEventsConfigurationResponse_eventsConfiguration = Lens.lens (\GetEventsConfigurationResponse' {eventsConfiguration} -> eventsConfiguration) (\s@GetEventsConfigurationResponse' {} a -> s {eventsConfiguration = a} :: GetEventsConfigurationResponse)
+
+-- | The response's http status code.
+getEventsConfigurationResponse_httpStatus :: Lens.Lens' GetEventsConfigurationResponse Prelude.Int
+getEventsConfigurationResponse_httpStatus = Lens.lens (\GetEventsConfigurationResponse' {httpStatus} -> httpStatus) (\s@GetEventsConfigurationResponse' {} a -> s {httpStatus = a} :: GetEventsConfigurationResponse)
+
+instance
+  Prelude.NFData
+    GetEventsConfigurationResponse
+  where
+  rnf GetEventsConfigurationResponse' {..} =
+    Prelude.rnf eventsConfiguration
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetGlobalSettings.hs b/gen/Amazonka/Chime/GetGlobalSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetGlobalSettings.hs
@@ -0,0 +1,146 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetGlobalSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves global settings for the administrator\'s AWS account, such as
+-- Amazon Chime Business Calling and Amazon Chime Voice Connector settings.
+module Amazonka.Chime.GetGlobalSettings
+  ( -- * Creating a Request
+    GetGlobalSettings (..),
+    newGetGlobalSettings,
+
+    -- * Destructuring the Response
+    GetGlobalSettingsResponse (..),
+    newGetGlobalSettingsResponse,
+
+    -- * Response Lenses
+    getGlobalSettingsResponse_businessCalling,
+    getGlobalSettingsResponse_voiceConnector,
+    getGlobalSettingsResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetGlobalSettings' smart constructor.
+data GetGlobalSettings = GetGlobalSettings'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetGlobalSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newGetGlobalSettings ::
+  GetGlobalSettings
+newGetGlobalSettings = GetGlobalSettings'
+
+instance Core.AWSRequest GetGlobalSettings where
+  type
+    AWSResponse GetGlobalSettings =
+      GetGlobalSettingsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetGlobalSettingsResponse'
+            Prelude.<$> (x Data..?> "BusinessCalling")
+            Prelude.<*> (x Data..?> "VoiceConnector")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetGlobalSettings where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData GetGlobalSettings where
+  rnf _ = ()
+
+instance Data.ToHeaders GetGlobalSettings where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetGlobalSettings where
+  toPath = Prelude.const "/settings"
+
+instance Data.ToQuery GetGlobalSettings where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetGlobalSettingsResponse' smart constructor.
+data GetGlobalSettingsResponse = GetGlobalSettingsResponse'
+  { -- | The Amazon Chime Business Calling settings.
+    businessCalling :: Prelude.Maybe BusinessCallingSettings,
+    -- | The Amazon Chime Voice Connector settings.
+    voiceConnector :: Prelude.Maybe VoiceConnectorSettings,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetGlobalSettingsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'businessCalling', 'getGlobalSettingsResponse_businessCalling' - The Amazon Chime Business Calling settings.
+--
+-- 'voiceConnector', 'getGlobalSettingsResponse_voiceConnector' - The Amazon Chime Voice Connector settings.
+--
+-- 'httpStatus', 'getGlobalSettingsResponse_httpStatus' - The response's http status code.
+newGetGlobalSettingsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetGlobalSettingsResponse
+newGetGlobalSettingsResponse pHttpStatus_ =
+  GetGlobalSettingsResponse'
+    { businessCalling =
+        Prelude.Nothing,
+      voiceConnector = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Chime Business Calling settings.
+getGlobalSettingsResponse_businessCalling :: Lens.Lens' GetGlobalSettingsResponse (Prelude.Maybe BusinessCallingSettings)
+getGlobalSettingsResponse_businessCalling = Lens.lens (\GetGlobalSettingsResponse' {businessCalling} -> businessCalling) (\s@GetGlobalSettingsResponse' {} a -> s {businessCalling = a} :: GetGlobalSettingsResponse)
+
+-- | The Amazon Chime Voice Connector settings.
+getGlobalSettingsResponse_voiceConnector :: Lens.Lens' GetGlobalSettingsResponse (Prelude.Maybe VoiceConnectorSettings)
+getGlobalSettingsResponse_voiceConnector = Lens.lens (\GetGlobalSettingsResponse' {voiceConnector} -> voiceConnector) (\s@GetGlobalSettingsResponse' {} a -> s {voiceConnector = a} :: GetGlobalSettingsResponse)
+
+-- | The response's http status code.
+getGlobalSettingsResponse_httpStatus :: Lens.Lens' GetGlobalSettingsResponse Prelude.Int
+getGlobalSettingsResponse_httpStatus = Lens.lens (\GetGlobalSettingsResponse' {httpStatus} -> httpStatus) (\s@GetGlobalSettingsResponse' {} a -> s {httpStatus = a} :: GetGlobalSettingsResponse)
+
+instance Prelude.NFData GetGlobalSettingsResponse where
+  rnf GetGlobalSettingsResponse' {..} =
+    Prelude.rnf businessCalling
+      `Prelude.seq` Prelude.rnf voiceConnector
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetMediaCapturePipeline.hs b/gen/Amazonka/Chime/GetMediaCapturePipeline.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetMediaCapturePipeline.hs
@@ -0,0 +1,160 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetMediaCapturePipeline
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets an existing media capture pipeline.
+module Amazonka.Chime.GetMediaCapturePipeline
+  ( -- * Creating a Request
+    GetMediaCapturePipeline (..),
+    newGetMediaCapturePipeline,
+
+    -- * Request Lenses
+    getMediaCapturePipeline_mediaPipelineId,
+
+    -- * Destructuring the Response
+    GetMediaCapturePipelineResponse (..),
+    newGetMediaCapturePipelineResponse,
+
+    -- * Response Lenses
+    getMediaCapturePipelineResponse_mediaCapturePipeline,
+    getMediaCapturePipelineResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetMediaCapturePipeline' smart constructor.
+data GetMediaCapturePipeline = GetMediaCapturePipeline'
+  { -- | The ID of the pipeline that you want to get.
+    mediaPipelineId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetMediaCapturePipeline' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'mediaPipelineId', 'getMediaCapturePipeline_mediaPipelineId' - The ID of the pipeline that you want to get.
+newGetMediaCapturePipeline ::
+  -- | 'mediaPipelineId'
+  Prelude.Text ->
+  GetMediaCapturePipeline
+newGetMediaCapturePipeline pMediaPipelineId_ =
+  GetMediaCapturePipeline'
+    { mediaPipelineId =
+        pMediaPipelineId_
+    }
+
+-- | The ID of the pipeline that you want to get.
+getMediaCapturePipeline_mediaPipelineId :: Lens.Lens' GetMediaCapturePipeline Prelude.Text
+getMediaCapturePipeline_mediaPipelineId = Lens.lens (\GetMediaCapturePipeline' {mediaPipelineId} -> mediaPipelineId) (\s@GetMediaCapturePipeline' {} a -> s {mediaPipelineId = a} :: GetMediaCapturePipeline)
+
+instance Core.AWSRequest GetMediaCapturePipeline where
+  type
+    AWSResponse GetMediaCapturePipeline =
+      GetMediaCapturePipelineResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetMediaCapturePipelineResponse'
+            Prelude.<$> (x Data..?> "MediaCapturePipeline")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetMediaCapturePipeline where
+  hashWithSalt _salt GetMediaCapturePipeline' {..} =
+    _salt `Prelude.hashWithSalt` mediaPipelineId
+
+instance Prelude.NFData GetMediaCapturePipeline where
+  rnf GetMediaCapturePipeline' {..} =
+    Prelude.rnf mediaPipelineId
+
+instance Data.ToHeaders GetMediaCapturePipeline where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetMediaCapturePipeline where
+  toPath GetMediaCapturePipeline' {..} =
+    Prelude.mconcat
+      [ "/media-capture-pipelines/",
+        Data.toBS mediaPipelineId
+      ]
+
+instance Data.ToQuery GetMediaCapturePipeline where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetMediaCapturePipelineResponse' smart constructor.
+data GetMediaCapturePipelineResponse = GetMediaCapturePipelineResponse'
+  { -- | The media capture pipeline object.
+    mediaCapturePipeline :: Prelude.Maybe MediaCapturePipeline,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetMediaCapturePipelineResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'mediaCapturePipeline', 'getMediaCapturePipelineResponse_mediaCapturePipeline' - The media capture pipeline object.
+--
+-- 'httpStatus', 'getMediaCapturePipelineResponse_httpStatus' - The response's http status code.
+newGetMediaCapturePipelineResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetMediaCapturePipelineResponse
+newGetMediaCapturePipelineResponse pHttpStatus_ =
+  GetMediaCapturePipelineResponse'
+    { mediaCapturePipeline =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The media capture pipeline object.
+getMediaCapturePipelineResponse_mediaCapturePipeline :: Lens.Lens' GetMediaCapturePipelineResponse (Prelude.Maybe MediaCapturePipeline)
+getMediaCapturePipelineResponse_mediaCapturePipeline = Lens.lens (\GetMediaCapturePipelineResponse' {mediaCapturePipeline} -> mediaCapturePipeline) (\s@GetMediaCapturePipelineResponse' {} a -> s {mediaCapturePipeline = a} :: GetMediaCapturePipelineResponse)
+
+-- | The response's http status code.
+getMediaCapturePipelineResponse_httpStatus :: Lens.Lens' GetMediaCapturePipelineResponse Prelude.Int
+getMediaCapturePipelineResponse_httpStatus = Lens.lens (\GetMediaCapturePipelineResponse' {httpStatus} -> httpStatus) (\s@GetMediaCapturePipelineResponse' {} a -> s {httpStatus = a} :: GetMediaCapturePipelineResponse)
+
+instance
+  Prelude.NFData
+    GetMediaCapturePipelineResponse
+  where
+  rnf GetMediaCapturePipelineResponse' {..} =
+    Prelude.rnf mediaCapturePipeline
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetMeeting.hs b/gen/Amazonka/Chime/GetMeeting.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetMeeting.hs
@@ -0,0 +1,150 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetMeeting
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the Amazon Chime SDK meeting details for the specified meeting ID.
+-- For more information about the Amazon Chime SDK, see
+-- <https://docs.aws.amazon.com/chime/latest/dg/meetings-sdk.html Using the Amazon Chime SDK>
+-- in the /Amazon Chime Developer Guide/ .
+module Amazonka.Chime.GetMeeting
+  ( -- * Creating a Request
+    GetMeeting (..),
+    newGetMeeting,
+
+    -- * Request Lenses
+    getMeeting_meetingId,
+
+    -- * Destructuring the Response
+    GetMeetingResponse (..),
+    newGetMeetingResponse,
+
+    -- * Response Lenses
+    getMeetingResponse_meeting,
+    getMeetingResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetMeeting' smart constructor.
+data GetMeeting = GetMeeting'
+  { -- | The Amazon Chime SDK meeting ID.
+    meetingId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetMeeting' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'meetingId', 'getMeeting_meetingId' - The Amazon Chime SDK meeting ID.
+newGetMeeting ::
+  -- | 'meetingId'
+  Prelude.Text ->
+  GetMeeting
+newGetMeeting pMeetingId_ =
+  GetMeeting' {meetingId = pMeetingId_}
+
+-- | The Amazon Chime SDK meeting ID.
+getMeeting_meetingId :: Lens.Lens' GetMeeting Prelude.Text
+getMeeting_meetingId = Lens.lens (\GetMeeting' {meetingId} -> meetingId) (\s@GetMeeting' {} a -> s {meetingId = a} :: GetMeeting)
+
+instance Core.AWSRequest GetMeeting where
+  type AWSResponse GetMeeting = GetMeetingResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetMeetingResponse'
+            Prelude.<$> (x Data..?> "Meeting")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetMeeting where
+  hashWithSalt _salt GetMeeting' {..} =
+    _salt `Prelude.hashWithSalt` meetingId
+
+instance Prelude.NFData GetMeeting where
+  rnf GetMeeting' {..} = Prelude.rnf meetingId
+
+instance Data.ToHeaders GetMeeting where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetMeeting where
+  toPath GetMeeting' {..} =
+    Prelude.mconcat ["/meetings/", Data.toBS meetingId]
+
+instance Data.ToQuery GetMeeting where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetMeetingResponse' smart constructor.
+data GetMeetingResponse = GetMeetingResponse'
+  { -- | The Amazon Chime SDK meeting information.
+    meeting :: Prelude.Maybe Meeting,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetMeetingResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'meeting', 'getMeetingResponse_meeting' - The Amazon Chime SDK meeting information.
+--
+-- 'httpStatus', 'getMeetingResponse_httpStatus' - The response's http status code.
+newGetMeetingResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetMeetingResponse
+newGetMeetingResponse pHttpStatus_ =
+  GetMeetingResponse'
+    { meeting = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Chime SDK meeting information.
+getMeetingResponse_meeting :: Lens.Lens' GetMeetingResponse (Prelude.Maybe Meeting)
+getMeetingResponse_meeting = Lens.lens (\GetMeetingResponse' {meeting} -> meeting) (\s@GetMeetingResponse' {} a -> s {meeting = a} :: GetMeetingResponse)
+
+-- | The response's http status code.
+getMeetingResponse_httpStatus :: Lens.Lens' GetMeetingResponse Prelude.Int
+getMeetingResponse_httpStatus = Lens.lens (\GetMeetingResponse' {httpStatus} -> httpStatus) (\s@GetMeetingResponse' {} a -> s {httpStatus = a} :: GetMeetingResponse)
+
+instance Prelude.NFData GetMeetingResponse where
+  rnf GetMeetingResponse' {..} =
+    Prelude.rnf meeting
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetMessagingSessionEndpoint.hs b/gen/Amazonka/Chime/GetMessagingSessionEndpoint.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetMessagingSessionEndpoint.hs
@@ -0,0 +1,137 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetMessagingSessionEndpoint
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- The details of the endpoint for the messaging session.
+module Amazonka.Chime.GetMessagingSessionEndpoint
+  ( -- * Creating a Request
+    GetMessagingSessionEndpoint (..),
+    newGetMessagingSessionEndpoint,
+
+    -- * Destructuring the Response
+    GetMessagingSessionEndpointResponse (..),
+    newGetMessagingSessionEndpointResponse,
+
+    -- * Response Lenses
+    getMessagingSessionEndpointResponse_endpoint,
+    getMessagingSessionEndpointResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetMessagingSessionEndpoint' smart constructor.
+data GetMessagingSessionEndpoint = GetMessagingSessionEndpoint'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetMessagingSessionEndpoint' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newGetMessagingSessionEndpoint ::
+  GetMessagingSessionEndpoint
+newGetMessagingSessionEndpoint =
+  GetMessagingSessionEndpoint'
+
+instance Core.AWSRequest GetMessagingSessionEndpoint where
+  type
+    AWSResponse GetMessagingSessionEndpoint =
+      GetMessagingSessionEndpointResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetMessagingSessionEndpointResponse'
+            Prelude.<$> (x Data..?> "Endpoint")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetMessagingSessionEndpoint where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData GetMessagingSessionEndpoint where
+  rnf _ = ()
+
+instance Data.ToHeaders GetMessagingSessionEndpoint where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetMessagingSessionEndpoint where
+  toPath = Prelude.const "/endpoints/messaging-session"
+
+instance Data.ToQuery GetMessagingSessionEndpoint where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetMessagingSessionEndpointResponse' smart constructor.
+data GetMessagingSessionEndpointResponse = GetMessagingSessionEndpointResponse'
+  { -- | The endpoint returned in the response.
+    endpoint :: Prelude.Maybe MessagingSessionEndpoint,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetMessagingSessionEndpointResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'endpoint', 'getMessagingSessionEndpointResponse_endpoint' - The endpoint returned in the response.
+--
+-- 'httpStatus', 'getMessagingSessionEndpointResponse_httpStatus' - The response's http status code.
+newGetMessagingSessionEndpointResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetMessagingSessionEndpointResponse
+newGetMessagingSessionEndpointResponse pHttpStatus_ =
+  GetMessagingSessionEndpointResponse'
+    { endpoint =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The endpoint returned in the response.
+getMessagingSessionEndpointResponse_endpoint :: Lens.Lens' GetMessagingSessionEndpointResponse (Prelude.Maybe MessagingSessionEndpoint)
+getMessagingSessionEndpointResponse_endpoint = Lens.lens (\GetMessagingSessionEndpointResponse' {endpoint} -> endpoint) (\s@GetMessagingSessionEndpointResponse' {} a -> s {endpoint = a} :: GetMessagingSessionEndpointResponse)
+
+-- | The response's http status code.
+getMessagingSessionEndpointResponse_httpStatus :: Lens.Lens' GetMessagingSessionEndpointResponse Prelude.Int
+getMessagingSessionEndpointResponse_httpStatus = Lens.lens (\GetMessagingSessionEndpointResponse' {httpStatus} -> httpStatus) (\s@GetMessagingSessionEndpointResponse' {} a -> s {httpStatus = a} :: GetMessagingSessionEndpointResponse)
+
+instance
+  Prelude.NFData
+    GetMessagingSessionEndpointResponse
+  where
+  rnf GetMessagingSessionEndpointResponse' {..} =
+    Prelude.rnf endpoint
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetPhoneNumber.hs b/gen/Amazonka/Chime/GetPhoneNumber.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetPhoneNumber.hs
@@ -0,0 +1,152 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetPhoneNumber
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves details for the specified phone number ID, such as
+-- associations, capabilities, and product type.
+module Amazonka.Chime.GetPhoneNumber
+  ( -- * Creating a Request
+    GetPhoneNumber (..),
+    newGetPhoneNumber,
+
+    -- * Request Lenses
+    getPhoneNumber_phoneNumberId,
+
+    -- * Destructuring the Response
+    GetPhoneNumberResponse (..),
+    newGetPhoneNumberResponse,
+
+    -- * Response Lenses
+    getPhoneNumberResponse_phoneNumber,
+    getPhoneNumberResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetPhoneNumber' smart constructor.
+data GetPhoneNumber = GetPhoneNumber'
+  { -- | The phone number ID.
+    phoneNumberId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetPhoneNumber' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'phoneNumberId', 'getPhoneNumber_phoneNumberId' - The phone number ID.
+newGetPhoneNumber ::
+  -- | 'phoneNumberId'
+  Prelude.Text ->
+  GetPhoneNumber
+newGetPhoneNumber pPhoneNumberId_ =
+  GetPhoneNumber' {phoneNumberId = pPhoneNumberId_}
+
+-- | The phone number ID.
+getPhoneNumber_phoneNumberId :: Lens.Lens' GetPhoneNumber Prelude.Text
+getPhoneNumber_phoneNumberId = Lens.lens (\GetPhoneNumber' {phoneNumberId} -> phoneNumberId) (\s@GetPhoneNumber' {} a -> s {phoneNumberId = a} :: GetPhoneNumber)
+
+instance Core.AWSRequest GetPhoneNumber where
+  type
+    AWSResponse GetPhoneNumber =
+      GetPhoneNumberResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetPhoneNumberResponse'
+            Prelude.<$> (x Data..?> "PhoneNumber")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetPhoneNumber where
+  hashWithSalt _salt GetPhoneNumber' {..} =
+    _salt `Prelude.hashWithSalt` phoneNumberId
+
+instance Prelude.NFData GetPhoneNumber where
+  rnf GetPhoneNumber' {..} = Prelude.rnf phoneNumberId
+
+instance Data.ToHeaders GetPhoneNumber where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetPhoneNumber where
+  toPath GetPhoneNumber' {..} =
+    Prelude.mconcat
+      ["/phone-numbers/", Data.toBS phoneNumberId]
+
+instance Data.ToQuery GetPhoneNumber where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetPhoneNumberResponse' smart constructor.
+data GetPhoneNumberResponse = GetPhoneNumberResponse'
+  { -- | The phone number details.
+    phoneNumber :: Prelude.Maybe PhoneNumber,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetPhoneNumberResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'phoneNumber', 'getPhoneNumberResponse_phoneNumber' - The phone number details.
+--
+-- 'httpStatus', 'getPhoneNumberResponse_httpStatus' - The response's http status code.
+newGetPhoneNumberResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetPhoneNumberResponse
+newGetPhoneNumberResponse pHttpStatus_ =
+  GetPhoneNumberResponse'
+    { phoneNumber =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The phone number details.
+getPhoneNumberResponse_phoneNumber :: Lens.Lens' GetPhoneNumberResponse (Prelude.Maybe PhoneNumber)
+getPhoneNumberResponse_phoneNumber = Lens.lens (\GetPhoneNumberResponse' {phoneNumber} -> phoneNumber) (\s@GetPhoneNumberResponse' {} a -> s {phoneNumber = a} :: GetPhoneNumberResponse)
+
+-- | The response's http status code.
+getPhoneNumberResponse_httpStatus :: Lens.Lens' GetPhoneNumberResponse Prelude.Int
+getPhoneNumberResponse_httpStatus = Lens.lens (\GetPhoneNumberResponse' {httpStatus} -> httpStatus) (\s@GetPhoneNumberResponse' {} a -> s {httpStatus = a} :: GetPhoneNumberResponse)
+
+instance Prelude.NFData GetPhoneNumberResponse where
+  rnf GetPhoneNumberResponse' {..} =
+    Prelude.rnf phoneNumber
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetPhoneNumberOrder.hs b/gen/Amazonka/Chime/GetPhoneNumberOrder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetPhoneNumberOrder.hs
@@ -0,0 +1,159 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetPhoneNumberOrder
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves details for the specified phone number order, such as the
+-- order creation timestamp, phone numbers in E.164 format, product type,
+-- and order status.
+module Amazonka.Chime.GetPhoneNumberOrder
+  ( -- * Creating a Request
+    GetPhoneNumberOrder (..),
+    newGetPhoneNumberOrder,
+
+    -- * Request Lenses
+    getPhoneNumberOrder_phoneNumberOrderId,
+
+    -- * Destructuring the Response
+    GetPhoneNumberOrderResponse (..),
+    newGetPhoneNumberOrderResponse,
+
+    -- * Response Lenses
+    getPhoneNumberOrderResponse_phoneNumberOrder,
+    getPhoneNumberOrderResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetPhoneNumberOrder' smart constructor.
+data GetPhoneNumberOrder = GetPhoneNumberOrder'
+  { -- | The ID for the phone number order.
+    phoneNumberOrderId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetPhoneNumberOrder' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'phoneNumberOrderId', 'getPhoneNumberOrder_phoneNumberOrderId' - The ID for the phone number order.
+newGetPhoneNumberOrder ::
+  -- | 'phoneNumberOrderId'
+  Prelude.Text ->
+  GetPhoneNumberOrder
+newGetPhoneNumberOrder pPhoneNumberOrderId_ =
+  GetPhoneNumberOrder'
+    { phoneNumberOrderId =
+        pPhoneNumberOrderId_
+    }
+
+-- | The ID for the phone number order.
+getPhoneNumberOrder_phoneNumberOrderId :: Lens.Lens' GetPhoneNumberOrder Prelude.Text
+getPhoneNumberOrder_phoneNumberOrderId = Lens.lens (\GetPhoneNumberOrder' {phoneNumberOrderId} -> phoneNumberOrderId) (\s@GetPhoneNumberOrder' {} a -> s {phoneNumberOrderId = a} :: GetPhoneNumberOrder)
+
+instance Core.AWSRequest GetPhoneNumberOrder where
+  type
+    AWSResponse GetPhoneNumberOrder =
+      GetPhoneNumberOrderResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetPhoneNumberOrderResponse'
+            Prelude.<$> (x Data..?> "PhoneNumberOrder")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetPhoneNumberOrder where
+  hashWithSalt _salt GetPhoneNumberOrder' {..} =
+    _salt `Prelude.hashWithSalt` phoneNumberOrderId
+
+instance Prelude.NFData GetPhoneNumberOrder where
+  rnf GetPhoneNumberOrder' {..} =
+    Prelude.rnf phoneNumberOrderId
+
+instance Data.ToHeaders GetPhoneNumberOrder where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetPhoneNumberOrder where
+  toPath GetPhoneNumberOrder' {..} =
+    Prelude.mconcat
+      [ "/phone-number-orders/",
+        Data.toBS phoneNumberOrderId
+      ]
+
+instance Data.ToQuery GetPhoneNumberOrder where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetPhoneNumberOrderResponse' smart constructor.
+data GetPhoneNumberOrderResponse = GetPhoneNumberOrderResponse'
+  { -- | The phone number order details.
+    phoneNumberOrder :: Prelude.Maybe PhoneNumberOrder,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetPhoneNumberOrderResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'phoneNumberOrder', 'getPhoneNumberOrderResponse_phoneNumberOrder' - The phone number order details.
+--
+-- 'httpStatus', 'getPhoneNumberOrderResponse_httpStatus' - The response's http status code.
+newGetPhoneNumberOrderResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetPhoneNumberOrderResponse
+newGetPhoneNumberOrderResponse pHttpStatus_ =
+  GetPhoneNumberOrderResponse'
+    { phoneNumberOrder =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The phone number order details.
+getPhoneNumberOrderResponse_phoneNumberOrder :: Lens.Lens' GetPhoneNumberOrderResponse (Prelude.Maybe PhoneNumberOrder)
+getPhoneNumberOrderResponse_phoneNumberOrder = Lens.lens (\GetPhoneNumberOrderResponse' {phoneNumberOrder} -> phoneNumberOrder) (\s@GetPhoneNumberOrderResponse' {} a -> s {phoneNumberOrder = a} :: GetPhoneNumberOrderResponse)
+
+-- | The response's http status code.
+getPhoneNumberOrderResponse_httpStatus :: Lens.Lens' GetPhoneNumberOrderResponse Prelude.Int
+getPhoneNumberOrderResponse_httpStatus = Lens.lens (\GetPhoneNumberOrderResponse' {httpStatus} -> httpStatus) (\s@GetPhoneNumberOrderResponse' {} a -> s {httpStatus = a} :: GetPhoneNumberOrderResponse)
+
+instance Prelude.NFData GetPhoneNumberOrderResponse where
+  rnf GetPhoneNumberOrderResponse' {..} =
+    Prelude.rnf phoneNumberOrder
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetPhoneNumberSettings.hs b/gen/Amazonka/Chime/GetPhoneNumberSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetPhoneNumberSettings.hs
@@ -0,0 +1,150 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetPhoneNumberSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves the phone number settings for the administrator\'s AWS
+-- account, such as the default outbound calling name.
+module Amazonka.Chime.GetPhoneNumberSettings
+  ( -- * Creating a Request
+    GetPhoneNumberSettings (..),
+    newGetPhoneNumberSettings,
+
+    -- * Destructuring the Response
+    GetPhoneNumberSettingsResponse (..),
+    newGetPhoneNumberSettingsResponse,
+
+    -- * Response Lenses
+    getPhoneNumberSettingsResponse_callingName,
+    getPhoneNumberSettingsResponse_callingNameUpdatedTimestamp,
+    getPhoneNumberSettingsResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetPhoneNumberSettings' smart constructor.
+data GetPhoneNumberSettings = GetPhoneNumberSettings'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetPhoneNumberSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newGetPhoneNumberSettings ::
+  GetPhoneNumberSettings
+newGetPhoneNumberSettings = GetPhoneNumberSettings'
+
+instance Core.AWSRequest GetPhoneNumberSettings where
+  type
+    AWSResponse GetPhoneNumberSettings =
+      GetPhoneNumberSettingsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetPhoneNumberSettingsResponse'
+            Prelude.<$> (x Data..?> "CallingName")
+            Prelude.<*> (x Data..?> "CallingNameUpdatedTimestamp")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetPhoneNumberSettings where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData GetPhoneNumberSettings where
+  rnf _ = ()
+
+instance Data.ToHeaders GetPhoneNumberSettings where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetPhoneNumberSettings where
+  toPath = Prelude.const "/settings/phone-number"
+
+instance Data.ToQuery GetPhoneNumberSettings where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetPhoneNumberSettingsResponse' smart constructor.
+data GetPhoneNumberSettingsResponse = GetPhoneNumberSettingsResponse'
+  { -- | The default outbound calling name for the account.
+    callingName :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The updated outbound calling name timestamp, in ISO 8601 format.
+    callingNameUpdatedTimestamp :: Prelude.Maybe Data.ISO8601,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetPhoneNumberSettingsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'callingName', 'getPhoneNumberSettingsResponse_callingName' - The default outbound calling name for the account.
+--
+-- 'callingNameUpdatedTimestamp', 'getPhoneNumberSettingsResponse_callingNameUpdatedTimestamp' - The updated outbound calling name timestamp, in ISO 8601 format.
+--
+-- 'httpStatus', 'getPhoneNumberSettingsResponse_httpStatus' - The response's http status code.
+newGetPhoneNumberSettingsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetPhoneNumberSettingsResponse
+newGetPhoneNumberSettingsResponse pHttpStatus_ =
+  GetPhoneNumberSettingsResponse'
+    { callingName =
+        Prelude.Nothing,
+      callingNameUpdatedTimestamp =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The default outbound calling name for the account.
+getPhoneNumberSettingsResponse_callingName :: Lens.Lens' GetPhoneNumberSettingsResponse (Prelude.Maybe Prelude.Text)
+getPhoneNumberSettingsResponse_callingName = Lens.lens (\GetPhoneNumberSettingsResponse' {callingName} -> callingName) (\s@GetPhoneNumberSettingsResponse' {} a -> s {callingName = a} :: GetPhoneNumberSettingsResponse) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The updated outbound calling name timestamp, in ISO 8601 format.
+getPhoneNumberSettingsResponse_callingNameUpdatedTimestamp :: Lens.Lens' GetPhoneNumberSettingsResponse (Prelude.Maybe Prelude.UTCTime)
+getPhoneNumberSettingsResponse_callingNameUpdatedTimestamp = Lens.lens (\GetPhoneNumberSettingsResponse' {callingNameUpdatedTimestamp} -> callingNameUpdatedTimestamp) (\s@GetPhoneNumberSettingsResponse' {} a -> s {callingNameUpdatedTimestamp = a} :: GetPhoneNumberSettingsResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The response's http status code.
+getPhoneNumberSettingsResponse_httpStatus :: Lens.Lens' GetPhoneNumberSettingsResponse Prelude.Int
+getPhoneNumberSettingsResponse_httpStatus = Lens.lens (\GetPhoneNumberSettingsResponse' {httpStatus} -> httpStatus) (\s@GetPhoneNumberSettingsResponse' {} a -> s {httpStatus = a} :: GetPhoneNumberSettingsResponse)
+
+instance
+  Prelude.NFData
+    GetPhoneNumberSettingsResponse
+  where
+  rnf GetPhoneNumberSettingsResponse' {..} =
+    Prelude.rnf callingName
+      `Prelude.seq` Prelude.rnf callingNameUpdatedTimestamp
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetProxySession.hs b/gen/Amazonka/Chime/GetProxySession.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetProxySession.hs
@@ -0,0 +1,177 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetProxySession
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the specified proxy session details for the specified Amazon Chime
+-- Voice Connector.
+module Amazonka.Chime.GetProxySession
+  ( -- * Creating a Request
+    GetProxySession (..),
+    newGetProxySession,
+
+    -- * Request Lenses
+    getProxySession_voiceConnectorId,
+    getProxySession_proxySessionId,
+
+    -- * Destructuring the Response
+    GetProxySessionResponse (..),
+    newGetProxySessionResponse,
+
+    -- * Response Lenses
+    getProxySessionResponse_proxySession,
+    getProxySessionResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetProxySession' smart constructor.
+data GetProxySession = GetProxySession'
+  { -- | The Amazon Chime voice connector ID.
+    voiceConnectorId :: Prelude.Text,
+    -- | The proxy session ID.
+    proxySessionId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetProxySession' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorId', 'getProxySession_voiceConnectorId' - The Amazon Chime voice connector ID.
+--
+-- 'proxySessionId', 'getProxySession_proxySessionId' - The proxy session ID.
+newGetProxySession ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  -- | 'proxySessionId'
+  Prelude.Text ->
+  GetProxySession
+newGetProxySession
+  pVoiceConnectorId_
+  pProxySessionId_ =
+    GetProxySession'
+      { voiceConnectorId =
+          pVoiceConnectorId_,
+        proxySessionId = pProxySessionId_
+      }
+
+-- | The Amazon Chime voice connector ID.
+getProxySession_voiceConnectorId :: Lens.Lens' GetProxySession Prelude.Text
+getProxySession_voiceConnectorId = Lens.lens (\GetProxySession' {voiceConnectorId} -> voiceConnectorId) (\s@GetProxySession' {} a -> s {voiceConnectorId = a} :: GetProxySession)
+
+-- | The proxy session ID.
+getProxySession_proxySessionId :: Lens.Lens' GetProxySession Prelude.Text
+getProxySession_proxySessionId = Lens.lens (\GetProxySession' {proxySessionId} -> proxySessionId) (\s@GetProxySession' {} a -> s {proxySessionId = a} :: GetProxySession)
+
+instance Core.AWSRequest GetProxySession where
+  type
+    AWSResponse GetProxySession =
+      GetProxySessionResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetProxySessionResponse'
+            Prelude.<$> (x Data..?> "ProxySession")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetProxySession where
+  hashWithSalt _salt GetProxySession' {..} =
+    _salt
+      `Prelude.hashWithSalt` voiceConnectorId
+      `Prelude.hashWithSalt` proxySessionId
+
+instance Prelude.NFData GetProxySession where
+  rnf GetProxySession' {..} =
+    Prelude.rnf voiceConnectorId
+      `Prelude.seq` Prelude.rnf proxySessionId
+
+instance Data.ToHeaders GetProxySession where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetProxySession where
+  toPath GetProxySession' {..} =
+    Prelude.mconcat
+      [ "/voice-connectors/",
+        Data.toBS voiceConnectorId,
+        "/proxy-sessions/",
+        Data.toBS proxySessionId
+      ]
+
+instance Data.ToQuery GetProxySession where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetProxySessionResponse' smart constructor.
+data GetProxySessionResponse = GetProxySessionResponse'
+  { -- | The proxy session details.
+    proxySession :: Prelude.Maybe ProxySession,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetProxySessionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'proxySession', 'getProxySessionResponse_proxySession' - The proxy session details.
+--
+-- 'httpStatus', 'getProxySessionResponse_httpStatus' - The response's http status code.
+newGetProxySessionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetProxySessionResponse
+newGetProxySessionResponse pHttpStatus_ =
+  GetProxySessionResponse'
+    { proxySession =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The proxy session details.
+getProxySessionResponse_proxySession :: Lens.Lens' GetProxySessionResponse (Prelude.Maybe ProxySession)
+getProxySessionResponse_proxySession = Lens.lens (\GetProxySessionResponse' {proxySession} -> proxySession) (\s@GetProxySessionResponse' {} a -> s {proxySession = a} :: GetProxySessionResponse)
+
+-- | The response's http status code.
+getProxySessionResponse_httpStatus :: Lens.Lens' GetProxySessionResponse Prelude.Int
+getProxySessionResponse_httpStatus = Lens.lens (\GetProxySessionResponse' {httpStatus} -> httpStatus) (\s@GetProxySessionResponse' {} a -> s {httpStatus = a} :: GetProxySessionResponse)
+
+instance Prelude.NFData GetProxySessionResponse where
+  rnf GetProxySessionResponse' {..} =
+    Prelude.rnf proxySession
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetRetentionSettings.hs b/gen/Amazonka/Chime/GetRetentionSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetRetentionSettings.hs
@@ -0,0 +1,172 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetRetentionSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the retention settings for the specified Amazon Chime Enterprise
+-- account. For more information about retention settings, see
+-- <https://docs.aws.amazon.com/chime/latest/ag/chat-retention.html Managing Chat Retention Policies>
+-- in the /Amazon Chime Administration Guide/.
+module Amazonka.Chime.GetRetentionSettings
+  ( -- * Creating a Request
+    GetRetentionSettings (..),
+    newGetRetentionSettings,
+
+    -- * Request Lenses
+    getRetentionSettings_accountId,
+
+    -- * Destructuring the Response
+    GetRetentionSettingsResponse (..),
+    newGetRetentionSettingsResponse,
+
+    -- * Response Lenses
+    getRetentionSettingsResponse_initiateDeletionTimestamp,
+    getRetentionSettingsResponse_retentionSettings,
+    getRetentionSettingsResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetRetentionSettings' smart constructor.
+data GetRetentionSettings = GetRetentionSettings'
+  { -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetRetentionSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'getRetentionSettings_accountId' - The Amazon Chime account ID.
+newGetRetentionSettings ::
+  -- | 'accountId'
+  Prelude.Text ->
+  GetRetentionSettings
+newGetRetentionSettings pAccountId_ =
+  GetRetentionSettings' {accountId = pAccountId_}
+
+-- | The Amazon Chime account ID.
+getRetentionSettings_accountId :: Lens.Lens' GetRetentionSettings Prelude.Text
+getRetentionSettings_accountId = Lens.lens (\GetRetentionSettings' {accountId} -> accountId) (\s@GetRetentionSettings' {} a -> s {accountId = a} :: GetRetentionSettings)
+
+instance Core.AWSRequest GetRetentionSettings where
+  type
+    AWSResponse GetRetentionSettings =
+      GetRetentionSettingsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetRetentionSettingsResponse'
+            Prelude.<$> (x Data..?> "InitiateDeletionTimestamp")
+            Prelude.<*> (x Data..?> "RetentionSettings")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetRetentionSettings where
+  hashWithSalt _salt GetRetentionSettings' {..} =
+    _salt `Prelude.hashWithSalt` accountId
+
+instance Prelude.NFData GetRetentionSettings where
+  rnf GetRetentionSettings' {..} = Prelude.rnf accountId
+
+instance Data.ToHeaders GetRetentionSettings where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetRetentionSettings where
+  toPath GetRetentionSettings' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS accountId,
+        "/retention-settings"
+      ]
+
+instance Data.ToQuery GetRetentionSettings where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetRetentionSettingsResponse' smart constructor.
+data GetRetentionSettingsResponse = GetRetentionSettingsResponse'
+  { -- | The timestamp representing the time at which the specified items are
+    -- permanently deleted, in ISO 8601 format.
+    initiateDeletionTimestamp :: Prelude.Maybe Data.ISO8601,
+    -- | The retention settings.
+    retentionSettings :: Prelude.Maybe RetentionSettings,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetRetentionSettingsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'initiateDeletionTimestamp', 'getRetentionSettingsResponse_initiateDeletionTimestamp' - The timestamp representing the time at which the specified items are
+-- permanently deleted, in ISO 8601 format.
+--
+-- 'retentionSettings', 'getRetentionSettingsResponse_retentionSettings' - The retention settings.
+--
+-- 'httpStatus', 'getRetentionSettingsResponse_httpStatus' - The response's http status code.
+newGetRetentionSettingsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetRetentionSettingsResponse
+newGetRetentionSettingsResponse pHttpStatus_ =
+  GetRetentionSettingsResponse'
+    { initiateDeletionTimestamp =
+        Prelude.Nothing,
+      retentionSettings = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The timestamp representing the time at which the specified items are
+-- permanently deleted, in ISO 8601 format.
+getRetentionSettingsResponse_initiateDeletionTimestamp :: Lens.Lens' GetRetentionSettingsResponse (Prelude.Maybe Prelude.UTCTime)
+getRetentionSettingsResponse_initiateDeletionTimestamp = Lens.lens (\GetRetentionSettingsResponse' {initiateDeletionTimestamp} -> initiateDeletionTimestamp) (\s@GetRetentionSettingsResponse' {} a -> s {initiateDeletionTimestamp = a} :: GetRetentionSettingsResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The retention settings.
+getRetentionSettingsResponse_retentionSettings :: Lens.Lens' GetRetentionSettingsResponse (Prelude.Maybe RetentionSettings)
+getRetentionSettingsResponse_retentionSettings = Lens.lens (\GetRetentionSettingsResponse' {retentionSettings} -> retentionSettings) (\s@GetRetentionSettingsResponse' {} a -> s {retentionSettings = a} :: GetRetentionSettingsResponse)
+
+-- | The response's http status code.
+getRetentionSettingsResponse_httpStatus :: Lens.Lens' GetRetentionSettingsResponse Prelude.Int
+getRetentionSettingsResponse_httpStatus = Lens.lens (\GetRetentionSettingsResponse' {httpStatus} -> httpStatus) (\s@GetRetentionSettingsResponse' {} a -> s {httpStatus = a} :: GetRetentionSettingsResponse)
+
+instance Prelude.NFData GetRetentionSettingsResponse where
+  rnf GetRetentionSettingsResponse' {..} =
+    Prelude.rnf initiateDeletionTimestamp
+      `Prelude.seq` Prelude.rnf retentionSettings
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetRoom.hs b/gen/Amazonka/Chime/GetRoom.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetRoom.hs
@@ -0,0 +1,171 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetRoom
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves room details, such as the room name, for a room in an Amazon
+-- Chime Enterprise account.
+module Amazonka.Chime.GetRoom
+  ( -- * Creating a Request
+    GetRoom (..),
+    newGetRoom,
+
+    -- * Request Lenses
+    getRoom_accountId,
+    getRoom_roomId,
+
+    -- * Destructuring the Response
+    GetRoomResponse (..),
+    newGetRoomResponse,
+
+    -- * Response Lenses
+    getRoomResponse_room,
+    getRoomResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetRoom' smart constructor.
+data GetRoom = GetRoom'
+  { -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The room ID.
+    roomId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetRoom' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'getRoom_accountId' - The Amazon Chime account ID.
+--
+-- 'roomId', 'getRoom_roomId' - The room ID.
+newGetRoom ::
+  -- | 'accountId'
+  Prelude.Text ->
+  -- | 'roomId'
+  Prelude.Text ->
+  GetRoom
+newGetRoom pAccountId_ pRoomId_ =
+  GetRoom'
+    { accountId = pAccountId_,
+      roomId = pRoomId_
+    }
+
+-- | The Amazon Chime account ID.
+getRoom_accountId :: Lens.Lens' GetRoom Prelude.Text
+getRoom_accountId = Lens.lens (\GetRoom' {accountId} -> accountId) (\s@GetRoom' {} a -> s {accountId = a} :: GetRoom)
+
+-- | The room ID.
+getRoom_roomId :: Lens.Lens' GetRoom Prelude.Text
+getRoom_roomId = Lens.lens (\GetRoom' {roomId} -> roomId) (\s@GetRoom' {} a -> s {roomId = a} :: GetRoom)
+
+instance Core.AWSRequest GetRoom where
+  type AWSResponse GetRoom = GetRoomResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetRoomResponse'
+            Prelude.<$> (x Data..?> "Room")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetRoom where
+  hashWithSalt _salt GetRoom' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` roomId
+
+instance Prelude.NFData GetRoom where
+  rnf GetRoom' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf roomId
+
+instance Data.ToHeaders GetRoom where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetRoom where
+  toPath GetRoom' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS accountId,
+        "/rooms/",
+        Data.toBS roomId
+      ]
+
+instance Data.ToQuery GetRoom where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetRoomResponse' smart constructor.
+data GetRoomResponse = GetRoomResponse'
+  { -- | The room details.
+    room :: Prelude.Maybe Room,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetRoomResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'room', 'getRoomResponse_room' - The room details.
+--
+-- 'httpStatus', 'getRoomResponse_httpStatus' - The response's http status code.
+newGetRoomResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetRoomResponse
+newGetRoomResponse pHttpStatus_ =
+  GetRoomResponse'
+    { room = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The room details.
+getRoomResponse_room :: Lens.Lens' GetRoomResponse (Prelude.Maybe Room)
+getRoomResponse_room = Lens.lens (\GetRoomResponse' {room} -> room) (\s@GetRoomResponse' {} a -> s {room = a} :: GetRoomResponse)
+
+-- | The response's http status code.
+getRoomResponse_httpStatus :: Lens.Lens' GetRoomResponse Prelude.Int
+getRoomResponse_httpStatus = Lens.lens (\GetRoomResponse' {httpStatus} -> httpStatus) (\s@GetRoomResponse' {} a -> s {httpStatus = a} :: GetRoomResponse)
+
+instance Prelude.NFData GetRoomResponse where
+  rnf GetRoomResponse' {..} =
+    Prelude.rnf room
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetSipMediaApplication.hs b/gen/Amazonka/Chime/GetSipMediaApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetSipMediaApplication.hs
@@ -0,0 +1,161 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetSipMediaApplication
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves the information for a SIP media application, including name,
+-- AWS Region, and endpoints.
+module Amazonka.Chime.GetSipMediaApplication
+  ( -- * Creating a Request
+    GetSipMediaApplication (..),
+    newGetSipMediaApplication,
+
+    -- * Request Lenses
+    getSipMediaApplication_sipMediaApplicationId,
+
+    -- * Destructuring the Response
+    GetSipMediaApplicationResponse (..),
+    newGetSipMediaApplicationResponse,
+
+    -- * Response Lenses
+    getSipMediaApplicationResponse_sipMediaApplication,
+    getSipMediaApplicationResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetSipMediaApplication' smart constructor.
+data GetSipMediaApplication = GetSipMediaApplication'
+  { -- | The SIP media application ID.
+    sipMediaApplicationId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetSipMediaApplication' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sipMediaApplicationId', 'getSipMediaApplication_sipMediaApplicationId' - The SIP media application ID.
+newGetSipMediaApplication ::
+  -- | 'sipMediaApplicationId'
+  Prelude.Text ->
+  GetSipMediaApplication
+newGetSipMediaApplication pSipMediaApplicationId_ =
+  GetSipMediaApplication'
+    { sipMediaApplicationId =
+        pSipMediaApplicationId_
+    }
+
+-- | The SIP media application ID.
+getSipMediaApplication_sipMediaApplicationId :: Lens.Lens' GetSipMediaApplication Prelude.Text
+getSipMediaApplication_sipMediaApplicationId = Lens.lens (\GetSipMediaApplication' {sipMediaApplicationId} -> sipMediaApplicationId) (\s@GetSipMediaApplication' {} a -> s {sipMediaApplicationId = a} :: GetSipMediaApplication)
+
+instance Core.AWSRequest GetSipMediaApplication where
+  type
+    AWSResponse GetSipMediaApplication =
+      GetSipMediaApplicationResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetSipMediaApplicationResponse'
+            Prelude.<$> (x Data..?> "SipMediaApplication")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetSipMediaApplication where
+  hashWithSalt _salt GetSipMediaApplication' {..} =
+    _salt `Prelude.hashWithSalt` sipMediaApplicationId
+
+instance Prelude.NFData GetSipMediaApplication where
+  rnf GetSipMediaApplication' {..} =
+    Prelude.rnf sipMediaApplicationId
+
+instance Data.ToHeaders GetSipMediaApplication where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetSipMediaApplication where
+  toPath GetSipMediaApplication' {..} =
+    Prelude.mconcat
+      [ "/sip-media-applications/",
+        Data.toBS sipMediaApplicationId
+      ]
+
+instance Data.ToQuery GetSipMediaApplication where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetSipMediaApplicationResponse' smart constructor.
+data GetSipMediaApplicationResponse = GetSipMediaApplicationResponse'
+  { -- | The SIP media application details.
+    sipMediaApplication :: Prelude.Maybe SipMediaApplication,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetSipMediaApplicationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sipMediaApplication', 'getSipMediaApplicationResponse_sipMediaApplication' - The SIP media application details.
+--
+-- 'httpStatus', 'getSipMediaApplicationResponse_httpStatus' - The response's http status code.
+newGetSipMediaApplicationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetSipMediaApplicationResponse
+newGetSipMediaApplicationResponse pHttpStatus_ =
+  GetSipMediaApplicationResponse'
+    { sipMediaApplication =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The SIP media application details.
+getSipMediaApplicationResponse_sipMediaApplication :: Lens.Lens' GetSipMediaApplicationResponse (Prelude.Maybe SipMediaApplication)
+getSipMediaApplicationResponse_sipMediaApplication = Lens.lens (\GetSipMediaApplicationResponse' {sipMediaApplication} -> sipMediaApplication) (\s@GetSipMediaApplicationResponse' {} a -> s {sipMediaApplication = a} :: GetSipMediaApplicationResponse)
+
+-- | The response's http status code.
+getSipMediaApplicationResponse_httpStatus :: Lens.Lens' GetSipMediaApplicationResponse Prelude.Int
+getSipMediaApplicationResponse_httpStatus = Lens.lens (\GetSipMediaApplicationResponse' {httpStatus} -> httpStatus) (\s@GetSipMediaApplicationResponse' {} a -> s {httpStatus = a} :: GetSipMediaApplicationResponse)
+
+instance
+  Prelude.NFData
+    GetSipMediaApplicationResponse
+  where
+  rnf GetSipMediaApplicationResponse' {..} =
+    Prelude.rnf sipMediaApplication
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetSipMediaApplicationLoggingConfiguration.hs b/gen/Amazonka/Chime/GetSipMediaApplicationLoggingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetSipMediaApplicationLoggingConfiguration.hs
@@ -0,0 +1,190 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetSipMediaApplicationLoggingConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the logging configuration for the specified SIP media
+-- application.
+module Amazonka.Chime.GetSipMediaApplicationLoggingConfiguration
+  ( -- * Creating a Request
+    GetSipMediaApplicationLoggingConfiguration (..),
+    newGetSipMediaApplicationLoggingConfiguration,
+
+    -- * Request Lenses
+    getSipMediaApplicationLoggingConfiguration_sipMediaApplicationId,
+
+    -- * Destructuring the Response
+    GetSipMediaApplicationLoggingConfigurationResponse (..),
+    newGetSipMediaApplicationLoggingConfigurationResponse,
+
+    -- * Response Lenses
+    getSipMediaApplicationLoggingConfigurationResponse_sipMediaApplicationLoggingConfiguration,
+    getSipMediaApplicationLoggingConfigurationResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetSipMediaApplicationLoggingConfiguration' smart constructor.
+data GetSipMediaApplicationLoggingConfiguration = GetSipMediaApplicationLoggingConfiguration'
+  { -- | The SIP media application ID.
+    sipMediaApplicationId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetSipMediaApplicationLoggingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sipMediaApplicationId', 'getSipMediaApplicationLoggingConfiguration_sipMediaApplicationId' - The SIP media application ID.
+newGetSipMediaApplicationLoggingConfiguration ::
+  -- | 'sipMediaApplicationId'
+  Prelude.Text ->
+  GetSipMediaApplicationLoggingConfiguration
+newGetSipMediaApplicationLoggingConfiguration
+  pSipMediaApplicationId_ =
+    GetSipMediaApplicationLoggingConfiguration'
+      { sipMediaApplicationId =
+          pSipMediaApplicationId_
+      }
+
+-- | The SIP media application ID.
+getSipMediaApplicationLoggingConfiguration_sipMediaApplicationId :: Lens.Lens' GetSipMediaApplicationLoggingConfiguration Prelude.Text
+getSipMediaApplicationLoggingConfiguration_sipMediaApplicationId = Lens.lens (\GetSipMediaApplicationLoggingConfiguration' {sipMediaApplicationId} -> sipMediaApplicationId) (\s@GetSipMediaApplicationLoggingConfiguration' {} a -> s {sipMediaApplicationId = a} :: GetSipMediaApplicationLoggingConfiguration)
+
+instance
+  Core.AWSRequest
+    GetSipMediaApplicationLoggingConfiguration
+  where
+  type
+    AWSResponse
+      GetSipMediaApplicationLoggingConfiguration =
+      GetSipMediaApplicationLoggingConfigurationResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetSipMediaApplicationLoggingConfigurationResponse'
+            Prelude.<$> ( x
+                            Data..?> "SipMediaApplicationLoggingConfiguration"
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    GetSipMediaApplicationLoggingConfiguration
+  where
+  hashWithSalt
+    _salt
+    GetSipMediaApplicationLoggingConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` sipMediaApplicationId
+
+instance
+  Prelude.NFData
+    GetSipMediaApplicationLoggingConfiguration
+  where
+  rnf GetSipMediaApplicationLoggingConfiguration' {..} =
+    Prelude.rnf sipMediaApplicationId
+
+instance
+  Data.ToHeaders
+    GetSipMediaApplicationLoggingConfiguration
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    GetSipMediaApplicationLoggingConfiguration
+  where
+  toPath
+    GetSipMediaApplicationLoggingConfiguration' {..} =
+      Prelude.mconcat
+        [ "/sip-media-applications/",
+          Data.toBS sipMediaApplicationId,
+          "/logging-configuration"
+        ]
+
+instance
+  Data.ToQuery
+    GetSipMediaApplicationLoggingConfiguration
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetSipMediaApplicationLoggingConfigurationResponse' smart constructor.
+data GetSipMediaApplicationLoggingConfigurationResponse = GetSipMediaApplicationLoggingConfigurationResponse'
+  { -- | The actual logging configuration.
+    sipMediaApplicationLoggingConfiguration :: Prelude.Maybe SipMediaApplicationLoggingConfiguration,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetSipMediaApplicationLoggingConfigurationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sipMediaApplicationLoggingConfiguration', 'getSipMediaApplicationLoggingConfigurationResponse_sipMediaApplicationLoggingConfiguration' - The actual logging configuration.
+--
+-- 'httpStatus', 'getSipMediaApplicationLoggingConfigurationResponse_httpStatus' - The response's http status code.
+newGetSipMediaApplicationLoggingConfigurationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetSipMediaApplicationLoggingConfigurationResponse
+newGetSipMediaApplicationLoggingConfigurationResponse
+  pHttpStatus_ =
+    GetSipMediaApplicationLoggingConfigurationResponse'
+      { sipMediaApplicationLoggingConfiguration =
+          Prelude.Nothing,
+        httpStatus =
+          pHttpStatus_
+      }
+
+-- | The actual logging configuration.
+getSipMediaApplicationLoggingConfigurationResponse_sipMediaApplicationLoggingConfiguration :: Lens.Lens' GetSipMediaApplicationLoggingConfigurationResponse (Prelude.Maybe SipMediaApplicationLoggingConfiguration)
+getSipMediaApplicationLoggingConfigurationResponse_sipMediaApplicationLoggingConfiguration = Lens.lens (\GetSipMediaApplicationLoggingConfigurationResponse' {sipMediaApplicationLoggingConfiguration} -> sipMediaApplicationLoggingConfiguration) (\s@GetSipMediaApplicationLoggingConfigurationResponse' {} a -> s {sipMediaApplicationLoggingConfiguration = a} :: GetSipMediaApplicationLoggingConfigurationResponse)
+
+-- | The response's http status code.
+getSipMediaApplicationLoggingConfigurationResponse_httpStatus :: Lens.Lens' GetSipMediaApplicationLoggingConfigurationResponse Prelude.Int
+getSipMediaApplicationLoggingConfigurationResponse_httpStatus = Lens.lens (\GetSipMediaApplicationLoggingConfigurationResponse' {httpStatus} -> httpStatus) (\s@GetSipMediaApplicationLoggingConfigurationResponse' {} a -> s {httpStatus = a} :: GetSipMediaApplicationLoggingConfigurationResponse)
+
+instance
+  Prelude.NFData
+    GetSipMediaApplicationLoggingConfigurationResponse
+  where
+  rnf
+    GetSipMediaApplicationLoggingConfigurationResponse' {..} =
+      Prelude.rnf sipMediaApplicationLoggingConfiguration
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetSipRule.hs b/gen/Amazonka/Chime/GetSipRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetSipRule.hs
@@ -0,0 +1,149 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetSipRule
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves the details of a SIP rule, such as the rule ID, name,
+-- triggers, and target endpoints.
+module Amazonka.Chime.GetSipRule
+  ( -- * Creating a Request
+    GetSipRule (..),
+    newGetSipRule,
+
+    -- * Request Lenses
+    getSipRule_sipRuleId,
+
+    -- * Destructuring the Response
+    GetSipRuleResponse (..),
+    newGetSipRuleResponse,
+
+    -- * Response Lenses
+    getSipRuleResponse_sipRule,
+    getSipRuleResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetSipRule' smart constructor.
+data GetSipRule = GetSipRule'
+  { -- | The SIP rule ID.
+    sipRuleId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetSipRule' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sipRuleId', 'getSipRule_sipRuleId' - The SIP rule ID.
+newGetSipRule ::
+  -- | 'sipRuleId'
+  Prelude.Text ->
+  GetSipRule
+newGetSipRule pSipRuleId_ =
+  GetSipRule' {sipRuleId = pSipRuleId_}
+
+-- | The SIP rule ID.
+getSipRule_sipRuleId :: Lens.Lens' GetSipRule Prelude.Text
+getSipRule_sipRuleId = Lens.lens (\GetSipRule' {sipRuleId} -> sipRuleId) (\s@GetSipRule' {} a -> s {sipRuleId = a} :: GetSipRule)
+
+instance Core.AWSRequest GetSipRule where
+  type AWSResponse GetSipRule = GetSipRuleResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetSipRuleResponse'
+            Prelude.<$> (x Data..?> "SipRule")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetSipRule where
+  hashWithSalt _salt GetSipRule' {..} =
+    _salt `Prelude.hashWithSalt` sipRuleId
+
+instance Prelude.NFData GetSipRule where
+  rnf GetSipRule' {..} = Prelude.rnf sipRuleId
+
+instance Data.ToHeaders GetSipRule where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetSipRule where
+  toPath GetSipRule' {..} =
+    Prelude.mconcat
+      ["/sip-rules/", Data.toBS sipRuleId]
+
+instance Data.ToQuery GetSipRule where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetSipRuleResponse' smart constructor.
+data GetSipRuleResponse = GetSipRuleResponse'
+  { -- | The SIP rule details.
+    sipRule :: Prelude.Maybe SipRule,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetSipRuleResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sipRule', 'getSipRuleResponse_sipRule' - The SIP rule details.
+--
+-- 'httpStatus', 'getSipRuleResponse_httpStatus' - The response's http status code.
+newGetSipRuleResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetSipRuleResponse
+newGetSipRuleResponse pHttpStatus_ =
+  GetSipRuleResponse'
+    { sipRule = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The SIP rule details.
+getSipRuleResponse_sipRule :: Lens.Lens' GetSipRuleResponse (Prelude.Maybe SipRule)
+getSipRuleResponse_sipRule = Lens.lens (\GetSipRuleResponse' {sipRule} -> sipRule) (\s@GetSipRuleResponse' {} a -> s {sipRule = a} :: GetSipRuleResponse)
+
+-- | The response's http status code.
+getSipRuleResponse_httpStatus :: Lens.Lens' GetSipRuleResponse Prelude.Int
+getSipRuleResponse_httpStatus = Lens.lens (\GetSipRuleResponse' {httpStatus} -> httpStatus) (\s@GetSipRuleResponse' {} a -> s {httpStatus = a} :: GetSipRuleResponse)
+
+instance Prelude.NFData GetSipRuleResponse where
+  rnf GetSipRuleResponse' {..} =
+    Prelude.rnf sipRule
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetUser.hs b/gen/Amazonka/Chime/GetUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetUser.hs
@@ -0,0 +1,174 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves details for the specified user ID, such as primary email
+-- address, license type,and personal meeting PIN.
+--
+-- To retrieve user details with an email address instead of a user ID, use
+-- the ListUsers action, and then filter by email address.
+module Amazonka.Chime.GetUser
+  ( -- * Creating a Request
+    GetUser (..),
+    newGetUser,
+
+    -- * Request Lenses
+    getUser_accountId,
+    getUser_userId,
+
+    -- * Destructuring the Response
+    GetUserResponse (..),
+    newGetUserResponse,
+
+    -- * Response Lenses
+    getUserResponse_user,
+    getUserResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetUser' smart constructor.
+data GetUser = GetUser'
+  { -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The user ID.
+    userId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetUser' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'getUser_accountId' - The Amazon Chime account ID.
+--
+-- 'userId', 'getUser_userId' - The user ID.
+newGetUser ::
+  -- | 'accountId'
+  Prelude.Text ->
+  -- | 'userId'
+  Prelude.Text ->
+  GetUser
+newGetUser pAccountId_ pUserId_ =
+  GetUser'
+    { accountId = pAccountId_,
+      userId = pUserId_
+    }
+
+-- | The Amazon Chime account ID.
+getUser_accountId :: Lens.Lens' GetUser Prelude.Text
+getUser_accountId = Lens.lens (\GetUser' {accountId} -> accountId) (\s@GetUser' {} a -> s {accountId = a} :: GetUser)
+
+-- | The user ID.
+getUser_userId :: Lens.Lens' GetUser Prelude.Text
+getUser_userId = Lens.lens (\GetUser' {userId} -> userId) (\s@GetUser' {} a -> s {userId = a} :: GetUser)
+
+instance Core.AWSRequest GetUser where
+  type AWSResponse GetUser = GetUserResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetUserResponse'
+            Prelude.<$> (x Data..?> "User")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetUser where
+  hashWithSalt _salt GetUser' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` userId
+
+instance Prelude.NFData GetUser where
+  rnf GetUser' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf userId
+
+instance Data.ToHeaders GetUser where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetUser where
+  toPath GetUser' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS accountId,
+        "/users/",
+        Data.toBS userId
+      ]
+
+instance Data.ToQuery GetUser where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetUserResponse' smart constructor.
+data GetUserResponse = GetUserResponse'
+  { -- | The user details.
+    user :: Prelude.Maybe User,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetUserResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'user', 'getUserResponse_user' - The user details.
+--
+-- 'httpStatus', 'getUserResponse_httpStatus' - The response's http status code.
+newGetUserResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetUserResponse
+newGetUserResponse pHttpStatus_ =
+  GetUserResponse'
+    { user = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The user details.
+getUserResponse_user :: Lens.Lens' GetUserResponse (Prelude.Maybe User)
+getUserResponse_user = Lens.lens (\GetUserResponse' {user} -> user) (\s@GetUserResponse' {} a -> s {user = a} :: GetUserResponse)
+
+-- | The response's http status code.
+getUserResponse_httpStatus :: Lens.Lens' GetUserResponse Prelude.Int
+getUserResponse_httpStatus = Lens.lens (\GetUserResponse' {httpStatus} -> httpStatus) (\s@GetUserResponse' {} a -> s {httpStatus = a} :: GetUserResponse)
+
+instance Prelude.NFData GetUserResponse where
+  rnf GetUserResponse' {..} =
+    Prelude.rnf user
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetUserSettings.hs b/gen/Amazonka/Chime/GetUserSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetUserSettings.hs
@@ -0,0 +1,175 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetUserSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves settings for the specified user ID, such as any associated
+-- phone number settings.
+module Amazonka.Chime.GetUserSettings
+  ( -- * Creating a Request
+    GetUserSettings (..),
+    newGetUserSettings,
+
+    -- * Request Lenses
+    getUserSettings_accountId,
+    getUserSettings_userId,
+
+    -- * Destructuring the Response
+    GetUserSettingsResponse (..),
+    newGetUserSettingsResponse,
+
+    -- * Response Lenses
+    getUserSettingsResponse_userSettings,
+    getUserSettingsResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetUserSettings' smart constructor.
+data GetUserSettings = GetUserSettings'
+  { -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The user ID.
+    userId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetUserSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'getUserSettings_accountId' - The Amazon Chime account ID.
+--
+-- 'userId', 'getUserSettings_userId' - The user ID.
+newGetUserSettings ::
+  -- | 'accountId'
+  Prelude.Text ->
+  -- | 'userId'
+  Prelude.Text ->
+  GetUserSettings
+newGetUserSettings pAccountId_ pUserId_ =
+  GetUserSettings'
+    { accountId = pAccountId_,
+      userId = pUserId_
+    }
+
+-- | The Amazon Chime account ID.
+getUserSettings_accountId :: Lens.Lens' GetUserSettings Prelude.Text
+getUserSettings_accountId = Lens.lens (\GetUserSettings' {accountId} -> accountId) (\s@GetUserSettings' {} a -> s {accountId = a} :: GetUserSettings)
+
+-- | The user ID.
+getUserSettings_userId :: Lens.Lens' GetUserSettings Prelude.Text
+getUserSettings_userId = Lens.lens (\GetUserSettings' {userId} -> userId) (\s@GetUserSettings' {} a -> s {userId = a} :: GetUserSettings)
+
+instance Core.AWSRequest GetUserSettings where
+  type
+    AWSResponse GetUserSettings =
+      GetUserSettingsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetUserSettingsResponse'
+            Prelude.<$> (x Data..?> "UserSettings")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetUserSettings where
+  hashWithSalt _salt GetUserSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` userId
+
+instance Prelude.NFData GetUserSettings where
+  rnf GetUserSettings' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf userId
+
+instance Data.ToHeaders GetUserSettings where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetUserSettings where
+  toPath GetUserSettings' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS accountId,
+        "/users/",
+        Data.toBS userId,
+        "/settings"
+      ]
+
+instance Data.ToQuery GetUserSettings where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetUserSettingsResponse' smart constructor.
+data GetUserSettingsResponse = GetUserSettingsResponse'
+  { -- | The user settings.
+    userSettings :: Prelude.Maybe UserSettings,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetUserSettingsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'userSettings', 'getUserSettingsResponse_userSettings' - The user settings.
+--
+-- 'httpStatus', 'getUserSettingsResponse_httpStatus' - The response's http status code.
+newGetUserSettingsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetUserSettingsResponse
+newGetUserSettingsResponse pHttpStatus_ =
+  GetUserSettingsResponse'
+    { userSettings =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The user settings.
+getUserSettingsResponse_userSettings :: Lens.Lens' GetUserSettingsResponse (Prelude.Maybe UserSettings)
+getUserSettingsResponse_userSettings = Lens.lens (\GetUserSettingsResponse' {userSettings} -> userSettings) (\s@GetUserSettingsResponse' {} a -> s {userSettings = a} :: GetUserSettingsResponse)
+
+-- | The response's http status code.
+getUserSettingsResponse_httpStatus :: Lens.Lens' GetUserSettingsResponse Prelude.Int
+getUserSettingsResponse_httpStatus = Lens.lens (\GetUserSettingsResponse' {httpStatus} -> httpStatus) (\s@GetUserSettingsResponse' {} a -> s {httpStatus = a} :: GetUserSettingsResponse)
+
+instance Prelude.NFData GetUserSettingsResponse where
+  rnf GetUserSettingsResponse' {..} =
+    Prelude.rnf userSettings
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetVoiceConnector.hs b/gen/Amazonka/Chime/GetVoiceConnector.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetVoiceConnector.hs
@@ -0,0 +1,156 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetVoiceConnector
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves details for the specified Amazon Chime Voice Connector, such
+-- as timestamps,name, outbound host, and encryption requirements.
+module Amazonka.Chime.GetVoiceConnector
+  ( -- * Creating a Request
+    GetVoiceConnector (..),
+    newGetVoiceConnector,
+
+    -- * Request Lenses
+    getVoiceConnector_voiceConnectorId,
+
+    -- * Destructuring the Response
+    GetVoiceConnectorResponse (..),
+    newGetVoiceConnectorResponse,
+
+    -- * Response Lenses
+    getVoiceConnectorResponse_voiceConnector,
+    getVoiceConnectorResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetVoiceConnector' smart constructor.
+data GetVoiceConnector = GetVoiceConnector'
+  { -- | The Amazon Chime Voice Connector ID.
+    voiceConnectorId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetVoiceConnector' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorId', 'getVoiceConnector_voiceConnectorId' - The Amazon Chime Voice Connector ID.
+newGetVoiceConnector ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  GetVoiceConnector
+newGetVoiceConnector pVoiceConnectorId_ =
+  GetVoiceConnector'
+    { voiceConnectorId =
+        pVoiceConnectorId_
+    }
+
+-- | The Amazon Chime Voice Connector ID.
+getVoiceConnector_voiceConnectorId :: Lens.Lens' GetVoiceConnector Prelude.Text
+getVoiceConnector_voiceConnectorId = Lens.lens (\GetVoiceConnector' {voiceConnectorId} -> voiceConnectorId) (\s@GetVoiceConnector' {} a -> s {voiceConnectorId = a} :: GetVoiceConnector)
+
+instance Core.AWSRequest GetVoiceConnector where
+  type
+    AWSResponse GetVoiceConnector =
+      GetVoiceConnectorResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetVoiceConnectorResponse'
+            Prelude.<$> (x Data..?> "VoiceConnector")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetVoiceConnector where
+  hashWithSalt _salt GetVoiceConnector' {..} =
+    _salt `Prelude.hashWithSalt` voiceConnectorId
+
+instance Prelude.NFData GetVoiceConnector where
+  rnf GetVoiceConnector' {..} =
+    Prelude.rnf voiceConnectorId
+
+instance Data.ToHeaders GetVoiceConnector where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetVoiceConnector where
+  toPath GetVoiceConnector' {..} =
+    Prelude.mconcat
+      ["/voice-connectors/", Data.toBS voiceConnectorId]
+
+instance Data.ToQuery GetVoiceConnector where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetVoiceConnectorResponse' smart constructor.
+data GetVoiceConnectorResponse = GetVoiceConnectorResponse'
+  { -- | The Amazon Chime Voice Connector details.
+    voiceConnector :: Prelude.Maybe VoiceConnector,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetVoiceConnectorResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnector', 'getVoiceConnectorResponse_voiceConnector' - The Amazon Chime Voice Connector details.
+--
+-- 'httpStatus', 'getVoiceConnectorResponse_httpStatus' - The response's http status code.
+newGetVoiceConnectorResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetVoiceConnectorResponse
+newGetVoiceConnectorResponse pHttpStatus_ =
+  GetVoiceConnectorResponse'
+    { voiceConnector =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Chime Voice Connector details.
+getVoiceConnectorResponse_voiceConnector :: Lens.Lens' GetVoiceConnectorResponse (Prelude.Maybe VoiceConnector)
+getVoiceConnectorResponse_voiceConnector = Lens.lens (\GetVoiceConnectorResponse' {voiceConnector} -> voiceConnector) (\s@GetVoiceConnectorResponse' {} a -> s {voiceConnector = a} :: GetVoiceConnectorResponse)
+
+-- | The response's http status code.
+getVoiceConnectorResponse_httpStatus :: Lens.Lens' GetVoiceConnectorResponse Prelude.Int
+getVoiceConnectorResponse_httpStatus = Lens.lens (\GetVoiceConnectorResponse' {httpStatus} -> httpStatus) (\s@GetVoiceConnectorResponse' {} a -> s {httpStatus = a} :: GetVoiceConnectorResponse)
+
+instance Prelude.NFData GetVoiceConnectorResponse where
+  rnf GetVoiceConnectorResponse' {..} =
+    Prelude.rnf voiceConnector
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetVoiceConnectorEmergencyCallingConfiguration.hs b/gen/Amazonka/Chime/GetVoiceConnectorEmergencyCallingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetVoiceConnectorEmergencyCallingConfiguration.hs
@@ -0,0 +1,189 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetVoiceConnectorEmergencyCallingConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the emergency calling configuration details for the specified
+-- Amazon Chime Voice Connector.
+module Amazonka.Chime.GetVoiceConnectorEmergencyCallingConfiguration
+  ( -- * Creating a Request
+    GetVoiceConnectorEmergencyCallingConfiguration (..),
+    newGetVoiceConnectorEmergencyCallingConfiguration,
+
+    -- * Request Lenses
+    getVoiceConnectorEmergencyCallingConfiguration_voiceConnectorId,
+
+    -- * Destructuring the Response
+    GetVoiceConnectorEmergencyCallingConfigurationResponse (..),
+    newGetVoiceConnectorEmergencyCallingConfigurationResponse,
+
+    -- * Response Lenses
+    getVoiceConnectorEmergencyCallingConfigurationResponse_emergencyCallingConfiguration,
+    getVoiceConnectorEmergencyCallingConfigurationResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetVoiceConnectorEmergencyCallingConfiguration' smart constructor.
+data GetVoiceConnectorEmergencyCallingConfiguration = GetVoiceConnectorEmergencyCallingConfiguration'
+  { -- | The Amazon Chime Voice Connector ID.
+    voiceConnectorId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetVoiceConnectorEmergencyCallingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorId', 'getVoiceConnectorEmergencyCallingConfiguration_voiceConnectorId' - The Amazon Chime Voice Connector ID.
+newGetVoiceConnectorEmergencyCallingConfiguration ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  GetVoiceConnectorEmergencyCallingConfiguration
+newGetVoiceConnectorEmergencyCallingConfiguration
+  pVoiceConnectorId_ =
+    GetVoiceConnectorEmergencyCallingConfiguration'
+      { voiceConnectorId =
+          pVoiceConnectorId_
+      }
+
+-- | The Amazon Chime Voice Connector ID.
+getVoiceConnectorEmergencyCallingConfiguration_voiceConnectorId :: Lens.Lens' GetVoiceConnectorEmergencyCallingConfiguration Prelude.Text
+getVoiceConnectorEmergencyCallingConfiguration_voiceConnectorId = Lens.lens (\GetVoiceConnectorEmergencyCallingConfiguration' {voiceConnectorId} -> voiceConnectorId) (\s@GetVoiceConnectorEmergencyCallingConfiguration' {} a -> s {voiceConnectorId = a} :: GetVoiceConnectorEmergencyCallingConfiguration)
+
+instance
+  Core.AWSRequest
+    GetVoiceConnectorEmergencyCallingConfiguration
+  where
+  type
+    AWSResponse
+      GetVoiceConnectorEmergencyCallingConfiguration =
+      GetVoiceConnectorEmergencyCallingConfigurationResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetVoiceConnectorEmergencyCallingConfigurationResponse'
+            Prelude.<$> (x Data..?> "EmergencyCallingConfiguration")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    GetVoiceConnectorEmergencyCallingConfiguration
+  where
+  hashWithSalt
+    _salt
+    GetVoiceConnectorEmergencyCallingConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` voiceConnectorId
+
+instance
+  Prelude.NFData
+    GetVoiceConnectorEmergencyCallingConfiguration
+  where
+  rnf
+    GetVoiceConnectorEmergencyCallingConfiguration' {..} =
+      Prelude.rnf voiceConnectorId
+
+instance
+  Data.ToHeaders
+    GetVoiceConnectorEmergencyCallingConfiguration
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    GetVoiceConnectorEmergencyCallingConfiguration
+  where
+  toPath
+    GetVoiceConnectorEmergencyCallingConfiguration' {..} =
+      Prelude.mconcat
+        [ "/voice-connectors/",
+          Data.toBS voiceConnectorId,
+          "/emergency-calling-configuration"
+        ]
+
+instance
+  Data.ToQuery
+    GetVoiceConnectorEmergencyCallingConfiguration
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetVoiceConnectorEmergencyCallingConfigurationResponse' smart constructor.
+data GetVoiceConnectorEmergencyCallingConfigurationResponse = GetVoiceConnectorEmergencyCallingConfigurationResponse'
+  { -- | The emergency calling configuration details.
+    emergencyCallingConfiguration :: Prelude.Maybe EmergencyCallingConfiguration,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetVoiceConnectorEmergencyCallingConfigurationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'emergencyCallingConfiguration', 'getVoiceConnectorEmergencyCallingConfigurationResponse_emergencyCallingConfiguration' - The emergency calling configuration details.
+--
+-- 'httpStatus', 'getVoiceConnectorEmergencyCallingConfigurationResponse_httpStatus' - The response's http status code.
+newGetVoiceConnectorEmergencyCallingConfigurationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetVoiceConnectorEmergencyCallingConfigurationResponse
+newGetVoiceConnectorEmergencyCallingConfigurationResponse
+  pHttpStatus_ =
+    GetVoiceConnectorEmergencyCallingConfigurationResponse'
+      { emergencyCallingConfiguration =
+          Prelude.Nothing,
+        httpStatus =
+          pHttpStatus_
+      }
+
+-- | The emergency calling configuration details.
+getVoiceConnectorEmergencyCallingConfigurationResponse_emergencyCallingConfiguration :: Lens.Lens' GetVoiceConnectorEmergencyCallingConfigurationResponse (Prelude.Maybe EmergencyCallingConfiguration)
+getVoiceConnectorEmergencyCallingConfigurationResponse_emergencyCallingConfiguration = Lens.lens (\GetVoiceConnectorEmergencyCallingConfigurationResponse' {emergencyCallingConfiguration} -> emergencyCallingConfiguration) (\s@GetVoiceConnectorEmergencyCallingConfigurationResponse' {} a -> s {emergencyCallingConfiguration = a} :: GetVoiceConnectorEmergencyCallingConfigurationResponse)
+
+-- | The response's http status code.
+getVoiceConnectorEmergencyCallingConfigurationResponse_httpStatus :: Lens.Lens' GetVoiceConnectorEmergencyCallingConfigurationResponse Prelude.Int
+getVoiceConnectorEmergencyCallingConfigurationResponse_httpStatus = Lens.lens (\GetVoiceConnectorEmergencyCallingConfigurationResponse' {httpStatus} -> httpStatus) (\s@GetVoiceConnectorEmergencyCallingConfigurationResponse' {} a -> s {httpStatus = a} :: GetVoiceConnectorEmergencyCallingConfigurationResponse)
+
+instance
+  Prelude.NFData
+    GetVoiceConnectorEmergencyCallingConfigurationResponse
+  where
+  rnf
+    GetVoiceConnectorEmergencyCallingConfigurationResponse' {..} =
+      Prelude.rnf emergencyCallingConfiguration
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetVoiceConnectorGroup.hs b/gen/Amazonka/Chime/GetVoiceConnectorGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetVoiceConnectorGroup.hs
@@ -0,0 +1,161 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetVoiceConnectorGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves details for the specified Amazon Chime Voice Connector group,
+-- such as timestamps,name, and associated @VoiceConnectorItems@.
+module Amazonka.Chime.GetVoiceConnectorGroup
+  ( -- * Creating a Request
+    GetVoiceConnectorGroup (..),
+    newGetVoiceConnectorGroup,
+
+    -- * Request Lenses
+    getVoiceConnectorGroup_voiceConnectorGroupId,
+
+    -- * Destructuring the Response
+    GetVoiceConnectorGroupResponse (..),
+    newGetVoiceConnectorGroupResponse,
+
+    -- * Response Lenses
+    getVoiceConnectorGroupResponse_voiceConnectorGroup,
+    getVoiceConnectorGroupResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetVoiceConnectorGroup' smart constructor.
+data GetVoiceConnectorGroup = GetVoiceConnectorGroup'
+  { -- | The Amazon Chime Voice Connector group ID.
+    voiceConnectorGroupId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetVoiceConnectorGroup' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorGroupId', 'getVoiceConnectorGroup_voiceConnectorGroupId' - The Amazon Chime Voice Connector group ID.
+newGetVoiceConnectorGroup ::
+  -- | 'voiceConnectorGroupId'
+  Prelude.Text ->
+  GetVoiceConnectorGroup
+newGetVoiceConnectorGroup pVoiceConnectorGroupId_ =
+  GetVoiceConnectorGroup'
+    { voiceConnectorGroupId =
+        pVoiceConnectorGroupId_
+    }
+
+-- | The Amazon Chime Voice Connector group ID.
+getVoiceConnectorGroup_voiceConnectorGroupId :: Lens.Lens' GetVoiceConnectorGroup Prelude.Text
+getVoiceConnectorGroup_voiceConnectorGroupId = Lens.lens (\GetVoiceConnectorGroup' {voiceConnectorGroupId} -> voiceConnectorGroupId) (\s@GetVoiceConnectorGroup' {} a -> s {voiceConnectorGroupId = a} :: GetVoiceConnectorGroup)
+
+instance Core.AWSRequest GetVoiceConnectorGroup where
+  type
+    AWSResponse GetVoiceConnectorGroup =
+      GetVoiceConnectorGroupResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetVoiceConnectorGroupResponse'
+            Prelude.<$> (x Data..?> "VoiceConnectorGroup")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetVoiceConnectorGroup where
+  hashWithSalt _salt GetVoiceConnectorGroup' {..} =
+    _salt `Prelude.hashWithSalt` voiceConnectorGroupId
+
+instance Prelude.NFData GetVoiceConnectorGroup where
+  rnf GetVoiceConnectorGroup' {..} =
+    Prelude.rnf voiceConnectorGroupId
+
+instance Data.ToHeaders GetVoiceConnectorGroup where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetVoiceConnectorGroup where
+  toPath GetVoiceConnectorGroup' {..} =
+    Prelude.mconcat
+      [ "/voice-connector-groups/",
+        Data.toBS voiceConnectorGroupId
+      ]
+
+instance Data.ToQuery GetVoiceConnectorGroup where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetVoiceConnectorGroupResponse' smart constructor.
+data GetVoiceConnectorGroupResponse = GetVoiceConnectorGroupResponse'
+  { -- | The Amazon Chime Voice Connector group details.
+    voiceConnectorGroup :: Prelude.Maybe VoiceConnectorGroup,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetVoiceConnectorGroupResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorGroup', 'getVoiceConnectorGroupResponse_voiceConnectorGroup' - The Amazon Chime Voice Connector group details.
+--
+-- 'httpStatus', 'getVoiceConnectorGroupResponse_httpStatus' - The response's http status code.
+newGetVoiceConnectorGroupResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetVoiceConnectorGroupResponse
+newGetVoiceConnectorGroupResponse pHttpStatus_ =
+  GetVoiceConnectorGroupResponse'
+    { voiceConnectorGroup =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Chime Voice Connector group details.
+getVoiceConnectorGroupResponse_voiceConnectorGroup :: Lens.Lens' GetVoiceConnectorGroupResponse (Prelude.Maybe VoiceConnectorGroup)
+getVoiceConnectorGroupResponse_voiceConnectorGroup = Lens.lens (\GetVoiceConnectorGroupResponse' {voiceConnectorGroup} -> voiceConnectorGroup) (\s@GetVoiceConnectorGroupResponse' {} a -> s {voiceConnectorGroup = a} :: GetVoiceConnectorGroupResponse)
+
+-- | The response's http status code.
+getVoiceConnectorGroupResponse_httpStatus :: Lens.Lens' GetVoiceConnectorGroupResponse Prelude.Int
+getVoiceConnectorGroupResponse_httpStatus = Lens.lens (\GetVoiceConnectorGroupResponse' {httpStatus} -> httpStatus) (\s@GetVoiceConnectorGroupResponse' {} a -> s {httpStatus = a} :: GetVoiceConnectorGroupResponse)
+
+instance
+  Prelude.NFData
+    GetVoiceConnectorGroupResponse
+  where
+  rnf GetVoiceConnectorGroupResponse' {..} =
+    Prelude.rnf voiceConnectorGroup
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetVoiceConnectorLoggingConfiguration.hs b/gen/Amazonka/Chime/GetVoiceConnectorLoggingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetVoiceConnectorLoggingConfiguration.hs
@@ -0,0 +1,187 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetVoiceConnectorLoggingConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves the logging configuration details for the specified Amazon
+-- Chime Voice Connector. Shows whether SIP message logs are enabled for
+-- sending to Amazon CloudWatch Logs.
+module Amazonka.Chime.GetVoiceConnectorLoggingConfiguration
+  ( -- * Creating a Request
+    GetVoiceConnectorLoggingConfiguration (..),
+    newGetVoiceConnectorLoggingConfiguration,
+
+    -- * Request Lenses
+    getVoiceConnectorLoggingConfiguration_voiceConnectorId,
+
+    -- * Destructuring the Response
+    GetVoiceConnectorLoggingConfigurationResponse (..),
+    newGetVoiceConnectorLoggingConfigurationResponse,
+
+    -- * Response Lenses
+    getVoiceConnectorLoggingConfigurationResponse_loggingConfiguration,
+    getVoiceConnectorLoggingConfigurationResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetVoiceConnectorLoggingConfiguration' smart constructor.
+data GetVoiceConnectorLoggingConfiguration = GetVoiceConnectorLoggingConfiguration'
+  { -- | The Amazon Chime Voice Connector ID.
+    voiceConnectorId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetVoiceConnectorLoggingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorId', 'getVoiceConnectorLoggingConfiguration_voiceConnectorId' - The Amazon Chime Voice Connector ID.
+newGetVoiceConnectorLoggingConfiguration ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  GetVoiceConnectorLoggingConfiguration
+newGetVoiceConnectorLoggingConfiguration
+  pVoiceConnectorId_ =
+    GetVoiceConnectorLoggingConfiguration'
+      { voiceConnectorId =
+          pVoiceConnectorId_
+      }
+
+-- | The Amazon Chime Voice Connector ID.
+getVoiceConnectorLoggingConfiguration_voiceConnectorId :: Lens.Lens' GetVoiceConnectorLoggingConfiguration Prelude.Text
+getVoiceConnectorLoggingConfiguration_voiceConnectorId = Lens.lens (\GetVoiceConnectorLoggingConfiguration' {voiceConnectorId} -> voiceConnectorId) (\s@GetVoiceConnectorLoggingConfiguration' {} a -> s {voiceConnectorId = a} :: GetVoiceConnectorLoggingConfiguration)
+
+instance
+  Core.AWSRequest
+    GetVoiceConnectorLoggingConfiguration
+  where
+  type
+    AWSResponse
+      GetVoiceConnectorLoggingConfiguration =
+      GetVoiceConnectorLoggingConfigurationResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetVoiceConnectorLoggingConfigurationResponse'
+            Prelude.<$> (x Data..?> "LoggingConfiguration")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    GetVoiceConnectorLoggingConfiguration
+  where
+  hashWithSalt
+    _salt
+    GetVoiceConnectorLoggingConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` voiceConnectorId
+
+instance
+  Prelude.NFData
+    GetVoiceConnectorLoggingConfiguration
+  where
+  rnf GetVoiceConnectorLoggingConfiguration' {..} =
+    Prelude.rnf voiceConnectorId
+
+instance
+  Data.ToHeaders
+    GetVoiceConnectorLoggingConfiguration
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    GetVoiceConnectorLoggingConfiguration
+  where
+  toPath GetVoiceConnectorLoggingConfiguration' {..} =
+    Prelude.mconcat
+      [ "/voice-connectors/",
+        Data.toBS voiceConnectorId,
+        "/logging-configuration"
+      ]
+
+instance
+  Data.ToQuery
+    GetVoiceConnectorLoggingConfiguration
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetVoiceConnectorLoggingConfigurationResponse' smart constructor.
+data GetVoiceConnectorLoggingConfigurationResponse = GetVoiceConnectorLoggingConfigurationResponse'
+  { -- | The logging configuration details.
+    loggingConfiguration :: Prelude.Maybe LoggingConfiguration,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetVoiceConnectorLoggingConfigurationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'loggingConfiguration', 'getVoiceConnectorLoggingConfigurationResponse_loggingConfiguration' - The logging configuration details.
+--
+-- 'httpStatus', 'getVoiceConnectorLoggingConfigurationResponse_httpStatus' - The response's http status code.
+newGetVoiceConnectorLoggingConfigurationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetVoiceConnectorLoggingConfigurationResponse
+newGetVoiceConnectorLoggingConfigurationResponse
+  pHttpStatus_ =
+    GetVoiceConnectorLoggingConfigurationResponse'
+      { loggingConfiguration =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The logging configuration details.
+getVoiceConnectorLoggingConfigurationResponse_loggingConfiguration :: Lens.Lens' GetVoiceConnectorLoggingConfigurationResponse (Prelude.Maybe LoggingConfiguration)
+getVoiceConnectorLoggingConfigurationResponse_loggingConfiguration = Lens.lens (\GetVoiceConnectorLoggingConfigurationResponse' {loggingConfiguration} -> loggingConfiguration) (\s@GetVoiceConnectorLoggingConfigurationResponse' {} a -> s {loggingConfiguration = a} :: GetVoiceConnectorLoggingConfigurationResponse)
+
+-- | The response's http status code.
+getVoiceConnectorLoggingConfigurationResponse_httpStatus :: Lens.Lens' GetVoiceConnectorLoggingConfigurationResponse Prelude.Int
+getVoiceConnectorLoggingConfigurationResponse_httpStatus = Lens.lens (\GetVoiceConnectorLoggingConfigurationResponse' {httpStatus} -> httpStatus) (\s@GetVoiceConnectorLoggingConfigurationResponse' {} a -> s {httpStatus = a} :: GetVoiceConnectorLoggingConfigurationResponse)
+
+instance
+  Prelude.NFData
+    GetVoiceConnectorLoggingConfigurationResponse
+  where
+  rnf
+    GetVoiceConnectorLoggingConfigurationResponse' {..} =
+      Prelude.rnf loggingConfiguration
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetVoiceConnectorOrigination.hs b/gen/Amazonka/Chime/GetVoiceConnectorOrigination.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetVoiceConnectorOrigination.hs
@@ -0,0 +1,165 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetVoiceConnectorOrigination
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves origination setting details for the specified Amazon Chime
+-- Voice Connector.
+module Amazonka.Chime.GetVoiceConnectorOrigination
+  ( -- * Creating a Request
+    GetVoiceConnectorOrigination (..),
+    newGetVoiceConnectorOrigination,
+
+    -- * Request Lenses
+    getVoiceConnectorOrigination_voiceConnectorId,
+
+    -- * Destructuring the Response
+    GetVoiceConnectorOriginationResponse (..),
+    newGetVoiceConnectorOriginationResponse,
+
+    -- * Response Lenses
+    getVoiceConnectorOriginationResponse_origination,
+    getVoiceConnectorOriginationResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetVoiceConnectorOrigination' smart constructor.
+data GetVoiceConnectorOrigination = GetVoiceConnectorOrigination'
+  { -- | The Amazon Chime Voice Connector ID.
+    voiceConnectorId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetVoiceConnectorOrigination' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorId', 'getVoiceConnectorOrigination_voiceConnectorId' - The Amazon Chime Voice Connector ID.
+newGetVoiceConnectorOrigination ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  GetVoiceConnectorOrigination
+newGetVoiceConnectorOrigination pVoiceConnectorId_ =
+  GetVoiceConnectorOrigination'
+    { voiceConnectorId =
+        pVoiceConnectorId_
+    }
+
+-- | The Amazon Chime Voice Connector ID.
+getVoiceConnectorOrigination_voiceConnectorId :: Lens.Lens' GetVoiceConnectorOrigination Prelude.Text
+getVoiceConnectorOrigination_voiceConnectorId = Lens.lens (\GetVoiceConnectorOrigination' {voiceConnectorId} -> voiceConnectorId) (\s@GetVoiceConnectorOrigination' {} a -> s {voiceConnectorId = a} :: GetVoiceConnectorOrigination)
+
+instance Core.AWSRequest GetVoiceConnectorOrigination where
+  type
+    AWSResponse GetVoiceConnectorOrigination =
+      GetVoiceConnectorOriginationResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetVoiceConnectorOriginationResponse'
+            Prelude.<$> (x Data..?> "Origination")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    GetVoiceConnectorOrigination
+  where
+  hashWithSalt _salt GetVoiceConnectorOrigination' {..} =
+    _salt `Prelude.hashWithSalt` voiceConnectorId
+
+instance Prelude.NFData GetVoiceConnectorOrigination where
+  rnf GetVoiceConnectorOrigination' {..} =
+    Prelude.rnf voiceConnectorId
+
+instance Data.ToHeaders GetVoiceConnectorOrigination where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetVoiceConnectorOrigination where
+  toPath GetVoiceConnectorOrigination' {..} =
+    Prelude.mconcat
+      [ "/voice-connectors/",
+        Data.toBS voiceConnectorId,
+        "/origination"
+      ]
+
+instance Data.ToQuery GetVoiceConnectorOrigination where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetVoiceConnectorOriginationResponse' smart constructor.
+data GetVoiceConnectorOriginationResponse = GetVoiceConnectorOriginationResponse'
+  { -- | The origination setting details.
+    origination :: Prelude.Maybe Origination,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetVoiceConnectorOriginationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'origination', 'getVoiceConnectorOriginationResponse_origination' - The origination setting details.
+--
+-- 'httpStatus', 'getVoiceConnectorOriginationResponse_httpStatus' - The response's http status code.
+newGetVoiceConnectorOriginationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetVoiceConnectorOriginationResponse
+newGetVoiceConnectorOriginationResponse pHttpStatus_ =
+  GetVoiceConnectorOriginationResponse'
+    { origination =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The origination setting details.
+getVoiceConnectorOriginationResponse_origination :: Lens.Lens' GetVoiceConnectorOriginationResponse (Prelude.Maybe Origination)
+getVoiceConnectorOriginationResponse_origination = Lens.lens (\GetVoiceConnectorOriginationResponse' {origination} -> origination) (\s@GetVoiceConnectorOriginationResponse' {} a -> s {origination = a} :: GetVoiceConnectorOriginationResponse)
+
+-- | The response's http status code.
+getVoiceConnectorOriginationResponse_httpStatus :: Lens.Lens' GetVoiceConnectorOriginationResponse Prelude.Int
+getVoiceConnectorOriginationResponse_httpStatus = Lens.lens (\GetVoiceConnectorOriginationResponse' {httpStatus} -> httpStatus) (\s@GetVoiceConnectorOriginationResponse' {} a -> s {httpStatus = a} :: GetVoiceConnectorOriginationResponse)
+
+instance
+  Prelude.NFData
+    GetVoiceConnectorOriginationResponse
+  where
+  rnf GetVoiceConnectorOriginationResponse' {..} =
+    Prelude.rnf origination
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetVoiceConnectorProxy.hs b/gen/Amazonka/Chime/GetVoiceConnectorProxy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetVoiceConnectorProxy.hs
@@ -0,0 +1,162 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetVoiceConnectorProxy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the proxy configuration details for the specified Amazon Chime
+-- Voice Connector.
+module Amazonka.Chime.GetVoiceConnectorProxy
+  ( -- * Creating a Request
+    GetVoiceConnectorProxy (..),
+    newGetVoiceConnectorProxy,
+
+    -- * Request Lenses
+    getVoiceConnectorProxy_voiceConnectorId,
+
+    -- * Destructuring the Response
+    GetVoiceConnectorProxyResponse (..),
+    newGetVoiceConnectorProxyResponse,
+
+    -- * Response Lenses
+    getVoiceConnectorProxyResponse_proxy,
+    getVoiceConnectorProxyResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetVoiceConnectorProxy' smart constructor.
+data GetVoiceConnectorProxy = GetVoiceConnectorProxy'
+  { -- | The Amazon Chime voice connector ID.
+    voiceConnectorId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetVoiceConnectorProxy' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorId', 'getVoiceConnectorProxy_voiceConnectorId' - The Amazon Chime voice connector ID.
+newGetVoiceConnectorProxy ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  GetVoiceConnectorProxy
+newGetVoiceConnectorProxy pVoiceConnectorId_ =
+  GetVoiceConnectorProxy'
+    { voiceConnectorId =
+        pVoiceConnectorId_
+    }
+
+-- | The Amazon Chime voice connector ID.
+getVoiceConnectorProxy_voiceConnectorId :: Lens.Lens' GetVoiceConnectorProxy Prelude.Text
+getVoiceConnectorProxy_voiceConnectorId = Lens.lens (\GetVoiceConnectorProxy' {voiceConnectorId} -> voiceConnectorId) (\s@GetVoiceConnectorProxy' {} a -> s {voiceConnectorId = a} :: GetVoiceConnectorProxy)
+
+instance Core.AWSRequest GetVoiceConnectorProxy where
+  type
+    AWSResponse GetVoiceConnectorProxy =
+      GetVoiceConnectorProxyResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetVoiceConnectorProxyResponse'
+            Prelude.<$> (x Data..?> "Proxy")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetVoiceConnectorProxy where
+  hashWithSalt _salt GetVoiceConnectorProxy' {..} =
+    _salt `Prelude.hashWithSalt` voiceConnectorId
+
+instance Prelude.NFData GetVoiceConnectorProxy where
+  rnf GetVoiceConnectorProxy' {..} =
+    Prelude.rnf voiceConnectorId
+
+instance Data.ToHeaders GetVoiceConnectorProxy where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetVoiceConnectorProxy where
+  toPath GetVoiceConnectorProxy' {..} =
+    Prelude.mconcat
+      [ "/voice-connectors/",
+        Data.toBS voiceConnectorId,
+        "/programmable-numbers/proxy"
+      ]
+
+instance Data.ToQuery GetVoiceConnectorProxy where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetVoiceConnectorProxyResponse' smart constructor.
+data GetVoiceConnectorProxyResponse = GetVoiceConnectorProxyResponse'
+  { -- | The proxy configuration details.
+    proxy :: Prelude.Maybe Proxy,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetVoiceConnectorProxyResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'proxy', 'getVoiceConnectorProxyResponse_proxy' - The proxy configuration details.
+--
+-- 'httpStatus', 'getVoiceConnectorProxyResponse_httpStatus' - The response's http status code.
+newGetVoiceConnectorProxyResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetVoiceConnectorProxyResponse
+newGetVoiceConnectorProxyResponse pHttpStatus_ =
+  GetVoiceConnectorProxyResponse'
+    { proxy =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The proxy configuration details.
+getVoiceConnectorProxyResponse_proxy :: Lens.Lens' GetVoiceConnectorProxyResponse (Prelude.Maybe Proxy)
+getVoiceConnectorProxyResponse_proxy = Lens.lens (\GetVoiceConnectorProxyResponse' {proxy} -> proxy) (\s@GetVoiceConnectorProxyResponse' {} a -> s {proxy = a} :: GetVoiceConnectorProxyResponse)
+
+-- | The response's http status code.
+getVoiceConnectorProxyResponse_httpStatus :: Lens.Lens' GetVoiceConnectorProxyResponse Prelude.Int
+getVoiceConnectorProxyResponse_httpStatus = Lens.lens (\GetVoiceConnectorProxyResponse' {httpStatus} -> httpStatus) (\s@GetVoiceConnectorProxyResponse' {} a -> s {httpStatus = a} :: GetVoiceConnectorProxyResponse)
+
+instance
+  Prelude.NFData
+    GetVoiceConnectorProxyResponse
+  where
+  rnf GetVoiceConnectorProxyResponse' {..} =
+    Prelude.rnf proxy
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetVoiceConnectorStreamingConfiguration.hs b/gen/Amazonka/Chime/GetVoiceConnectorStreamingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetVoiceConnectorStreamingConfiguration.hs
@@ -0,0 +1,188 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetVoiceConnectorStreamingConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves the streaming configuration details for the specified Amazon
+-- Chime Voice Connector. Shows whether media streaming is enabled for
+-- sending to Amazon Kinesis. It also shows the retention period, in hours,
+-- for the Amazon Kinesis data.
+module Amazonka.Chime.GetVoiceConnectorStreamingConfiguration
+  ( -- * Creating a Request
+    GetVoiceConnectorStreamingConfiguration (..),
+    newGetVoiceConnectorStreamingConfiguration,
+
+    -- * Request Lenses
+    getVoiceConnectorStreamingConfiguration_voiceConnectorId,
+
+    -- * Destructuring the Response
+    GetVoiceConnectorStreamingConfigurationResponse (..),
+    newGetVoiceConnectorStreamingConfigurationResponse,
+
+    -- * Response Lenses
+    getVoiceConnectorStreamingConfigurationResponse_streamingConfiguration,
+    getVoiceConnectorStreamingConfigurationResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetVoiceConnectorStreamingConfiguration' smart constructor.
+data GetVoiceConnectorStreamingConfiguration = GetVoiceConnectorStreamingConfiguration'
+  { -- | The Amazon Chime Voice Connector ID.
+    voiceConnectorId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetVoiceConnectorStreamingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorId', 'getVoiceConnectorStreamingConfiguration_voiceConnectorId' - The Amazon Chime Voice Connector ID.
+newGetVoiceConnectorStreamingConfiguration ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  GetVoiceConnectorStreamingConfiguration
+newGetVoiceConnectorStreamingConfiguration
+  pVoiceConnectorId_ =
+    GetVoiceConnectorStreamingConfiguration'
+      { voiceConnectorId =
+          pVoiceConnectorId_
+      }
+
+-- | The Amazon Chime Voice Connector ID.
+getVoiceConnectorStreamingConfiguration_voiceConnectorId :: Lens.Lens' GetVoiceConnectorStreamingConfiguration Prelude.Text
+getVoiceConnectorStreamingConfiguration_voiceConnectorId = Lens.lens (\GetVoiceConnectorStreamingConfiguration' {voiceConnectorId} -> voiceConnectorId) (\s@GetVoiceConnectorStreamingConfiguration' {} a -> s {voiceConnectorId = a} :: GetVoiceConnectorStreamingConfiguration)
+
+instance
+  Core.AWSRequest
+    GetVoiceConnectorStreamingConfiguration
+  where
+  type
+    AWSResponse
+      GetVoiceConnectorStreamingConfiguration =
+      GetVoiceConnectorStreamingConfigurationResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetVoiceConnectorStreamingConfigurationResponse'
+            Prelude.<$> (x Data..?> "StreamingConfiguration")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    GetVoiceConnectorStreamingConfiguration
+  where
+  hashWithSalt
+    _salt
+    GetVoiceConnectorStreamingConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` voiceConnectorId
+
+instance
+  Prelude.NFData
+    GetVoiceConnectorStreamingConfiguration
+  where
+  rnf GetVoiceConnectorStreamingConfiguration' {..} =
+    Prelude.rnf voiceConnectorId
+
+instance
+  Data.ToHeaders
+    GetVoiceConnectorStreamingConfiguration
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    GetVoiceConnectorStreamingConfiguration
+  where
+  toPath GetVoiceConnectorStreamingConfiguration' {..} =
+    Prelude.mconcat
+      [ "/voice-connectors/",
+        Data.toBS voiceConnectorId,
+        "/streaming-configuration"
+      ]
+
+instance
+  Data.ToQuery
+    GetVoiceConnectorStreamingConfiguration
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetVoiceConnectorStreamingConfigurationResponse' smart constructor.
+data GetVoiceConnectorStreamingConfigurationResponse = GetVoiceConnectorStreamingConfigurationResponse'
+  { -- | The streaming configuration details.
+    streamingConfiguration :: Prelude.Maybe StreamingConfiguration,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetVoiceConnectorStreamingConfigurationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'streamingConfiguration', 'getVoiceConnectorStreamingConfigurationResponse_streamingConfiguration' - The streaming configuration details.
+--
+-- 'httpStatus', 'getVoiceConnectorStreamingConfigurationResponse_httpStatus' - The response's http status code.
+newGetVoiceConnectorStreamingConfigurationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetVoiceConnectorStreamingConfigurationResponse
+newGetVoiceConnectorStreamingConfigurationResponse
+  pHttpStatus_ =
+    GetVoiceConnectorStreamingConfigurationResponse'
+      { streamingConfiguration =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The streaming configuration details.
+getVoiceConnectorStreamingConfigurationResponse_streamingConfiguration :: Lens.Lens' GetVoiceConnectorStreamingConfigurationResponse (Prelude.Maybe StreamingConfiguration)
+getVoiceConnectorStreamingConfigurationResponse_streamingConfiguration = Lens.lens (\GetVoiceConnectorStreamingConfigurationResponse' {streamingConfiguration} -> streamingConfiguration) (\s@GetVoiceConnectorStreamingConfigurationResponse' {} a -> s {streamingConfiguration = a} :: GetVoiceConnectorStreamingConfigurationResponse)
+
+-- | The response's http status code.
+getVoiceConnectorStreamingConfigurationResponse_httpStatus :: Lens.Lens' GetVoiceConnectorStreamingConfigurationResponse Prelude.Int
+getVoiceConnectorStreamingConfigurationResponse_httpStatus = Lens.lens (\GetVoiceConnectorStreamingConfigurationResponse' {httpStatus} -> httpStatus) (\s@GetVoiceConnectorStreamingConfigurationResponse' {} a -> s {httpStatus = a} :: GetVoiceConnectorStreamingConfigurationResponse)
+
+instance
+  Prelude.NFData
+    GetVoiceConnectorStreamingConfigurationResponse
+  where
+  rnf
+    GetVoiceConnectorStreamingConfigurationResponse' {..} =
+      Prelude.rnf streamingConfiguration
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetVoiceConnectorTermination.hs b/gen/Amazonka/Chime/GetVoiceConnectorTermination.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetVoiceConnectorTermination.hs
@@ -0,0 +1,165 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetVoiceConnectorTermination
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves termination setting details for the specified Amazon Chime
+-- Voice Connector.
+module Amazonka.Chime.GetVoiceConnectorTermination
+  ( -- * Creating a Request
+    GetVoiceConnectorTermination (..),
+    newGetVoiceConnectorTermination,
+
+    -- * Request Lenses
+    getVoiceConnectorTermination_voiceConnectorId,
+
+    -- * Destructuring the Response
+    GetVoiceConnectorTerminationResponse (..),
+    newGetVoiceConnectorTerminationResponse,
+
+    -- * Response Lenses
+    getVoiceConnectorTerminationResponse_termination,
+    getVoiceConnectorTerminationResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetVoiceConnectorTermination' smart constructor.
+data GetVoiceConnectorTermination = GetVoiceConnectorTermination'
+  { -- | The Amazon Chime Voice Connector ID.
+    voiceConnectorId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetVoiceConnectorTermination' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorId', 'getVoiceConnectorTermination_voiceConnectorId' - The Amazon Chime Voice Connector ID.
+newGetVoiceConnectorTermination ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  GetVoiceConnectorTermination
+newGetVoiceConnectorTermination pVoiceConnectorId_ =
+  GetVoiceConnectorTermination'
+    { voiceConnectorId =
+        pVoiceConnectorId_
+    }
+
+-- | The Amazon Chime Voice Connector ID.
+getVoiceConnectorTermination_voiceConnectorId :: Lens.Lens' GetVoiceConnectorTermination Prelude.Text
+getVoiceConnectorTermination_voiceConnectorId = Lens.lens (\GetVoiceConnectorTermination' {voiceConnectorId} -> voiceConnectorId) (\s@GetVoiceConnectorTermination' {} a -> s {voiceConnectorId = a} :: GetVoiceConnectorTermination)
+
+instance Core.AWSRequest GetVoiceConnectorTermination where
+  type
+    AWSResponse GetVoiceConnectorTermination =
+      GetVoiceConnectorTerminationResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetVoiceConnectorTerminationResponse'
+            Prelude.<$> (x Data..?> "Termination")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    GetVoiceConnectorTermination
+  where
+  hashWithSalt _salt GetVoiceConnectorTermination' {..} =
+    _salt `Prelude.hashWithSalt` voiceConnectorId
+
+instance Prelude.NFData GetVoiceConnectorTermination where
+  rnf GetVoiceConnectorTermination' {..} =
+    Prelude.rnf voiceConnectorId
+
+instance Data.ToHeaders GetVoiceConnectorTermination where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetVoiceConnectorTermination where
+  toPath GetVoiceConnectorTermination' {..} =
+    Prelude.mconcat
+      [ "/voice-connectors/",
+        Data.toBS voiceConnectorId,
+        "/termination"
+      ]
+
+instance Data.ToQuery GetVoiceConnectorTermination where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetVoiceConnectorTerminationResponse' smart constructor.
+data GetVoiceConnectorTerminationResponse = GetVoiceConnectorTerminationResponse'
+  { -- | The termination setting details.
+    termination :: Prelude.Maybe Termination,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetVoiceConnectorTerminationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'termination', 'getVoiceConnectorTerminationResponse_termination' - The termination setting details.
+--
+-- 'httpStatus', 'getVoiceConnectorTerminationResponse_httpStatus' - The response's http status code.
+newGetVoiceConnectorTerminationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetVoiceConnectorTerminationResponse
+newGetVoiceConnectorTerminationResponse pHttpStatus_ =
+  GetVoiceConnectorTerminationResponse'
+    { termination =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The termination setting details.
+getVoiceConnectorTerminationResponse_termination :: Lens.Lens' GetVoiceConnectorTerminationResponse (Prelude.Maybe Termination)
+getVoiceConnectorTerminationResponse_termination = Lens.lens (\GetVoiceConnectorTerminationResponse' {termination} -> termination) (\s@GetVoiceConnectorTerminationResponse' {} a -> s {termination = a} :: GetVoiceConnectorTerminationResponse)
+
+-- | The response's http status code.
+getVoiceConnectorTerminationResponse_httpStatus :: Lens.Lens' GetVoiceConnectorTerminationResponse Prelude.Int
+getVoiceConnectorTerminationResponse_httpStatus = Lens.lens (\GetVoiceConnectorTerminationResponse' {httpStatus} -> httpStatus) (\s@GetVoiceConnectorTerminationResponse' {} a -> s {httpStatus = a} :: GetVoiceConnectorTerminationResponse)
+
+instance
+  Prelude.NFData
+    GetVoiceConnectorTerminationResponse
+  where
+  rnf GetVoiceConnectorTerminationResponse' {..} =
+    Prelude.rnf termination
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/GetVoiceConnectorTerminationHealth.hs b/gen/Amazonka/Chime/GetVoiceConnectorTerminationHealth.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/GetVoiceConnectorTerminationHealth.hs
@@ -0,0 +1,185 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.GetVoiceConnectorTerminationHealth
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves information about the last time a SIP @OPTIONS@ ping was
+-- received from your SIP infrastructure for the specified Amazon Chime
+-- Voice Connector.
+module Amazonka.Chime.GetVoiceConnectorTerminationHealth
+  ( -- * Creating a Request
+    GetVoiceConnectorTerminationHealth (..),
+    newGetVoiceConnectorTerminationHealth,
+
+    -- * Request Lenses
+    getVoiceConnectorTerminationHealth_voiceConnectorId,
+
+    -- * Destructuring the Response
+    GetVoiceConnectorTerminationHealthResponse (..),
+    newGetVoiceConnectorTerminationHealthResponse,
+
+    -- * Response Lenses
+    getVoiceConnectorTerminationHealthResponse_terminationHealth,
+    getVoiceConnectorTerminationHealthResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetVoiceConnectorTerminationHealth' smart constructor.
+data GetVoiceConnectorTerminationHealth = GetVoiceConnectorTerminationHealth'
+  { -- | The Amazon Chime Voice Connector ID.
+    voiceConnectorId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetVoiceConnectorTerminationHealth' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorId', 'getVoiceConnectorTerminationHealth_voiceConnectorId' - The Amazon Chime Voice Connector ID.
+newGetVoiceConnectorTerminationHealth ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  GetVoiceConnectorTerminationHealth
+newGetVoiceConnectorTerminationHealth
+  pVoiceConnectorId_ =
+    GetVoiceConnectorTerminationHealth'
+      { voiceConnectorId =
+          pVoiceConnectorId_
+      }
+
+-- | The Amazon Chime Voice Connector ID.
+getVoiceConnectorTerminationHealth_voiceConnectorId :: Lens.Lens' GetVoiceConnectorTerminationHealth Prelude.Text
+getVoiceConnectorTerminationHealth_voiceConnectorId = Lens.lens (\GetVoiceConnectorTerminationHealth' {voiceConnectorId} -> voiceConnectorId) (\s@GetVoiceConnectorTerminationHealth' {} a -> s {voiceConnectorId = a} :: GetVoiceConnectorTerminationHealth)
+
+instance
+  Core.AWSRequest
+    GetVoiceConnectorTerminationHealth
+  where
+  type
+    AWSResponse GetVoiceConnectorTerminationHealth =
+      GetVoiceConnectorTerminationHealthResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetVoiceConnectorTerminationHealthResponse'
+            Prelude.<$> (x Data..?> "TerminationHealth")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    GetVoiceConnectorTerminationHealth
+  where
+  hashWithSalt
+    _salt
+    GetVoiceConnectorTerminationHealth' {..} =
+      _salt `Prelude.hashWithSalt` voiceConnectorId
+
+instance
+  Prelude.NFData
+    GetVoiceConnectorTerminationHealth
+  where
+  rnf GetVoiceConnectorTerminationHealth' {..} =
+    Prelude.rnf voiceConnectorId
+
+instance
+  Data.ToHeaders
+    GetVoiceConnectorTerminationHealth
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    GetVoiceConnectorTerminationHealth
+  where
+  toPath GetVoiceConnectorTerminationHealth' {..} =
+    Prelude.mconcat
+      [ "/voice-connectors/",
+        Data.toBS voiceConnectorId,
+        "/termination/health"
+      ]
+
+instance
+  Data.ToQuery
+    GetVoiceConnectorTerminationHealth
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetVoiceConnectorTerminationHealthResponse' smart constructor.
+data GetVoiceConnectorTerminationHealthResponse = GetVoiceConnectorTerminationHealthResponse'
+  { -- | The termination health details.
+    terminationHealth :: Prelude.Maybe TerminationHealth,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetVoiceConnectorTerminationHealthResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'terminationHealth', 'getVoiceConnectorTerminationHealthResponse_terminationHealth' - The termination health details.
+--
+-- 'httpStatus', 'getVoiceConnectorTerminationHealthResponse_httpStatus' - The response's http status code.
+newGetVoiceConnectorTerminationHealthResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetVoiceConnectorTerminationHealthResponse
+newGetVoiceConnectorTerminationHealthResponse
+  pHttpStatus_ =
+    GetVoiceConnectorTerminationHealthResponse'
+      { terminationHealth =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The termination health details.
+getVoiceConnectorTerminationHealthResponse_terminationHealth :: Lens.Lens' GetVoiceConnectorTerminationHealthResponse (Prelude.Maybe TerminationHealth)
+getVoiceConnectorTerminationHealthResponse_terminationHealth = Lens.lens (\GetVoiceConnectorTerminationHealthResponse' {terminationHealth} -> terminationHealth) (\s@GetVoiceConnectorTerminationHealthResponse' {} a -> s {terminationHealth = a} :: GetVoiceConnectorTerminationHealthResponse)
+
+-- | The response's http status code.
+getVoiceConnectorTerminationHealthResponse_httpStatus :: Lens.Lens' GetVoiceConnectorTerminationHealthResponse Prelude.Int
+getVoiceConnectorTerminationHealthResponse_httpStatus = Lens.lens (\GetVoiceConnectorTerminationHealthResponse' {httpStatus} -> httpStatus) (\s@GetVoiceConnectorTerminationHealthResponse' {} a -> s {httpStatus = a} :: GetVoiceConnectorTerminationHealthResponse)
+
+instance
+  Prelude.NFData
+    GetVoiceConnectorTerminationHealthResponse
+  where
+  rnf GetVoiceConnectorTerminationHealthResponse' {..} =
+    Prelude.rnf terminationHealth
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/InviteUsers.hs b/gen/Amazonka/Chime/InviteUsers.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/InviteUsers.hs
@@ -0,0 +1,189 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.InviteUsers
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sends email to a maximum of 50 users, inviting them to the specified
+-- Amazon Chime @Team@ account. Only @Team@ account types are currently
+-- supported for this action.
+module Amazonka.Chime.InviteUsers
+  ( -- * Creating a Request
+    InviteUsers (..),
+    newInviteUsers,
+
+    -- * Request Lenses
+    inviteUsers_userType,
+    inviteUsers_accountId,
+    inviteUsers_userEmailList,
+
+    -- * Destructuring the Response
+    InviteUsersResponse (..),
+    newInviteUsersResponse,
+
+    -- * Response Lenses
+    inviteUsersResponse_invites,
+    inviteUsersResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newInviteUsers' smart constructor.
+data InviteUsers = InviteUsers'
+  { -- | The user type.
+    userType :: Prelude.Maybe UserType,
+    -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The user email addresses to which to send the email invitation.
+    userEmailList :: [Data.Sensitive Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InviteUsers' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'userType', 'inviteUsers_userType' - The user type.
+--
+-- 'accountId', 'inviteUsers_accountId' - The Amazon Chime account ID.
+--
+-- 'userEmailList', 'inviteUsers_userEmailList' - The user email addresses to which to send the email invitation.
+newInviteUsers ::
+  -- | 'accountId'
+  Prelude.Text ->
+  InviteUsers
+newInviteUsers pAccountId_ =
+  InviteUsers'
+    { userType = Prelude.Nothing,
+      accountId = pAccountId_,
+      userEmailList = Prelude.mempty
+    }
+
+-- | The user type.
+inviteUsers_userType :: Lens.Lens' InviteUsers (Prelude.Maybe UserType)
+inviteUsers_userType = Lens.lens (\InviteUsers' {userType} -> userType) (\s@InviteUsers' {} a -> s {userType = a} :: InviteUsers)
+
+-- | The Amazon Chime account ID.
+inviteUsers_accountId :: Lens.Lens' InviteUsers Prelude.Text
+inviteUsers_accountId = Lens.lens (\InviteUsers' {accountId} -> accountId) (\s@InviteUsers' {} a -> s {accountId = a} :: InviteUsers)
+
+-- | The user email addresses to which to send the email invitation.
+inviteUsers_userEmailList :: Lens.Lens' InviteUsers [Prelude.Text]
+inviteUsers_userEmailList = Lens.lens (\InviteUsers' {userEmailList} -> userEmailList) (\s@InviteUsers' {} a -> s {userEmailList = a} :: InviteUsers) Prelude.. Lens.coerced
+
+instance Core.AWSRequest InviteUsers where
+  type AWSResponse InviteUsers = InviteUsersResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          InviteUsersResponse'
+            Prelude.<$> (x Data..?> "Invites" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable InviteUsers where
+  hashWithSalt _salt InviteUsers' {..} =
+    _salt
+      `Prelude.hashWithSalt` userType
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` userEmailList
+
+instance Prelude.NFData InviteUsers where
+  rnf InviteUsers' {..} =
+    Prelude.rnf userType
+      `Prelude.seq` Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf userEmailList
+
+instance Data.ToHeaders InviteUsers where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON InviteUsers where
+  toJSON InviteUsers' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("UserType" Data..=) Prelude.<$> userType,
+            Prelude.Just
+              ("UserEmailList" Data..= userEmailList)
+          ]
+      )
+
+instance Data.ToPath InviteUsers where
+  toPath InviteUsers' {..} =
+    Prelude.mconcat
+      ["/accounts/", Data.toBS accountId, "/users"]
+
+instance Data.ToQuery InviteUsers where
+  toQuery =
+    Prelude.const (Prelude.mconcat ["operation=add"])
+
+-- | /See:/ 'newInviteUsersResponse' smart constructor.
+data InviteUsersResponse = InviteUsersResponse'
+  { -- | The email invitation details.
+    invites :: Prelude.Maybe [Invite],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InviteUsersResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'invites', 'inviteUsersResponse_invites' - The email invitation details.
+--
+-- 'httpStatus', 'inviteUsersResponse_httpStatus' - The response's http status code.
+newInviteUsersResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  InviteUsersResponse
+newInviteUsersResponse pHttpStatus_ =
+  InviteUsersResponse'
+    { invites = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The email invitation details.
+inviteUsersResponse_invites :: Lens.Lens' InviteUsersResponse (Prelude.Maybe [Invite])
+inviteUsersResponse_invites = Lens.lens (\InviteUsersResponse' {invites} -> invites) (\s@InviteUsersResponse' {} a -> s {invites = a} :: InviteUsersResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+inviteUsersResponse_httpStatus :: Lens.Lens' InviteUsersResponse Prelude.Int
+inviteUsersResponse_httpStatus = Lens.lens (\InviteUsersResponse' {httpStatus} -> httpStatus) (\s@InviteUsersResponse' {} a -> s {httpStatus = a} :: InviteUsersResponse)
+
+instance Prelude.NFData InviteUsersResponse where
+  rnf InviteUsersResponse' {..} =
+    Prelude.rnf invites
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/Lens.hs b/gen/Amazonka/Chime/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Lens.hs
@@ -0,0 +1,2101 @@
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Lens
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Lens
+  ( -- * Operations
+
+    -- ** AssociatePhoneNumberWithUser
+    associatePhoneNumberWithUser_accountId,
+    associatePhoneNumberWithUser_userId,
+    associatePhoneNumberWithUser_e164PhoneNumber,
+    associatePhoneNumberWithUserResponse_httpStatus,
+
+    -- ** AssociatePhoneNumbersWithVoiceConnector
+    associatePhoneNumbersWithVoiceConnector_forceAssociate,
+    associatePhoneNumbersWithVoiceConnector_voiceConnectorId,
+    associatePhoneNumbersWithVoiceConnector_e164PhoneNumbers,
+    associatePhoneNumbersWithVoiceConnectorResponse_phoneNumberErrors,
+    associatePhoneNumbersWithVoiceConnectorResponse_httpStatus,
+
+    -- ** AssociatePhoneNumbersWithVoiceConnectorGroup
+    associatePhoneNumbersWithVoiceConnectorGroup_forceAssociate,
+    associatePhoneNumbersWithVoiceConnectorGroup_voiceConnectorGroupId,
+    associatePhoneNumbersWithVoiceConnectorGroup_e164PhoneNumbers,
+    associatePhoneNumbersWithVoiceConnectorGroupResponse_phoneNumberErrors,
+    associatePhoneNumbersWithVoiceConnectorGroupResponse_httpStatus,
+
+    -- ** AssociateSigninDelegateGroupsWithAccount
+    associateSigninDelegateGroupsWithAccount_accountId,
+    associateSigninDelegateGroupsWithAccount_signinDelegateGroups,
+    associateSigninDelegateGroupsWithAccountResponse_httpStatus,
+
+    -- ** BatchCreateAttendee
+    batchCreateAttendee_meetingId,
+    batchCreateAttendee_attendees,
+    batchCreateAttendeeResponse_attendees,
+    batchCreateAttendeeResponse_errors,
+    batchCreateAttendeeResponse_httpStatus,
+
+    -- ** BatchCreateChannelMembership
+    batchCreateChannelMembership_chimeBearer,
+    batchCreateChannelMembership_type,
+    batchCreateChannelMembership_channelArn,
+    batchCreateChannelMembership_memberArns,
+    batchCreateChannelMembershipResponse_batchChannelMemberships,
+    batchCreateChannelMembershipResponse_errors,
+    batchCreateChannelMembershipResponse_httpStatus,
+
+    -- ** BatchCreateRoomMembership
+    batchCreateRoomMembership_accountId,
+    batchCreateRoomMembership_roomId,
+    batchCreateRoomMembership_membershipItemList,
+    batchCreateRoomMembershipResponse_errors,
+    batchCreateRoomMembershipResponse_httpStatus,
+
+    -- ** BatchDeletePhoneNumber
+    batchDeletePhoneNumber_phoneNumberIds,
+    batchDeletePhoneNumberResponse_phoneNumberErrors,
+    batchDeletePhoneNumberResponse_httpStatus,
+
+    -- ** BatchSuspendUser
+    batchSuspendUser_accountId,
+    batchSuspendUser_userIdList,
+    batchSuspendUserResponse_userErrors,
+    batchSuspendUserResponse_httpStatus,
+
+    -- ** BatchUnsuspendUser
+    batchUnsuspendUser_accountId,
+    batchUnsuspendUser_userIdList,
+    batchUnsuspendUserResponse_userErrors,
+    batchUnsuspendUserResponse_httpStatus,
+
+    -- ** BatchUpdatePhoneNumber
+    batchUpdatePhoneNumber_updatePhoneNumberRequestItems,
+    batchUpdatePhoneNumberResponse_phoneNumberErrors,
+    batchUpdatePhoneNumberResponse_httpStatus,
+
+    -- ** BatchUpdateUser
+    batchUpdateUser_accountId,
+    batchUpdateUser_updateUserRequestItems,
+    batchUpdateUserResponse_userErrors,
+    batchUpdateUserResponse_httpStatus,
+
+    -- ** CreateAccount
+    createAccount_name,
+    createAccountResponse_account,
+    createAccountResponse_httpStatus,
+
+    -- ** CreateAppInstance
+    createAppInstance_metadata,
+    createAppInstance_tags,
+    createAppInstance_name,
+    createAppInstance_clientRequestToken,
+    createAppInstanceResponse_appInstanceArn,
+    createAppInstanceResponse_httpStatus,
+
+    -- ** CreateAppInstanceAdmin
+    createAppInstanceAdmin_appInstanceAdminArn,
+    createAppInstanceAdmin_appInstanceArn,
+    createAppInstanceAdminResponse_appInstanceAdmin,
+    createAppInstanceAdminResponse_appInstanceArn,
+    createAppInstanceAdminResponse_httpStatus,
+
+    -- ** CreateAppInstanceUser
+    createAppInstanceUser_metadata,
+    createAppInstanceUser_tags,
+    createAppInstanceUser_appInstanceArn,
+    createAppInstanceUser_appInstanceUserId,
+    createAppInstanceUser_name,
+    createAppInstanceUser_clientRequestToken,
+    createAppInstanceUserResponse_appInstanceUserArn,
+    createAppInstanceUserResponse_httpStatus,
+
+    -- ** CreateAttendee
+    createAttendee_tags,
+    createAttendee_meetingId,
+    createAttendee_externalUserId,
+    createAttendeeResponse_attendee,
+    createAttendeeResponse_httpStatus,
+
+    -- ** CreateBot
+    createBot_domain,
+    createBot_displayName,
+    createBot_accountId,
+    createBotResponse_bot,
+    createBotResponse_httpStatus,
+
+    -- ** CreateChannel
+    createChannel_chimeBearer,
+    createChannel_metadata,
+    createChannel_mode,
+    createChannel_privacy,
+    createChannel_tags,
+    createChannel_appInstanceArn,
+    createChannel_name,
+    createChannel_clientRequestToken,
+    createChannelResponse_channelArn,
+    createChannelResponse_httpStatus,
+
+    -- ** CreateChannelBan
+    createChannelBan_chimeBearer,
+    createChannelBan_channelArn,
+    createChannelBan_memberArn,
+    createChannelBanResponse_channelArn,
+    createChannelBanResponse_member,
+    createChannelBanResponse_httpStatus,
+
+    -- ** CreateChannelMembership
+    createChannelMembership_chimeBearer,
+    createChannelMembership_channelArn,
+    createChannelMembership_memberArn,
+    createChannelMembership_type,
+    createChannelMembershipResponse_channelArn,
+    createChannelMembershipResponse_member,
+    createChannelMembershipResponse_httpStatus,
+
+    -- ** CreateChannelModerator
+    createChannelModerator_chimeBearer,
+    createChannelModerator_channelArn,
+    createChannelModerator_channelModeratorArn,
+    createChannelModeratorResponse_channelArn,
+    createChannelModeratorResponse_channelModerator,
+    createChannelModeratorResponse_httpStatus,
+
+    -- ** CreateMediaCapturePipeline
+    createMediaCapturePipeline_chimeSdkMeetingConfiguration,
+    createMediaCapturePipeline_clientRequestToken,
+    createMediaCapturePipeline_sourceType,
+    createMediaCapturePipeline_sourceArn,
+    createMediaCapturePipeline_sinkType,
+    createMediaCapturePipeline_sinkArn,
+    createMediaCapturePipelineResponse_mediaCapturePipeline,
+    createMediaCapturePipelineResponse_httpStatus,
+
+    -- ** CreateMeeting
+    createMeeting_externalMeetingId,
+    createMeeting_mediaRegion,
+    createMeeting_meetingHostId,
+    createMeeting_notificationsConfiguration,
+    createMeeting_tags,
+    createMeeting_clientRequestToken,
+    createMeetingResponse_meeting,
+    createMeetingResponse_httpStatus,
+
+    -- ** CreateMeetingDialOut
+    createMeetingDialOut_meetingId,
+    createMeetingDialOut_fromPhoneNumber,
+    createMeetingDialOut_toPhoneNumber,
+    createMeetingDialOut_joinToken,
+    createMeetingDialOutResponse_transactionId,
+    createMeetingDialOutResponse_httpStatus,
+
+    -- ** CreateMeetingWithAttendees
+    createMeetingWithAttendees_attendees,
+    createMeetingWithAttendees_externalMeetingId,
+    createMeetingWithAttendees_mediaRegion,
+    createMeetingWithAttendees_meetingHostId,
+    createMeetingWithAttendees_notificationsConfiguration,
+    createMeetingWithAttendees_tags,
+    createMeetingWithAttendees_clientRequestToken,
+    createMeetingWithAttendeesResponse_attendees,
+    createMeetingWithAttendeesResponse_errors,
+    createMeetingWithAttendeesResponse_meeting,
+    createMeetingWithAttendeesResponse_httpStatus,
+
+    -- ** CreatePhoneNumberOrder
+    createPhoneNumberOrder_productType,
+    createPhoneNumberOrder_e164PhoneNumbers,
+    createPhoneNumberOrderResponse_phoneNumberOrder,
+    createPhoneNumberOrderResponse_httpStatus,
+
+    -- ** CreateProxySession
+    createProxySession_expiryMinutes,
+    createProxySession_geoMatchLevel,
+    createProxySession_geoMatchParams,
+    createProxySession_name,
+    createProxySession_numberSelectionBehavior,
+    createProxySession_participantPhoneNumbers,
+    createProxySession_capabilities,
+    createProxySession_voiceConnectorId,
+    createProxySessionResponse_proxySession,
+    createProxySessionResponse_httpStatus,
+
+    -- ** CreateRoom
+    createRoom_clientRequestToken,
+    createRoom_accountId,
+    createRoom_name,
+    createRoomResponse_room,
+    createRoomResponse_httpStatus,
+
+    -- ** CreateRoomMembership
+    createRoomMembership_role,
+    createRoomMembership_accountId,
+    createRoomMembership_roomId,
+    createRoomMembership_memberId,
+    createRoomMembershipResponse_roomMembership,
+    createRoomMembershipResponse_httpStatus,
+
+    -- ** CreateSipMediaApplication
+    createSipMediaApplication_awsRegion,
+    createSipMediaApplication_name,
+    createSipMediaApplication_endpoints,
+    createSipMediaApplicationResponse_sipMediaApplication,
+    createSipMediaApplicationResponse_httpStatus,
+
+    -- ** CreateSipMediaApplicationCall
+    createSipMediaApplicationCall_sipHeaders,
+    createSipMediaApplicationCall_fromPhoneNumber,
+    createSipMediaApplicationCall_toPhoneNumber,
+    createSipMediaApplicationCall_sipMediaApplicationId,
+    createSipMediaApplicationCallResponse_sipMediaApplicationCall,
+    createSipMediaApplicationCallResponse_httpStatus,
+
+    -- ** CreateSipRule
+    createSipRule_disabled,
+    createSipRule_name,
+    createSipRule_triggerType,
+    createSipRule_triggerValue,
+    createSipRule_targetApplications,
+    createSipRuleResponse_sipRule,
+    createSipRuleResponse_httpStatus,
+
+    -- ** CreateUser
+    createUser_email,
+    createUser_userType,
+    createUser_username,
+    createUser_accountId,
+    createUserResponse_user,
+    createUserResponse_httpStatus,
+
+    -- ** CreateVoiceConnector
+    createVoiceConnector_awsRegion,
+    createVoiceConnector_name,
+    createVoiceConnector_requireEncryption,
+    createVoiceConnectorResponse_voiceConnector,
+    createVoiceConnectorResponse_httpStatus,
+
+    -- ** CreateVoiceConnectorGroup
+    createVoiceConnectorGroup_voiceConnectorItems,
+    createVoiceConnectorGroup_name,
+    createVoiceConnectorGroupResponse_voiceConnectorGroup,
+    createVoiceConnectorGroupResponse_httpStatus,
+
+    -- ** DeleteAccount
+    deleteAccount_accountId,
+    deleteAccountResponse_httpStatus,
+
+    -- ** DeleteAppInstance
+    deleteAppInstance_appInstanceArn,
+
+    -- ** DeleteAppInstanceAdmin
+    deleteAppInstanceAdmin_appInstanceAdminArn,
+    deleteAppInstanceAdmin_appInstanceArn,
+
+    -- ** DeleteAppInstanceStreamingConfigurations
+    deleteAppInstanceStreamingConfigurations_appInstanceArn,
+
+    -- ** DeleteAppInstanceUser
+    deleteAppInstanceUser_appInstanceUserArn,
+
+    -- ** DeleteAttendee
+    deleteAttendee_meetingId,
+    deleteAttendee_attendeeId,
+
+    -- ** DeleteChannel
+    deleteChannel_chimeBearer,
+    deleteChannel_channelArn,
+
+    -- ** DeleteChannelBan
+    deleteChannelBan_chimeBearer,
+    deleteChannelBan_channelArn,
+    deleteChannelBan_memberArn,
+
+    -- ** DeleteChannelMembership
+    deleteChannelMembership_chimeBearer,
+    deleteChannelMembership_channelArn,
+    deleteChannelMembership_memberArn,
+
+    -- ** DeleteChannelMessage
+    deleteChannelMessage_chimeBearer,
+    deleteChannelMessage_channelArn,
+    deleteChannelMessage_messageId,
+
+    -- ** DeleteChannelModerator
+    deleteChannelModerator_chimeBearer,
+    deleteChannelModerator_channelArn,
+    deleteChannelModerator_channelModeratorArn,
+
+    -- ** DeleteEventsConfiguration
+    deleteEventsConfiguration_accountId,
+    deleteEventsConfiguration_botId,
+
+    -- ** DeleteMediaCapturePipeline
+    deleteMediaCapturePipeline_mediaPipelineId,
+
+    -- ** DeleteMeeting
+    deleteMeeting_meetingId,
+
+    -- ** DeletePhoneNumber
+    deletePhoneNumber_phoneNumberId,
+
+    -- ** DeleteProxySession
+    deleteProxySession_voiceConnectorId,
+    deleteProxySession_proxySessionId,
+
+    -- ** DeleteRoom
+    deleteRoom_accountId,
+    deleteRoom_roomId,
+
+    -- ** DeleteRoomMembership
+    deleteRoomMembership_accountId,
+    deleteRoomMembership_roomId,
+    deleteRoomMembership_memberId,
+
+    -- ** DeleteSipMediaApplication
+    deleteSipMediaApplication_sipMediaApplicationId,
+
+    -- ** DeleteSipRule
+    deleteSipRule_sipRuleId,
+
+    -- ** DeleteVoiceConnector
+    deleteVoiceConnector_voiceConnectorId,
+
+    -- ** DeleteVoiceConnectorEmergencyCallingConfiguration
+    deleteVoiceConnectorEmergencyCallingConfiguration_voiceConnectorId,
+
+    -- ** DeleteVoiceConnectorGroup
+    deleteVoiceConnectorGroup_voiceConnectorGroupId,
+
+    -- ** DeleteVoiceConnectorOrigination
+    deleteVoiceConnectorOrigination_voiceConnectorId,
+
+    -- ** DeleteVoiceConnectorProxy
+    deleteVoiceConnectorProxy_voiceConnectorId,
+
+    -- ** DeleteVoiceConnectorStreamingConfiguration
+    deleteVoiceConnectorStreamingConfiguration_voiceConnectorId,
+
+    -- ** DeleteVoiceConnectorTermination
+    deleteVoiceConnectorTermination_voiceConnectorId,
+
+    -- ** DeleteVoiceConnectorTerminationCredentials
+    deleteVoiceConnectorTerminationCredentials_usernames,
+    deleteVoiceConnectorTerminationCredentials_voiceConnectorId,
+
+    -- ** DescribeAppInstance
+    describeAppInstance_appInstanceArn,
+    describeAppInstanceResponse_appInstance,
+    describeAppInstanceResponse_httpStatus,
+
+    -- ** DescribeAppInstanceAdmin
+    describeAppInstanceAdmin_appInstanceAdminArn,
+    describeAppInstanceAdmin_appInstanceArn,
+    describeAppInstanceAdminResponse_appInstanceAdmin,
+    describeAppInstanceAdminResponse_httpStatus,
+
+    -- ** DescribeAppInstanceUser
+    describeAppInstanceUser_appInstanceUserArn,
+    describeAppInstanceUserResponse_appInstanceUser,
+    describeAppInstanceUserResponse_httpStatus,
+
+    -- ** DescribeChannel
+    describeChannel_chimeBearer,
+    describeChannel_channelArn,
+    describeChannelResponse_channel,
+    describeChannelResponse_httpStatus,
+
+    -- ** DescribeChannelBan
+    describeChannelBan_chimeBearer,
+    describeChannelBan_channelArn,
+    describeChannelBan_memberArn,
+    describeChannelBanResponse_channelBan,
+    describeChannelBanResponse_httpStatus,
+
+    -- ** DescribeChannelMembership
+    describeChannelMembership_chimeBearer,
+    describeChannelMembership_channelArn,
+    describeChannelMembership_memberArn,
+    describeChannelMembershipResponse_channelMembership,
+    describeChannelMembershipResponse_httpStatus,
+
+    -- ** DescribeChannelMembershipForAppInstanceUser
+    describeChannelMembershipForAppInstanceUser_chimeBearer,
+    describeChannelMembershipForAppInstanceUser_channelArn,
+    describeChannelMembershipForAppInstanceUser_appInstanceUserArn,
+    describeChannelMembershipForAppInstanceUserResponse_channelMembership,
+    describeChannelMembershipForAppInstanceUserResponse_httpStatus,
+
+    -- ** DescribeChannelModeratedByAppInstanceUser
+    describeChannelModeratedByAppInstanceUser_chimeBearer,
+    describeChannelModeratedByAppInstanceUser_channelArn,
+    describeChannelModeratedByAppInstanceUser_appInstanceUserArn,
+    describeChannelModeratedByAppInstanceUserResponse_channel,
+    describeChannelModeratedByAppInstanceUserResponse_httpStatus,
+
+    -- ** DescribeChannelModerator
+    describeChannelModerator_chimeBearer,
+    describeChannelModerator_channelArn,
+    describeChannelModerator_channelModeratorArn,
+    describeChannelModeratorResponse_channelModerator,
+    describeChannelModeratorResponse_httpStatus,
+
+    -- ** DisassociatePhoneNumberFromUser
+    disassociatePhoneNumberFromUser_accountId,
+    disassociatePhoneNumberFromUser_userId,
+    disassociatePhoneNumberFromUserResponse_httpStatus,
+
+    -- ** DisassociatePhoneNumbersFromVoiceConnector
+    disassociatePhoneNumbersFromVoiceConnector_voiceConnectorId,
+    disassociatePhoneNumbersFromVoiceConnector_e164PhoneNumbers,
+    disassociatePhoneNumbersFromVoiceConnectorResponse_phoneNumberErrors,
+    disassociatePhoneNumbersFromVoiceConnectorResponse_httpStatus,
+
+    -- ** DisassociatePhoneNumbersFromVoiceConnectorGroup
+    disassociatePhoneNumbersFromVoiceConnectorGroup_voiceConnectorGroupId,
+    disassociatePhoneNumbersFromVoiceConnectorGroup_e164PhoneNumbers,
+    disassociatePhoneNumbersFromVoiceConnectorGroupResponse_phoneNumberErrors,
+    disassociatePhoneNumbersFromVoiceConnectorGroupResponse_httpStatus,
+
+    -- ** DisassociateSigninDelegateGroupsFromAccount
+    disassociateSigninDelegateGroupsFromAccount_accountId,
+    disassociateSigninDelegateGroupsFromAccount_groupNames,
+    disassociateSigninDelegateGroupsFromAccountResponse_httpStatus,
+
+    -- ** GetAccount
+    getAccount_accountId,
+    getAccountResponse_account,
+    getAccountResponse_httpStatus,
+
+    -- ** GetAccountSettings
+    getAccountSettings_accountId,
+    getAccountSettingsResponse_accountSettings,
+    getAccountSettingsResponse_httpStatus,
+
+    -- ** GetAppInstanceRetentionSettings
+    getAppInstanceRetentionSettings_appInstanceArn,
+    getAppInstanceRetentionSettingsResponse_appInstanceRetentionSettings,
+    getAppInstanceRetentionSettingsResponse_initiateDeletionTimestamp,
+    getAppInstanceRetentionSettingsResponse_httpStatus,
+
+    -- ** GetAppInstanceStreamingConfigurations
+    getAppInstanceStreamingConfigurations_appInstanceArn,
+    getAppInstanceStreamingConfigurationsResponse_appInstanceStreamingConfigurations,
+    getAppInstanceStreamingConfigurationsResponse_httpStatus,
+
+    -- ** GetAttendee
+    getAttendee_meetingId,
+    getAttendee_attendeeId,
+    getAttendeeResponse_attendee,
+    getAttendeeResponse_httpStatus,
+
+    -- ** GetBot
+    getBot_accountId,
+    getBot_botId,
+    getBotResponse_bot,
+    getBotResponse_httpStatus,
+
+    -- ** GetChannelMessage
+    getChannelMessage_chimeBearer,
+    getChannelMessage_channelArn,
+    getChannelMessage_messageId,
+    getChannelMessageResponse_channelMessage,
+    getChannelMessageResponse_httpStatus,
+
+    -- ** GetEventsConfiguration
+    getEventsConfiguration_accountId,
+    getEventsConfiguration_botId,
+    getEventsConfigurationResponse_eventsConfiguration,
+    getEventsConfigurationResponse_httpStatus,
+
+    -- ** GetGlobalSettings
+    getGlobalSettingsResponse_businessCalling,
+    getGlobalSettingsResponse_voiceConnector,
+    getGlobalSettingsResponse_httpStatus,
+
+    -- ** GetMediaCapturePipeline
+    getMediaCapturePipeline_mediaPipelineId,
+    getMediaCapturePipelineResponse_mediaCapturePipeline,
+    getMediaCapturePipelineResponse_httpStatus,
+
+    -- ** GetMeeting
+    getMeeting_meetingId,
+    getMeetingResponse_meeting,
+    getMeetingResponse_httpStatus,
+
+    -- ** GetMessagingSessionEndpoint
+    getMessagingSessionEndpointResponse_endpoint,
+    getMessagingSessionEndpointResponse_httpStatus,
+
+    -- ** GetPhoneNumber
+    getPhoneNumber_phoneNumberId,
+    getPhoneNumberResponse_phoneNumber,
+    getPhoneNumberResponse_httpStatus,
+
+    -- ** GetPhoneNumberOrder
+    getPhoneNumberOrder_phoneNumberOrderId,
+    getPhoneNumberOrderResponse_phoneNumberOrder,
+    getPhoneNumberOrderResponse_httpStatus,
+
+    -- ** GetPhoneNumberSettings
+    getPhoneNumberSettingsResponse_callingName,
+    getPhoneNumberSettingsResponse_callingNameUpdatedTimestamp,
+    getPhoneNumberSettingsResponse_httpStatus,
+
+    -- ** GetProxySession
+    getProxySession_voiceConnectorId,
+    getProxySession_proxySessionId,
+    getProxySessionResponse_proxySession,
+    getProxySessionResponse_httpStatus,
+
+    -- ** GetRetentionSettings
+    getRetentionSettings_accountId,
+    getRetentionSettingsResponse_initiateDeletionTimestamp,
+    getRetentionSettingsResponse_retentionSettings,
+    getRetentionSettingsResponse_httpStatus,
+
+    -- ** GetRoom
+    getRoom_accountId,
+    getRoom_roomId,
+    getRoomResponse_room,
+    getRoomResponse_httpStatus,
+
+    -- ** GetSipMediaApplication
+    getSipMediaApplication_sipMediaApplicationId,
+    getSipMediaApplicationResponse_sipMediaApplication,
+    getSipMediaApplicationResponse_httpStatus,
+
+    -- ** GetSipMediaApplicationLoggingConfiguration
+    getSipMediaApplicationLoggingConfiguration_sipMediaApplicationId,
+    getSipMediaApplicationLoggingConfigurationResponse_sipMediaApplicationLoggingConfiguration,
+    getSipMediaApplicationLoggingConfigurationResponse_httpStatus,
+
+    -- ** GetSipRule
+    getSipRule_sipRuleId,
+    getSipRuleResponse_sipRule,
+    getSipRuleResponse_httpStatus,
+
+    -- ** GetUser
+    getUser_accountId,
+    getUser_userId,
+    getUserResponse_user,
+    getUserResponse_httpStatus,
+
+    -- ** GetUserSettings
+    getUserSettings_accountId,
+    getUserSettings_userId,
+    getUserSettingsResponse_userSettings,
+    getUserSettingsResponse_httpStatus,
+
+    -- ** GetVoiceConnector
+    getVoiceConnector_voiceConnectorId,
+    getVoiceConnectorResponse_voiceConnector,
+    getVoiceConnectorResponse_httpStatus,
+
+    -- ** GetVoiceConnectorEmergencyCallingConfiguration
+    getVoiceConnectorEmergencyCallingConfiguration_voiceConnectorId,
+    getVoiceConnectorEmergencyCallingConfigurationResponse_emergencyCallingConfiguration,
+    getVoiceConnectorEmergencyCallingConfigurationResponse_httpStatus,
+
+    -- ** GetVoiceConnectorGroup
+    getVoiceConnectorGroup_voiceConnectorGroupId,
+    getVoiceConnectorGroupResponse_voiceConnectorGroup,
+    getVoiceConnectorGroupResponse_httpStatus,
+
+    -- ** GetVoiceConnectorLoggingConfiguration
+    getVoiceConnectorLoggingConfiguration_voiceConnectorId,
+    getVoiceConnectorLoggingConfigurationResponse_loggingConfiguration,
+    getVoiceConnectorLoggingConfigurationResponse_httpStatus,
+
+    -- ** GetVoiceConnectorOrigination
+    getVoiceConnectorOrigination_voiceConnectorId,
+    getVoiceConnectorOriginationResponse_origination,
+    getVoiceConnectorOriginationResponse_httpStatus,
+
+    -- ** GetVoiceConnectorProxy
+    getVoiceConnectorProxy_voiceConnectorId,
+    getVoiceConnectorProxyResponse_proxy,
+    getVoiceConnectorProxyResponse_httpStatus,
+
+    -- ** GetVoiceConnectorStreamingConfiguration
+    getVoiceConnectorStreamingConfiguration_voiceConnectorId,
+    getVoiceConnectorStreamingConfigurationResponse_streamingConfiguration,
+    getVoiceConnectorStreamingConfigurationResponse_httpStatus,
+
+    -- ** GetVoiceConnectorTermination
+    getVoiceConnectorTermination_voiceConnectorId,
+    getVoiceConnectorTerminationResponse_termination,
+    getVoiceConnectorTerminationResponse_httpStatus,
+
+    -- ** GetVoiceConnectorTerminationHealth
+    getVoiceConnectorTerminationHealth_voiceConnectorId,
+    getVoiceConnectorTerminationHealthResponse_terminationHealth,
+    getVoiceConnectorTerminationHealthResponse_httpStatus,
+
+    -- ** InviteUsers
+    inviteUsers_userType,
+    inviteUsers_accountId,
+    inviteUsers_userEmailList,
+    inviteUsersResponse_invites,
+    inviteUsersResponse_httpStatus,
+
+    -- ** ListAccounts
+    listAccounts_maxResults,
+    listAccounts_name,
+    listAccounts_nextToken,
+    listAccounts_userEmail,
+    listAccountsResponse_accounts,
+    listAccountsResponse_nextToken,
+    listAccountsResponse_httpStatus,
+
+    -- ** ListAppInstanceAdmins
+    listAppInstanceAdmins_maxResults,
+    listAppInstanceAdmins_nextToken,
+    listAppInstanceAdmins_appInstanceArn,
+    listAppInstanceAdminsResponse_appInstanceAdmins,
+    listAppInstanceAdminsResponse_appInstanceArn,
+    listAppInstanceAdminsResponse_nextToken,
+    listAppInstanceAdminsResponse_httpStatus,
+
+    -- ** ListAppInstanceUsers
+    listAppInstanceUsers_maxResults,
+    listAppInstanceUsers_nextToken,
+    listAppInstanceUsers_appInstanceArn,
+    listAppInstanceUsersResponse_appInstanceArn,
+    listAppInstanceUsersResponse_appInstanceUsers,
+    listAppInstanceUsersResponse_nextToken,
+    listAppInstanceUsersResponse_httpStatus,
+
+    -- ** ListAppInstances
+    listAppInstances_maxResults,
+    listAppInstances_nextToken,
+    listAppInstancesResponse_appInstances,
+    listAppInstancesResponse_nextToken,
+    listAppInstancesResponse_httpStatus,
+
+    -- ** ListAttendeeTags
+    listAttendeeTags_meetingId,
+    listAttendeeTags_attendeeId,
+    listAttendeeTagsResponse_tags,
+    listAttendeeTagsResponse_httpStatus,
+
+    -- ** ListAttendees
+    listAttendees_maxResults,
+    listAttendees_nextToken,
+    listAttendees_meetingId,
+    listAttendeesResponse_attendees,
+    listAttendeesResponse_nextToken,
+    listAttendeesResponse_httpStatus,
+
+    -- ** ListBots
+    listBots_maxResults,
+    listBots_nextToken,
+    listBots_accountId,
+    listBotsResponse_bots,
+    listBotsResponse_nextToken,
+    listBotsResponse_httpStatus,
+
+    -- ** ListChannelBans
+    listChannelBans_chimeBearer,
+    listChannelBans_maxResults,
+    listChannelBans_nextToken,
+    listChannelBans_channelArn,
+    listChannelBansResponse_channelArn,
+    listChannelBansResponse_channelBans,
+    listChannelBansResponse_nextToken,
+    listChannelBansResponse_httpStatus,
+
+    -- ** ListChannelMemberships
+    listChannelMemberships_chimeBearer,
+    listChannelMemberships_maxResults,
+    listChannelMemberships_nextToken,
+    listChannelMemberships_type,
+    listChannelMemberships_channelArn,
+    listChannelMembershipsResponse_channelArn,
+    listChannelMembershipsResponse_channelMemberships,
+    listChannelMembershipsResponse_nextToken,
+    listChannelMembershipsResponse_httpStatus,
+
+    -- ** ListChannelMembershipsForAppInstanceUser
+    listChannelMembershipsForAppInstanceUser_appInstanceUserArn,
+    listChannelMembershipsForAppInstanceUser_chimeBearer,
+    listChannelMembershipsForAppInstanceUser_maxResults,
+    listChannelMembershipsForAppInstanceUser_nextToken,
+    listChannelMembershipsForAppInstanceUserResponse_channelMemberships,
+    listChannelMembershipsForAppInstanceUserResponse_nextToken,
+    listChannelMembershipsForAppInstanceUserResponse_httpStatus,
+
+    -- ** ListChannelMessages
+    listChannelMessages_chimeBearer,
+    listChannelMessages_maxResults,
+    listChannelMessages_nextToken,
+    listChannelMessages_notAfter,
+    listChannelMessages_notBefore,
+    listChannelMessages_sortOrder,
+    listChannelMessages_channelArn,
+    listChannelMessagesResponse_channelArn,
+    listChannelMessagesResponse_channelMessages,
+    listChannelMessagesResponse_nextToken,
+    listChannelMessagesResponse_httpStatus,
+
+    -- ** ListChannelModerators
+    listChannelModerators_chimeBearer,
+    listChannelModerators_maxResults,
+    listChannelModerators_nextToken,
+    listChannelModerators_channelArn,
+    listChannelModeratorsResponse_channelArn,
+    listChannelModeratorsResponse_channelModerators,
+    listChannelModeratorsResponse_nextToken,
+    listChannelModeratorsResponse_httpStatus,
+
+    -- ** ListChannels
+    listChannels_chimeBearer,
+    listChannels_maxResults,
+    listChannels_nextToken,
+    listChannels_privacy,
+    listChannels_appInstanceArn,
+    listChannelsResponse_channels,
+    listChannelsResponse_nextToken,
+    listChannelsResponse_httpStatus,
+
+    -- ** ListChannelsModeratedByAppInstanceUser
+    listChannelsModeratedByAppInstanceUser_appInstanceUserArn,
+    listChannelsModeratedByAppInstanceUser_chimeBearer,
+    listChannelsModeratedByAppInstanceUser_maxResults,
+    listChannelsModeratedByAppInstanceUser_nextToken,
+    listChannelsModeratedByAppInstanceUserResponse_channels,
+    listChannelsModeratedByAppInstanceUserResponse_nextToken,
+    listChannelsModeratedByAppInstanceUserResponse_httpStatus,
+
+    -- ** ListMediaCapturePipelines
+    listMediaCapturePipelines_maxResults,
+    listMediaCapturePipelines_nextToken,
+    listMediaCapturePipelinesResponse_mediaCapturePipelines,
+    listMediaCapturePipelinesResponse_nextToken,
+    listMediaCapturePipelinesResponse_httpStatus,
+
+    -- ** ListMeetingTags
+    listMeetingTags_meetingId,
+    listMeetingTagsResponse_tags,
+    listMeetingTagsResponse_httpStatus,
+
+    -- ** ListMeetings
+    listMeetings_maxResults,
+    listMeetings_nextToken,
+    listMeetingsResponse_meetings,
+    listMeetingsResponse_nextToken,
+    listMeetingsResponse_httpStatus,
+
+    -- ** ListPhoneNumberOrders
+    listPhoneNumberOrders_maxResults,
+    listPhoneNumberOrders_nextToken,
+    listPhoneNumberOrdersResponse_nextToken,
+    listPhoneNumberOrdersResponse_phoneNumberOrders,
+    listPhoneNumberOrdersResponse_httpStatus,
+
+    -- ** ListPhoneNumbers
+    listPhoneNumbers_filterName,
+    listPhoneNumbers_filterValue,
+    listPhoneNumbers_maxResults,
+    listPhoneNumbers_nextToken,
+    listPhoneNumbers_productType,
+    listPhoneNumbers_status,
+    listPhoneNumbersResponse_nextToken,
+    listPhoneNumbersResponse_phoneNumbers,
+    listPhoneNumbersResponse_httpStatus,
+
+    -- ** ListProxySessions
+    listProxySessions_maxResults,
+    listProxySessions_nextToken,
+    listProxySessions_status,
+    listProxySessions_voiceConnectorId,
+    listProxySessionsResponse_nextToken,
+    listProxySessionsResponse_proxySessions,
+    listProxySessionsResponse_httpStatus,
+
+    -- ** ListRoomMemberships
+    listRoomMemberships_maxResults,
+    listRoomMemberships_nextToken,
+    listRoomMemberships_accountId,
+    listRoomMemberships_roomId,
+    listRoomMembershipsResponse_nextToken,
+    listRoomMembershipsResponse_roomMemberships,
+    listRoomMembershipsResponse_httpStatus,
+
+    -- ** ListRooms
+    listRooms_maxResults,
+    listRooms_memberId,
+    listRooms_nextToken,
+    listRooms_accountId,
+    listRoomsResponse_nextToken,
+    listRoomsResponse_rooms,
+    listRoomsResponse_httpStatus,
+
+    -- ** ListSipMediaApplications
+    listSipMediaApplications_maxResults,
+    listSipMediaApplications_nextToken,
+    listSipMediaApplicationsResponse_nextToken,
+    listSipMediaApplicationsResponse_sipMediaApplications,
+    listSipMediaApplicationsResponse_httpStatus,
+
+    -- ** ListSipRules
+    listSipRules_maxResults,
+    listSipRules_nextToken,
+    listSipRules_sipMediaApplicationId,
+    listSipRulesResponse_nextToken,
+    listSipRulesResponse_sipRules,
+    listSipRulesResponse_httpStatus,
+
+    -- ** ListSupportedPhoneNumberCountries
+    listSupportedPhoneNumberCountries_productType,
+    listSupportedPhoneNumberCountriesResponse_phoneNumberCountries,
+    listSupportedPhoneNumberCountriesResponse_httpStatus,
+
+    -- ** ListTagsForResource
+    listTagsForResource_resourceARN,
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+
+    -- ** ListUsers
+    listUsers_maxResults,
+    listUsers_nextToken,
+    listUsers_userEmail,
+    listUsers_userType,
+    listUsers_accountId,
+    listUsersResponse_nextToken,
+    listUsersResponse_users,
+    listUsersResponse_httpStatus,
+
+    -- ** ListVoiceConnectorGroups
+    listVoiceConnectorGroups_maxResults,
+    listVoiceConnectorGroups_nextToken,
+    listVoiceConnectorGroupsResponse_nextToken,
+    listVoiceConnectorGroupsResponse_voiceConnectorGroups,
+    listVoiceConnectorGroupsResponse_httpStatus,
+
+    -- ** ListVoiceConnectorTerminationCredentials
+    listVoiceConnectorTerminationCredentials_voiceConnectorId,
+    listVoiceConnectorTerminationCredentialsResponse_usernames,
+    listVoiceConnectorTerminationCredentialsResponse_httpStatus,
+
+    -- ** ListVoiceConnectors
+    listVoiceConnectors_maxResults,
+    listVoiceConnectors_nextToken,
+    listVoiceConnectorsResponse_nextToken,
+    listVoiceConnectorsResponse_voiceConnectors,
+    listVoiceConnectorsResponse_httpStatus,
+
+    -- ** LogoutUser
+    logoutUser_accountId,
+    logoutUser_userId,
+    logoutUserResponse_httpStatus,
+
+    -- ** PutAppInstanceRetentionSettings
+    putAppInstanceRetentionSettings_appInstanceArn,
+    putAppInstanceRetentionSettings_appInstanceRetentionSettings,
+    putAppInstanceRetentionSettingsResponse_appInstanceRetentionSettings,
+    putAppInstanceRetentionSettingsResponse_initiateDeletionTimestamp,
+    putAppInstanceRetentionSettingsResponse_httpStatus,
+
+    -- ** PutAppInstanceStreamingConfigurations
+    putAppInstanceStreamingConfigurations_appInstanceArn,
+    putAppInstanceStreamingConfigurations_appInstanceStreamingConfigurations,
+    putAppInstanceStreamingConfigurationsResponse_appInstanceStreamingConfigurations,
+    putAppInstanceStreamingConfigurationsResponse_httpStatus,
+
+    -- ** PutEventsConfiguration
+    putEventsConfiguration_lambdaFunctionArn,
+    putEventsConfiguration_outboundEventsHTTPSEndpoint,
+    putEventsConfiguration_accountId,
+    putEventsConfiguration_botId,
+    putEventsConfigurationResponse_eventsConfiguration,
+    putEventsConfigurationResponse_httpStatus,
+
+    -- ** PutRetentionSettings
+    putRetentionSettings_accountId,
+    putRetentionSettings_retentionSettings,
+    putRetentionSettingsResponse_initiateDeletionTimestamp,
+    putRetentionSettingsResponse_retentionSettings,
+    putRetentionSettingsResponse_httpStatus,
+
+    -- ** PutSipMediaApplicationLoggingConfiguration
+    putSipMediaApplicationLoggingConfiguration_sipMediaApplicationLoggingConfiguration,
+    putSipMediaApplicationLoggingConfiguration_sipMediaApplicationId,
+    putSipMediaApplicationLoggingConfigurationResponse_sipMediaApplicationLoggingConfiguration,
+    putSipMediaApplicationLoggingConfigurationResponse_httpStatus,
+
+    -- ** PutVoiceConnectorEmergencyCallingConfiguration
+    putVoiceConnectorEmergencyCallingConfiguration_voiceConnectorId,
+    putVoiceConnectorEmergencyCallingConfiguration_emergencyCallingConfiguration,
+    putVoiceConnectorEmergencyCallingConfigurationResponse_emergencyCallingConfiguration,
+    putVoiceConnectorEmergencyCallingConfigurationResponse_httpStatus,
+
+    -- ** PutVoiceConnectorLoggingConfiguration
+    putVoiceConnectorLoggingConfiguration_voiceConnectorId,
+    putVoiceConnectorLoggingConfiguration_loggingConfiguration,
+    putVoiceConnectorLoggingConfigurationResponse_loggingConfiguration,
+    putVoiceConnectorLoggingConfigurationResponse_httpStatus,
+
+    -- ** PutVoiceConnectorOrigination
+    putVoiceConnectorOrigination_voiceConnectorId,
+    putVoiceConnectorOrigination_origination,
+    putVoiceConnectorOriginationResponse_origination,
+    putVoiceConnectorOriginationResponse_httpStatus,
+
+    -- ** PutVoiceConnectorProxy
+    putVoiceConnectorProxy_disabled,
+    putVoiceConnectorProxy_fallBackPhoneNumber,
+    putVoiceConnectorProxy_defaultSessionExpiryMinutes,
+    putVoiceConnectorProxy_phoneNumberPoolCountries,
+    putVoiceConnectorProxy_voiceConnectorId,
+    putVoiceConnectorProxyResponse_proxy,
+    putVoiceConnectorProxyResponse_httpStatus,
+
+    -- ** PutVoiceConnectorStreamingConfiguration
+    putVoiceConnectorStreamingConfiguration_voiceConnectorId,
+    putVoiceConnectorStreamingConfiguration_streamingConfiguration,
+    putVoiceConnectorStreamingConfigurationResponse_streamingConfiguration,
+    putVoiceConnectorStreamingConfigurationResponse_httpStatus,
+
+    -- ** PutVoiceConnectorTermination
+    putVoiceConnectorTermination_voiceConnectorId,
+    putVoiceConnectorTermination_termination,
+    putVoiceConnectorTerminationResponse_termination,
+    putVoiceConnectorTerminationResponse_httpStatus,
+
+    -- ** PutVoiceConnectorTerminationCredentials
+    putVoiceConnectorTerminationCredentials_credentials,
+    putVoiceConnectorTerminationCredentials_voiceConnectorId,
+
+    -- ** RedactChannelMessage
+    redactChannelMessage_chimeBearer,
+    redactChannelMessage_channelArn,
+    redactChannelMessage_messageId,
+    redactChannelMessageResponse_channelArn,
+    redactChannelMessageResponse_messageId,
+    redactChannelMessageResponse_httpStatus,
+
+    -- ** RedactConversationMessage
+    redactConversationMessage_accountId,
+    redactConversationMessage_conversationId,
+    redactConversationMessage_messageId,
+    redactConversationMessageResponse_httpStatus,
+
+    -- ** RedactRoomMessage
+    redactRoomMessage_accountId,
+    redactRoomMessage_roomId,
+    redactRoomMessage_messageId,
+    redactRoomMessageResponse_httpStatus,
+
+    -- ** RegenerateSecurityToken
+    regenerateSecurityToken_accountId,
+    regenerateSecurityToken_botId,
+    regenerateSecurityTokenResponse_bot,
+    regenerateSecurityTokenResponse_httpStatus,
+
+    -- ** ResetPersonalPIN
+    resetPersonalPIN_accountId,
+    resetPersonalPIN_userId,
+    resetPersonalPINResponse_user,
+    resetPersonalPINResponse_httpStatus,
+
+    -- ** RestorePhoneNumber
+    restorePhoneNumber_phoneNumberId,
+    restorePhoneNumberResponse_phoneNumber,
+    restorePhoneNumberResponse_httpStatus,
+
+    -- ** SearchAvailablePhoneNumbers
+    searchAvailablePhoneNumbers_areaCode,
+    searchAvailablePhoneNumbers_city,
+    searchAvailablePhoneNumbers_country,
+    searchAvailablePhoneNumbers_maxResults,
+    searchAvailablePhoneNumbers_nextToken,
+    searchAvailablePhoneNumbers_phoneNumberType,
+    searchAvailablePhoneNumbers_state,
+    searchAvailablePhoneNumbers_tollFreePrefix,
+    searchAvailablePhoneNumbersResponse_e164PhoneNumbers,
+    searchAvailablePhoneNumbersResponse_nextToken,
+    searchAvailablePhoneNumbersResponse_httpStatus,
+
+    -- ** SendChannelMessage
+    sendChannelMessage_chimeBearer,
+    sendChannelMessage_metadata,
+    sendChannelMessage_channelArn,
+    sendChannelMessage_content,
+    sendChannelMessage_type,
+    sendChannelMessage_persistence,
+    sendChannelMessage_clientRequestToken,
+    sendChannelMessageResponse_channelArn,
+    sendChannelMessageResponse_messageId,
+    sendChannelMessageResponse_httpStatus,
+
+    -- ** StartMeetingTranscription
+    startMeetingTranscription_meetingId,
+    startMeetingTranscription_transcriptionConfiguration,
+    startMeetingTranscriptionResponse_httpStatus,
+
+    -- ** StopMeetingTranscription
+    stopMeetingTranscription_meetingId,
+    stopMeetingTranscriptionResponse_httpStatus,
+
+    -- ** TagAttendee
+    tagAttendee_meetingId,
+    tagAttendee_attendeeId,
+    tagAttendee_tags,
+
+    -- ** TagMeeting
+    tagMeeting_meetingId,
+    tagMeeting_tags,
+
+    -- ** TagResource
+    tagResource_resourceARN,
+    tagResource_tags,
+
+    -- ** UntagAttendee
+    untagAttendee_meetingId,
+    untagAttendee_tagKeys,
+    untagAttendee_attendeeId,
+
+    -- ** UntagMeeting
+    untagMeeting_meetingId,
+    untagMeeting_tagKeys,
+
+    -- ** UntagResource
+    untagResource_resourceARN,
+    untagResource_tagKeys,
+
+    -- ** UpdateAccount
+    updateAccount_defaultLicense,
+    updateAccount_name,
+    updateAccount_accountId,
+    updateAccountResponse_account,
+    updateAccountResponse_httpStatus,
+
+    -- ** UpdateAccountSettings
+    updateAccountSettings_accountId,
+    updateAccountSettings_accountSettings,
+    updateAccountSettingsResponse_httpStatus,
+
+    -- ** UpdateAppInstance
+    updateAppInstance_metadata,
+    updateAppInstance_appInstanceArn,
+    updateAppInstance_name,
+    updateAppInstanceResponse_appInstanceArn,
+    updateAppInstanceResponse_httpStatus,
+
+    -- ** UpdateAppInstanceUser
+    updateAppInstanceUser_metadata,
+    updateAppInstanceUser_appInstanceUserArn,
+    updateAppInstanceUser_name,
+    updateAppInstanceUserResponse_appInstanceUserArn,
+    updateAppInstanceUserResponse_httpStatus,
+
+    -- ** UpdateBot
+    updateBot_disabled,
+    updateBot_accountId,
+    updateBot_botId,
+    updateBotResponse_bot,
+    updateBotResponse_httpStatus,
+
+    -- ** UpdateChannel
+    updateChannel_chimeBearer,
+    updateChannel_metadata,
+    updateChannel_channelArn,
+    updateChannel_name,
+    updateChannel_mode,
+    updateChannelResponse_channelArn,
+    updateChannelResponse_httpStatus,
+
+    -- ** UpdateChannelMessage
+    updateChannelMessage_chimeBearer,
+    updateChannelMessage_content,
+    updateChannelMessage_metadata,
+    updateChannelMessage_channelArn,
+    updateChannelMessage_messageId,
+    updateChannelMessageResponse_channelArn,
+    updateChannelMessageResponse_messageId,
+    updateChannelMessageResponse_httpStatus,
+
+    -- ** UpdateChannelReadMarker
+    updateChannelReadMarker_chimeBearer,
+    updateChannelReadMarker_channelArn,
+    updateChannelReadMarkerResponse_channelArn,
+    updateChannelReadMarkerResponse_httpStatus,
+
+    -- ** UpdateGlobalSettings
+    updateGlobalSettings_businessCalling,
+    updateGlobalSettings_voiceConnector,
+
+    -- ** UpdatePhoneNumber
+    updatePhoneNumber_callingName,
+    updatePhoneNumber_productType,
+    updatePhoneNumber_phoneNumberId,
+    updatePhoneNumberResponse_phoneNumber,
+    updatePhoneNumberResponse_httpStatus,
+
+    -- ** UpdatePhoneNumberSettings
+    updatePhoneNumberSettings_callingName,
+
+    -- ** UpdateProxySession
+    updateProxySession_expiryMinutes,
+    updateProxySession_capabilities,
+    updateProxySession_voiceConnectorId,
+    updateProxySession_proxySessionId,
+    updateProxySessionResponse_proxySession,
+    updateProxySessionResponse_httpStatus,
+
+    -- ** UpdateRoom
+    updateRoom_name,
+    updateRoom_accountId,
+    updateRoom_roomId,
+    updateRoomResponse_room,
+    updateRoomResponse_httpStatus,
+
+    -- ** UpdateRoomMembership
+    updateRoomMembership_role,
+    updateRoomMembership_accountId,
+    updateRoomMembership_roomId,
+    updateRoomMembership_memberId,
+    updateRoomMembershipResponse_roomMembership,
+    updateRoomMembershipResponse_httpStatus,
+
+    -- ** UpdateSipMediaApplication
+    updateSipMediaApplication_endpoints,
+    updateSipMediaApplication_name,
+    updateSipMediaApplication_sipMediaApplicationId,
+    updateSipMediaApplicationResponse_sipMediaApplication,
+    updateSipMediaApplicationResponse_httpStatus,
+
+    -- ** UpdateSipMediaApplicationCall
+    updateSipMediaApplicationCall_sipMediaApplicationId,
+    updateSipMediaApplicationCall_transactionId,
+    updateSipMediaApplicationCall_arguments,
+    updateSipMediaApplicationCallResponse_sipMediaApplicationCall,
+    updateSipMediaApplicationCallResponse_httpStatus,
+
+    -- ** UpdateSipRule
+    updateSipRule_disabled,
+    updateSipRule_targetApplications,
+    updateSipRule_sipRuleId,
+    updateSipRule_name,
+    updateSipRuleResponse_sipRule,
+    updateSipRuleResponse_httpStatus,
+
+    -- ** UpdateUser
+    updateUser_alexaForBusinessMetadata,
+    updateUser_licenseType,
+    updateUser_userType,
+    updateUser_accountId,
+    updateUser_userId,
+    updateUserResponse_user,
+    updateUserResponse_httpStatus,
+
+    -- ** UpdateUserSettings
+    updateUserSettings_accountId,
+    updateUserSettings_userId,
+    updateUserSettings_userSettings,
+
+    -- ** UpdateVoiceConnector
+    updateVoiceConnector_voiceConnectorId,
+    updateVoiceConnector_name,
+    updateVoiceConnector_requireEncryption,
+    updateVoiceConnectorResponse_voiceConnector,
+    updateVoiceConnectorResponse_httpStatus,
+
+    -- ** UpdateVoiceConnectorGroup
+    updateVoiceConnectorGroup_voiceConnectorGroupId,
+    updateVoiceConnectorGroup_name,
+    updateVoiceConnectorGroup_voiceConnectorItems,
+    updateVoiceConnectorGroupResponse_voiceConnectorGroup,
+    updateVoiceConnectorGroupResponse_httpStatus,
+
+    -- ** ValidateE911Address
+    validateE911Address_awsAccountId,
+    validateE911Address_streetNumber,
+    validateE911Address_streetInfo,
+    validateE911Address_city,
+    validateE911Address_state,
+    validateE911Address_country,
+    validateE911Address_postalCode,
+    validateE911AddressResponse_address,
+    validateE911AddressResponse_addressExternalId,
+    validateE911AddressResponse_candidateAddressList,
+    validateE911AddressResponse_validationResult,
+    validateE911AddressResponse_httpStatus,
+
+    -- * Types
+
+    -- ** Account
+    account_accountStatus,
+    account_accountType,
+    account_createdTimestamp,
+    account_defaultLicense,
+    account_signinDelegateGroups,
+    account_supportedLicenses,
+    account_awsAccountId,
+    account_accountId,
+    account_name,
+
+    -- ** AccountSettings
+    accountSettings_disableRemoteControl,
+    accountSettings_enableDialOut,
+
+    -- ** Address
+    address_city,
+    address_country,
+    address_postDirectional,
+    address_postalCode,
+    address_postalCodePlus4,
+    address_preDirectional,
+    address_state,
+    address_streetName,
+    address_streetNumber,
+    address_streetSuffix,
+
+    -- ** AlexaForBusinessMetadata
+    alexaForBusinessMetadata_alexaForBusinessRoomArn,
+    alexaForBusinessMetadata_isAlexaForBusinessEnabled,
+
+    -- ** AppInstance
+    appInstance_appInstanceArn,
+    appInstance_createdTimestamp,
+    appInstance_lastUpdatedTimestamp,
+    appInstance_metadata,
+    appInstance_name,
+
+    -- ** AppInstanceAdmin
+    appInstanceAdmin_admin,
+    appInstanceAdmin_appInstanceArn,
+    appInstanceAdmin_createdTimestamp,
+
+    -- ** AppInstanceAdminSummary
+    appInstanceAdminSummary_admin,
+
+    -- ** AppInstanceRetentionSettings
+    appInstanceRetentionSettings_channelRetentionSettings,
+
+    -- ** AppInstanceStreamingConfiguration
+    appInstanceStreamingConfiguration_appInstanceDataType,
+    appInstanceStreamingConfiguration_resourceArn,
+
+    -- ** AppInstanceSummary
+    appInstanceSummary_appInstanceArn,
+    appInstanceSummary_metadata,
+    appInstanceSummary_name,
+
+    -- ** AppInstanceUser
+    appInstanceUser_appInstanceUserArn,
+    appInstanceUser_createdTimestamp,
+    appInstanceUser_lastUpdatedTimestamp,
+    appInstanceUser_metadata,
+    appInstanceUser_name,
+
+    -- ** AppInstanceUserMembershipSummary
+    appInstanceUserMembershipSummary_readMarkerTimestamp,
+    appInstanceUserMembershipSummary_type,
+
+    -- ** AppInstanceUserSummary
+    appInstanceUserSummary_appInstanceUserArn,
+    appInstanceUserSummary_metadata,
+    appInstanceUserSummary_name,
+
+    -- ** ArtifactsConfiguration
+    artifactsConfiguration_audio,
+    artifactsConfiguration_video,
+    artifactsConfiguration_content,
+
+    -- ** Attendee
+    attendee_attendeeId,
+    attendee_externalUserId,
+    attendee_joinToken,
+
+    -- ** AudioArtifactsConfiguration
+    audioArtifactsConfiguration_muxType,
+
+    -- ** BatchChannelMemberships
+    batchChannelMemberships_channelArn,
+    batchChannelMemberships_invitedBy,
+    batchChannelMemberships_members,
+    batchChannelMemberships_type,
+
+    -- ** BatchCreateChannelMembershipError
+    batchCreateChannelMembershipError_errorCode,
+    batchCreateChannelMembershipError_errorMessage,
+    batchCreateChannelMembershipError_memberArn,
+
+    -- ** Bot
+    bot_botEmail,
+    bot_botId,
+    bot_botType,
+    bot_createdTimestamp,
+    bot_disabled,
+    bot_displayName,
+    bot_securityToken,
+    bot_updatedTimestamp,
+    bot_userId,
+
+    -- ** BusinessCallingSettings
+    businessCallingSettings_cdrBucket,
+
+    -- ** CandidateAddress
+    candidateAddress_city,
+    candidateAddress_country,
+    candidateAddress_postalCode,
+    candidateAddress_postalCodePlus4,
+    candidateAddress_state,
+    candidateAddress_streetInfo,
+    candidateAddress_streetNumber,
+
+    -- ** Channel
+    channel_channelArn,
+    channel_createdBy,
+    channel_createdTimestamp,
+    channel_lastMessageTimestamp,
+    channel_lastUpdatedTimestamp,
+    channel_metadata,
+    channel_mode,
+    channel_name,
+    channel_privacy,
+
+    -- ** ChannelBan
+    channelBan_channelArn,
+    channelBan_createdBy,
+    channelBan_createdTimestamp,
+    channelBan_member,
+
+    -- ** ChannelBanSummary
+    channelBanSummary_member,
+
+    -- ** ChannelMembership
+    channelMembership_channelArn,
+    channelMembership_createdTimestamp,
+    channelMembership_invitedBy,
+    channelMembership_lastUpdatedTimestamp,
+    channelMembership_member,
+    channelMembership_type,
+
+    -- ** ChannelMembershipForAppInstanceUserSummary
+    channelMembershipForAppInstanceUserSummary_appInstanceUserMembershipSummary,
+    channelMembershipForAppInstanceUserSummary_channelSummary,
+
+    -- ** ChannelMembershipSummary
+    channelMembershipSummary_member,
+
+    -- ** ChannelMessage
+    channelMessage_channelArn,
+    channelMessage_content,
+    channelMessage_createdTimestamp,
+    channelMessage_lastEditedTimestamp,
+    channelMessage_lastUpdatedTimestamp,
+    channelMessage_messageId,
+    channelMessage_metadata,
+    channelMessage_persistence,
+    channelMessage_redacted,
+    channelMessage_sender,
+    channelMessage_type,
+
+    -- ** ChannelMessageSummary
+    channelMessageSummary_content,
+    channelMessageSummary_createdTimestamp,
+    channelMessageSummary_lastEditedTimestamp,
+    channelMessageSummary_lastUpdatedTimestamp,
+    channelMessageSummary_messageId,
+    channelMessageSummary_metadata,
+    channelMessageSummary_redacted,
+    channelMessageSummary_sender,
+    channelMessageSummary_type,
+
+    -- ** ChannelModeratedByAppInstanceUserSummary
+    channelModeratedByAppInstanceUserSummary_channelSummary,
+
+    -- ** ChannelModerator
+    channelModerator_channelArn,
+    channelModerator_createdBy,
+    channelModerator_createdTimestamp,
+    channelModerator_moderator,
+
+    -- ** ChannelModeratorSummary
+    channelModeratorSummary_moderator,
+
+    -- ** ChannelRetentionSettings
+    channelRetentionSettings_retentionDays,
+
+    -- ** ChannelSummary
+    channelSummary_channelArn,
+    channelSummary_lastMessageTimestamp,
+    channelSummary_metadata,
+    channelSummary_mode,
+    channelSummary_name,
+    channelSummary_privacy,
+
+    -- ** ChimeSdkMeetingConfiguration
+    chimeSdkMeetingConfiguration_artifactsConfiguration,
+    chimeSdkMeetingConfiguration_sourceConfiguration,
+
+    -- ** ContentArtifactsConfiguration
+    contentArtifactsConfiguration_muxType,
+    contentArtifactsConfiguration_state,
+
+    -- ** ConversationRetentionSettings
+    conversationRetentionSettings_retentionDays,
+
+    -- ** CreateAttendeeError
+    createAttendeeError_errorCode,
+    createAttendeeError_errorMessage,
+    createAttendeeError_externalUserId,
+
+    -- ** CreateAttendeeRequestItem
+    createAttendeeRequestItem_tags,
+    createAttendeeRequestItem_externalUserId,
+
+    -- ** Credential
+    credential_password,
+    credential_username,
+
+    -- ** DNISEmergencyCallingConfiguration
+    dNISEmergencyCallingConfiguration_testPhoneNumber,
+    dNISEmergencyCallingConfiguration_emergencyPhoneNumber,
+    dNISEmergencyCallingConfiguration_callingCountry,
+
+    -- ** EmergencyCallingConfiguration
+    emergencyCallingConfiguration_dnis,
+
+    -- ** EngineTranscribeMedicalSettings
+    engineTranscribeMedicalSettings_contentIdentificationType,
+    engineTranscribeMedicalSettings_region,
+    engineTranscribeMedicalSettings_vocabularyName,
+    engineTranscribeMedicalSettings_languageCode,
+    engineTranscribeMedicalSettings_specialty,
+    engineTranscribeMedicalSettings_type,
+
+    -- ** EngineTranscribeSettings
+    engineTranscribeSettings_contentIdentificationType,
+    engineTranscribeSettings_contentRedactionType,
+    engineTranscribeSettings_enablePartialResultsStabilization,
+    engineTranscribeSettings_languageModelName,
+    engineTranscribeSettings_partialResultsStability,
+    engineTranscribeSettings_piiEntityTypes,
+    engineTranscribeSettings_region,
+    engineTranscribeSettings_vocabularyFilterMethod,
+    engineTranscribeSettings_vocabularyFilterName,
+    engineTranscribeSettings_vocabularyName,
+    engineTranscribeSettings_languageCode,
+
+    -- ** EventsConfiguration
+    eventsConfiguration_botId,
+    eventsConfiguration_lambdaFunctionArn,
+    eventsConfiguration_outboundEventsHTTPSEndpoint,
+
+    -- ** GeoMatchParams
+    geoMatchParams_country,
+    geoMatchParams_areaCode,
+
+    -- ** Identity
+    identity_arn,
+    identity_name,
+
+    -- ** Invite
+    invite_emailAddress,
+    invite_emailStatus,
+    invite_inviteId,
+    invite_status,
+
+    -- ** LoggingConfiguration
+    loggingConfiguration_enableMediaMetricLogs,
+    loggingConfiguration_enableSIPLogs,
+
+    -- ** MediaCapturePipeline
+    mediaCapturePipeline_chimeSdkMeetingConfiguration,
+    mediaCapturePipeline_createdTimestamp,
+    mediaCapturePipeline_mediaPipelineId,
+    mediaCapturePipeline_sinkArn,
+    mediaCapturePipeline_sinkType,
+    mediaCapturePipeline_sourceArn,
+    mediaCapturePipeline_sourceType,
+    mediaCapturePipeline_status,
+    mediaCapturePipeline_updatedTimestamp,
+
+    -- ** MediaPlacement
+    mediaPlacement_audioFallbackUrl,
+    mediaPlacement_audioHostUrl,
+    mediaPlacement_eventIngestionUrl,
+    mediaPlacement_screenDataUrl,
+    mediaPlacement_screenSharingUrl,
+    mediaPlacement_screenViewingUrl,
+    mediaPlacement_signalingUrl,
+    mediaPlacement_turnControlUrl,
+
+    -- ** Meeting
+    meeting_externalMeetingId,
+    meeting_mediaPlacement,
+    meeting_mediaRegion,
+    meeting_meetingId,
+
+    -- ** MeetingNotificationConfiguration
+    meetingNotificationConfiguration_snsTopicArn,
+    meetingNotificationConfiguration_sqsQueueArn,
+
+    -- ** Member
+    member_accountId,
+    member_email,
+    member_fullName,
+    member_memberId,
+    member_memberType,
+
+    -- ** MemberError
+    memberError_errorCode,
+    memberError_errorMessage,
+    memberError_memberId,
+
+    -- ** MembershipItem
+    membershipItem_memberId,
+    membershipItem_role,
+
+    -- ** MessagingSessionEndpoint
+    messagingSessionEndpoint_url,
+
+    -- ** OrderedPhoneNumber
+    orderedPhoneNumber_e164PhoneNumber,
+    orderedPhoneNumber_status,
+
+    -- ** Origination
+    origination_disabled,
+    origination_routes,
+
+    -- ** OriginationRoute
+    originationRoute_host,
+    originationRoute_port,
+    originationRoute_priority,
+    originationRoute_protocol,
+    originationRoute_weight,
+
+    -- ** Participant
+    participant_phoneNumber,
+    participant_proxyPhoneNumber,
+
+    -- ** PhoneNumber
+    phoneNumber_associations,
+    phoneNumber_callingName,
+    phoneNumber_callingNameStatus,
+    phoneNumber_capabilities,
+    phoneNumber_country,
+    phoneNumber_createdTimestamp,
+    phoneNumber_deletionTimestamp,
+    phoneNumber_e164PhoneNumber,
+    phoneNumber_phoneNumberId,
+    phoneNumber_productType,
+    phoneNumber_status,
+    phoneNumber_type,
+    phoneNumber_updatedTimestamp,
+
+    -- ** PhoneNumberAssociation
+    phoneNumberAssociation_associatedTimestamp,
+    phoneNumberAssociation_name,
+    phoneNumberAssociation_value,
+
+    -- ** PhoneNumberCapabilities
+    phoneNumberCapabilities_inboundCall,
+    phoneNumberCapabilities_inboundMMS,
+    phoneNumberCapabilities_inboundSMS,
+    phoneNumberCapabilities_outboundCall,
+    phoneNumberCapabilities_outboundMMS,
+    phoneNumberCapabilities_outboundSMS,
+
+    -- ** PhoneNumberCountry
+    phoneNumberCountry_countryCode,
+    phoneNumberCountry_supportedPhoneNumberTypes,
+
+    -- ** PhoneNumberError
+    phoneNumberError_errorCode,
+    phoneNumberError_errorMessage,
+    phoneNumberError_phoneNumberId,
+
+    -- ** PhoneNumberOrder
+    phoneNumberOrder_createdTimestamp,
+    phoneNumberOrder_orderedPhoneNumbers,
+    phoneNumberOrder_phoneNumberOrderId,
+    phoneNumberOrder_productType,
+    phoneNumberOrder_status,
+    phoneNumberOrder_updatedTimestamp,
+
+    -- ** Proxy
+    proxy_defaultSessionExpiryMinutes,
+    proxy_disabled,
+    proxy_fallBackPhoneNumber,
+    proxy_phoneNumberCountries,
+
+    -- ** ProxySession
+    proxySession_capabilities,
+    proxySession_createdTimestamp,
+    proxySession_endedTimestamp,
+    proxySession_expiryMinutes,
+    proxySession_geoMatchLevel,
+    proxySession_geoMatchParams,
+    proxySession_name,
+    proxySession_numberSelectionBehavior,
+    proxySession_participants,
+    proxySession_proxySessionId,
+    proxySession_status,
+    proxySession_updatedTimestamp,
+    proxySession_voiceConnectorId,
+
+    -- ** RetentionSettings
+    retentionSettings_conversationRetentionSettings,
+    retentionSettings_roomRetentionSettings,
+
+    -- ** Room
+    room_accountId,
+    room_createdBy,
+    room_createdTimestamp,
+    room_name,
+    room_roomId,
+    room_updatedTimestamp,
+
+    -- ** RoomMembership
+    roomMembership_invitedBy,
+    roomMembership_member,
+    roomMembership_role,
+    roomMembership_roomId,
+    roomMembership_updatedTimestamp,
+
+    -- ** RoomRetentionSettings
+    roomRetentionSettings_retentionDays,
+
+    -- ** SelectedVideoStreams
+    selectedVideoStreams_attendeeIds,
+    selectedVideoStreams_externalUserIds,
+
+    -- ** SigninDelegateGroup
+    signinDelegateGroup_groupName,
+
+    -- ** SipMediaApplication
+    sipMediaApplication_awsRegion,
+    sipMediaApplication_createdTimestamp,
+    sipMediaApplication_endpoints,
+    sipMediaApplication_name,
+    sipMediaApplication_sipMediaApplicationId,
+    sipMediaApplication_updatedTimestamp,
+
+    -- ** SipMediaApplicationCall
+    sipMediaApplicationCall_transactionId,
+
+    -- ** SipMediaApplicationEndpoint
+    sipMediaApplicationEndpoint_lambdaArn,
+
+    -- ** SipMediaApplicationLoggingConfiguration
+    sipMediaApplicationLoggingConfiguration_enableSipMediaApplicationMessageLogs,
+
+    -- ** SipRule
+    sipRule_createdTimestamp,
+    sipRule_disabled,
+    sipRule_name,
+    sipRule_sipRuleId,
+    sipRule_targetApplications,
+    sipRule_triggerType,
+    sipRule_triggerValue,
+    sipRule_updatedTimestamp,
+
+    -- ** SipRuleTargetApplication
+    sipRuleTargetApplication_awsRegion,
+    sipRuleTargetApplication_priority,
+    sipRuleTargetApplication_sipMediaApplicationId,
+
+    -- ** SourceConfiguration
+    sourceConfiguration_selectedVideoStreams,
+
+    -- ** StreamingConfiguration
+    streamingConfiguration_disabled,
+    streamingConfiguration_streamingNotificationTargets,
+    streamingConfiguration_dataRetentionInHours,
+
+    -- ** StreamingNotificationTarget
+    streamingNotificationTarget_notificationTarget,
+
+    -- ** Tag
+    tag_key,
+    tag_value,
+
+    -- ** TelephonySettings
+    telephonySettings_inboundCalling,
+    telephonySettings_outboundCalling,
+    telephonySettings_sms,
+
+    -- ** Termination
+    termination_callingRegions,
+    termination_cidrAllowedList,
+    termination_cpsLimit,
+    termination_defaultPhoneNumber,
+    termination_disabled,
+
+    -- ** TerminationHealth
+    terminationHealth_source,
+    terminationHealth_timestamp,
+
+    -- ** TranscriptionConfiguration
+    transcriptionConfiguration_engineTranscribeMedicalSettings,
+    transcriptionConfiguration_engineTranscribeSettings,
+
+    -- ** UpdatePhoneNumberRequestItem
+    updatePhoneNumberRequestItem_callingName,
+    updatePhoneNumberRequestItem_productType,
+    updatePhoneNumberRequestItem_phoneNumberId,
+
+    -- ** UpdateUserRequestItem
+    updateUserRequestItem_alexaForBusinessMetadata,
+    updateUserRequestItem_licenseType,
+    updateUserRequestItem_userType,
+    updateUserRequestItem_userId,
+
+    -- ** User
+    user_accountId,
+    user_alexaForBusinessMetadata,
+    user_displayName,
+    user_invitedOn,
+    user_licenseType,
+    user_personalPIN,
+    user_primaryEmail,
+    user_primaryProvisionedNumber,
+    user_registeredOn,
+    user_userInvitationStatus,
+    user_userRegistrationStatus,
+    user_userType,
+    user_userId,
+
+    -- ** UserError
+    userError_errorCode,
+    userError_errorMessage,
+    userError_userId,
+
+    -- ** UserSettings
+    userSettings_telephony,
+
+    -- ** VideoArtifactsConfiguration
+    videoArtifactsConfiguration_muxType,
+    videoArtifactsConfiguration_state,
+
+    -- ** VoiceConnector
+    voiceConnector_awsRegion,
+    voiceConnector_createdTimestamp,
+    voiceConnector_name,
+    voiceConnector_outboundHostName,
+    voiceConnector_requireEncryption,
+    voiceConnector_updatedTimestamp,
+    voiceConnector_voiceConnectorArn,
+    voiceConnector_voiceConnectorId,
+
+    -- ** VoiceConnectorGroup
+    voiceConnectorGroup_createdTimestamp,
+    voiceConnectorGroup_name,
+    voiceConnectorGroup_updatedTimestamp,
+    voiceConnectorGroup_voiceConnectorGroupArn,
+    voiceConnectorGroup_voiceConnectorGroupId,
+    voiceConnectorGroup_voiceConnectorItems,
+
+    -- ** VoiceConnectorItem
+    voiceConnectorItem_voiceConnectorId,
+    voiceConnectorItem_priority,
+
+    -- ** VoiceConnectorSettings
+    voiceConnectorSettings_cdrBucket,
+  )
+where
+
+import Amazonka.Chime.AssociatePhoneNumberWithUser
+import Amazonka.Chime.AssociatePhoneNumbersWithVoiceConnector
+import Amazonka.Chime.AssociatePhoneNumbersWithVoiceConnectorGroup
+import Amazonka.Chime.AssociateSigninDelegateGroupsWithAccount
+import Amazonka.Chime.BatchCreateAttendee
+import Amazonka.Chime.BatchCreateChannelMembership
+import Amazonka.Chime.BatchCreateRoomMembership
+import Amazonka.Chime.BatchDeletePhoneNumber
+import Amazonka.Chime.BatchSuspendUser
+import Amazonka.Chime.BatchUnsuspendUser
+import Amazonka.Chime.BatchUpdatePhoneNumber
+import Amazonka.Chime.BatchUpdateUser
+import Amazonka.Chime.CreateAccount
+import Amazonka.Chime.CreateAppInstance
+import Amazonka.Chime.CreateAppInstanceAdmin
+import Amazonka.Chime.CreateAppInstanceUser
+import Amazonka.Chime.CreateAttendee
+import Amazonka.Chime.CreateBot
+import Amazonka.Chime.CreateChannel
+import Amazonka.Chime.CreateChannelBan
+import Amazonka.Chime.CreateChannelMembership
+import Amazonka.Chime.CreateChannelModerator
+import Amazonka.Chime.CreateMediaCapturePipeline
+import Amazonka.Chime.CreateMeeting
+import Amazonka.Chime.CreateMeetingDialOut
+import Amazonka.Chime.CreateMeetingWithAttendees
+import Amazonka.Chime.CreatePhoneNumberOrder
+import Amazonka.Chime.CreateProxySession
+import Amazonka.Chime.CreateRoom
+import Amazonka.Chime.CreateRoomMembership
+import Amazonka.Chime.CreateSipMediaApplication
+import Amazonka.Chime.CreateSipMediaApplicationCall
+import Amazonka.Chime.CreateSipRule
+import Amazonka.Chime.CreateUser
+import Amazonka.Chime.CreateVoiceConnector
+import Amazonka.Chime.CreateVoiceConnectorGroup
+import Amazonka.Chime.DeleteAccount
+import Amazonka.Chime.DeleteAppInstance
+import Amazonka.Chime.DeleteAppInstanceAdmin
+import Amazonka.Chime.DeleteAppInstanceStreamingConfigurations
+import Amazonka.Chime.DeleteAppInstanceUser
+import Amazonka.Chime.DeleteAttendee
+import Amazonka.Chime.DeleteChannel
+import Amazonka.Chime.DeleteChannelBan
+import Amazonka.Chime.DeleteChannelMembership
+import Amazonka.Chime.DeleteChannelMessage
+import Amazonka.Chime.DeleteChannelModerator
+import Amazonka.Chime.DeleteEventsConfiguration
+import Amazonka.Chime.DeleteMediaCapturePipeline
+import Amazonka.Chime.DeleteMeeting
+import Amazonka.Chime.DeletePhoneNumber
+import Amazonka.Chime.DeleteProxySession
+import Amazonka.Chime.DeleteRoom
+import Amazonka.Chime.DeleteRoomMembership
+import Amazonka.Chime.DeleteSipMediaApplication
+import Amazonka.Chime.DeleteSipRule
+import Amazonka.Chime.DeleteVoiceConnector
+import Amazonka.Chime.DeleteVoiceConnectorEmergencyCallingConfiguration
+import Amazonka.Chime.DeleteVoiceConnectorGroup
+import Amazonka.Chime.DeleteVoiceConnectorOrigination
+import Amazonka.Chime.DeleteVoiceConnectorProxy
+import Amazonka.Chime.DeleteVoiceConnectorStreamingConfiguration
+import Amazonka.Chime.DeleteVoiceConnectorTermination
+import Amazonka.Chime.DeleteVoiceConnectorTerminationCredentials
+import Amazonka.Chime.DescribeAppInstance
+import Amazonka.Chime.DescribeAppInstanceAdmin
+import Amazonka.Chime.DescribeAppInstanceUser
+import Amazonka.Chime.DescribeChannel
+import Amazonka.Chime.DescribeChannelBan
+import Amazonka.Chime.DescribeChannelMembership
+import Amazonka.Chime.DescribeChannelMembershipForAppInstanceUser
+import Amazonka.Chime.DescribeChannelModeratedByAppInstanceUser
+import Amazonka.Chime.DescribeChannelModerator
+import Amazonka.Chime.DisassociatePhoneNumberFromUser
+import Amazonka.Chime.DisassociatePhoneNumbersFromVoiceConnector
+import Amazonka.Chime.DisassociatePhoneNumbersFromVoiceConnectorGroup
+import Amazonka.Chime.DisassociateSigninDelegateGroupsFromAccount
+import Amazonka.Chime.GetAccount
+import Amazonka.Chime.GetAccountSettings
+import Amazonka.Chime.GetAppInstanceRetentionSettings
+import Amazonka.Chime.GetAppInstanceStreamingConfigurations
+import Amazonka.Chime.GetAttendee
+import Amazonka.Chime.GetBot
+import Amazonka.Chime.GetChannelMessage
+import Amazonka.Chime.GetEventsConfiguration
+import Amazonka.Chime.GetGlobalSettings
+import Amazonka.Chime.GetMediaCapturePipeline
+import Amazonka.Chime.GetMeeting
+import Amazonka.Chime.GetMessagingSessionEndpoint
+import Amazonka.Chime.GetPhoneNumber
+import Amazonka.Chime.GetPhoneNumberOrder
+import Amazonka.Chime.GetPhoneNumberSettings
+import Amazonka.Chime.GetProxySession
+import Amazonka.Chime.GetRetentionSettings
+import Amazonka.Chime.GetRoom
+import Amazonka.Chime.GetSipMediaApplication
+import Amazonka.Chime.GetSipMediaApplicationLoggingConfiguration
+import Amazonka.Chime.GetSipRule
+import Amazonka.Chime.GetUser
+import Amazonka.Chime.GetUserSettings
+import Amazonka.Chime.GetVoiceConnector
+import Amazonka.Chime.GetVoiceConnectorEmergencyCallingConfiguration
+import Amazonka.Chime.GetVoiceConnectorGroup
+import Amazonka.Chime.GetVoiceConnectorLoggingConfiguration
+import Amazonka.Chime.GetVoiceConnectorOrigination
+import Amazonka.Chime.GetVoiceConnectorProxy
+import Amazonka.Chime.GetVoiceConnectorStreamingConfiguration
+import Amazonka.Chime.GetVoiceConnectorTermination
+import Amazonka.Chime.GetVoiceConnectorTerminationHealth
+import Amazonka.Chime.InviteUsers
+import Amazonka.Chime.ListAccounts
+import Amazonka.Chime.ListAppInstanceAdmins
+import Amazonka.Chime.ListAppInstanceUsers
+import Amazonka.Chime.ListAppInstances
+import Amazonka.Chime.ListAttendeeTags
+import Amazonka.Chime.ListAttendees
+import Amazonka.Chime.ListBots
+import Amazonka.Chime.ListChannelBans
+import Amazonka.Chime.ListChannelMemberships
+import Amazonka.Chime.ListChannelMembershipsForAppInstanceUser
+import Amazonka.Chime.ListChannelMessages
+import Amazonka.Chime.ListChannelModerators
+import Amazonka.Chime.ListChannels
+import Amazonka.Chime.ListChannelsModeratedByAppInstanceUser
+import Amazonka.Chime.ListMediaCapturePipelines
+import Amazonka.Chime.ListMeetingTags
+import Amazonka.Chime.ListMeetings
+import Amazonka.Chime.ListPhoneNumberOrders
+import Amazonka.Chime.ListPhoneNumbers
+import Amazonka.Chime.ListProxySessions
+import Amazonka.Chime.ListRoomMemberships
+import Amazonka.Chime.ListRooms
+import Amazonka.Chime.ListSipMediaApplications
+import Amazonka.Chime.ListSipRules
+import Amazonka.Chime.ListSupportedPhoneNumberCountries
+import Amazonka.Chime.ListTagsForResource
+import Amazonka.Chime.ListUsers
+import Amazonka.Chime.ListVoiceConnectorGroups
+import Amazonka.Chime.ListVoiceConnectorTerminationCredentials
+import Amazonka.Chime.ListVoiceConnectors
+import Amazonka.Chime.LogoutUser
+import Amazonka.Chime.PutAppInstanceRetentionSettings
+import Amazonka.Chime.PutAppInstanceStreamingConfigurations
+import Amazonka.Chime.PutEventsConfiguration
+import Amazonka.Chime.PutRetentionSettings
+import Amazonka.Chime.PutSipMediaApplicationLoggingConfiguration
+import Amazonka.Chime.PutVoiceConnectorEmergencyCallingConfiguration
+import Amazonka.Chime.PutVoiceConnectorLoggingConfiguration
+import Amazonka.Chime.PutVoiceConnectorOrigination
+import Amazonka.Chime.PutVoiceConnectorProxy
+import Amazonka.Chime.PutVoiceConnectorStreamingConfiguration
+import Amazonka.Chime.PutVoiceConnectorTermination
+import Amazonka.Chime.PutVoiceConnectorTerminationCredentials
+import Amazonka.Chime.RedactChannelMessage
+import Amazonka.Chime.RedactConversationMessage
+import Amazonka.Chime.RedactRoomMessage
+import Amazonka.Chime.RegenerateSecurityToken
+import Amazonka.Chime.ResetPersonalPIN
+import Amazonka.Chime.RestorePhoneNumber
+import Amazonka.Chime.SearchAvailablePhoneNumbers
+import Amazonka.Chime.SendChannelMessage
+import Amazonka.Chime.StartMeetingTranscription
+import Amazonka.Chime.StopMeetingTranscription
+import Amazonka.Chime.TagAttendee
+import Amazonka.Chime.TagMeeting
+import Amazonka.Chime.TagResource
+import Amazonka.Chime.Types.Account
+import Amazonka.Chime.Types.AccountSettings
+import Amazonka.Chime.Types.Address
+import Amazonka.Chime.Types.AlexaForBusinessMetadata
+import Amazonka.Chime.Types.AppInstance
+import Amazonka.Chime.Types.AppInstanceAdmin
+import Amazonka.Chime.Types.AppInstanceAdminSummary
+import Amazonka.Chime.Types.AppInstanceRetentionSettings
+import Amazonka.Chime.Types.AppInstanceStreamingConfiguration
+import Amazonka.Chime.Types.AppInstanceSummary
+import Amazonka.Chime.Types.AppInstanceUser
+import Amazonka.Chime.Types.AppInstanceUserMembershipSummary
+import Amazonka.Chime.Types.AppInstanceUserSummary
+import Amazonka.Chime.Types.ArtifactsConfiguration
+import Amazonka.Chime.Types.Attendee
+import Amazonka.Chime.Types.AudioArtifactsConfiguration
+import Amazonka.Chime.Types.BatchChannelMemberships
+import Amazonka.Chime.Types.BatchCreateChannelMembershipError
+import Amazonka.Chime.Types.Bot
+import Amazonka.Chime.Types.BusinessCallingSettings
+import Amazonka.Chime.Types.CandidateAddress
+import Amazonka.Chime.Types.Channel
+import Amazonka.Chime.Types.ChannelBan
+import Amazonka.Chime.Types.ChannelBanSummary
+import Amazonka.Chime.Types.ChannelMembership
+import Amazonka.Chime.Types.ChannelMembershipForAppInstanceUserSummary
+import Amazonka.Chime.Types.ChannelMembershipSummary
+import Amazonka.Chime.Types.ChannelMessage
+import Amazonka.Chime.Types.ChannelMessageSummary
+import Amazonka.Chime.Types.ChannelModeratedByAppInstanceUserSummary
+import Amazonka.Chime.Types.ChannelModerator
+import Amazonka.Chime.Types.ChannelModeratorSummary
+import Amazonka.Chime.Types.ChannelRetentionSettings
+import Amazonka.Chime.Types.ChannelSummary
+import Amazonka.Chime.Types.ChimeSdkMeetingConfiguration
+import Amazonka.Chime.Types.ContentArtifactsConfiguration
+import Amazonka.Chime.Types.ConversationRetentionSettings
+import Amazonka.Chime.Types.CreateAttendeeError
+import Amazonka.Chime.Types.CreateAttendeeRequestItem
+import Amazonka.Chime.Types.Credential
+import Amazonka.Chime.Types.DNISEmergencyCallingConfiguration
+import Amazonka.Chime.Types.EmergencyCallingConfiguration
+import Amazonka.Chime.Types.EngineTranscribeMedicalSettings
+import Amazonka.Chime.Types.EngineTranscribeSettings
+import Amazonka.Chime.Types.EventsConfiguration
+import Amazonka.Chime.Types.GeoMatchParams
+import Amazonka.Chime.Types.Identity
+import Amazonka.Chime.Types.Invite
+import Amazonka.Chime.Types.LoggingConfiguration
+import Amazonka.Chime.Types.MediaCapturePipeline
+import Amazonka.Chime.Types.MediaPlacement
+import Amazonka.Chime.Types.Meeting
+import Amazonka.Chime.Types.MeetingNotificationConfiguration
+import Amazonka.Chime.Types.Member
+import Amazonka.Chime.Types.MemberError
+import Amazonka.Chime.Types.MembershipItem
+import Amazonka.Chime.Types.MessagingSessionEndpoint
+import Amazonka.Chime.Types.OrderedPhoneNumber
+import Amazonka.Chime.Types.Origination
+import Amazonka.Chime.Types.OriginationRoute
+import Amazonka.Chime.Types.Participant
+import Amazonka.Chime.Types.PhoneNumber
+import Amazonka.Chime.Types.PhoneNumberAssociation
+import Amazonka.Chime.Types.PhoneNumberCapabilities
+import Amazonka.Chime.Types.PhoneNumberCountry
+import Amazonka.Chime.Types.PhoneNumberError
+import Amazonka.Chime.Types.PhoneNumberOrder
+import Amazonka.Chime.Types.Proxy
+import Amazonka.Chime.Types.ProxySession
+import Amazonka.Chime.Types.RetentionSettings
+import Amazonka.Chime.Types.Room
+import Amazonka.Chime.Types.RoomMembership
+import Amazonka.Chime.Types.RoomRetentionSettings
+import Amazonka.Chime.Types.SelectedVideoStreams
+import Amazonka.Chime.Types.SigninDelegateGroup
+import Amazonka.Chime.Types.SipMediaApplication
+import Amazonka.Chime.Types.SipMediaApplicationCall
+import Amazonka.Chime.Types.SipMediaApplicationEndpoint
+import Amazonka.Chime.Types.SipMediaApplicationLoggingConfiguration
+import Amazonka.Chime.Types.SipRule
+import Amazonka.Chime.Types.SipRuleTargetApplication
+import Amazonka.Chime.Types.SourceConfiguration
+import Amazonka.Chime.Types.StreamingConfiguration
+import Amazonka.Chime.Types.StreamingNotificationTarget
+import Amazonka.Chime.Types.Tag
+import Amazonka.Chime.Types.TelephonySettings
+import Amazonka.Chime.Types.Termination
+import Amazonka.Chime.Types.TerminationHealth
+import Amazonka.Chime.Types.TranscriptionConfiguration
+import Amazonka.Chime.Types.UpdatePhoneNumberRequestItem
+import Amazonka.Chime.Types.UpdateUserRequestItem
+import Amazonka.Chime.Types.User
+import Amazonka.Chime.Types.UserError
+import Amazonka.Chime.Types.UserSettings
+import Amazonka.Chime.Types.VideoArtifactsConfiguration
+import Amazonka.Chime.Types.VoiceConnector
+import Amazonka.Chime.Types.VoiceConnectorGroup
+import Amazonka.Chime.Types.VoiceConnectorItem
+import Amazonka.Chime.Types.VoiceConnectorSettings
+import Amazonka.Chime.UntagAttendee
+import Amazonka.Chime.UntagMeeting
+import Amazonka.Chime.UntagResource
+import Amazonka.Chime.UpdateAccount
+import Amazonka.Chime.UpdateAccountSettings
+import Amazonka.Chime.UpdateAppInstance
+import Amazonka.Chime.UpdateAppInstanceUser
+import Amazonka.Chime.UpdateBot
+import Amazonka.Chime.UpdateChannel
+import Amazonka.Chime.UpdateChannelMessage
+import Amazonka.Chime.UpdateChannelReadMarker
+import Amazonka.Chime.UpdateGlobalSettings
+import Amazonka.Chime.UpdatePhoneNumber
+import Amazonka.Chime.UpdatePhoneNumberSettings
+import Amazonka.Chime.UpdateProxySession
+import Amazonka.Chime.UpdateRoom
+import Amazonka.Chime.UpdateRoomMembership
+import Amazonka.Chime.UpdateSipMediaApplication
+import Amazonka.Chime.UpdateSipMediaApplicationCall
+import Amazonka.Chime.UpdateSipRule
+import Amazonka.Chime.UpdateUser
+import Amazonka.Chime.UpdateUserSettings
+import Amazonka.Chime.UpdateVoiceConnector
+import Amazonka.Chime.UpdateVoiceConnectorGroup
+import Amazonka.Chime.ValidateE911Address
diff --git a/gen/Amazonka/Chime/ListAccounts.hs b/gen/Amazonka/Chime/ListAccounts.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ListAccounts.hs
@@ -0,0 +1,232 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ListAccounts
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the Amazon Chime accounts under the administrator\'s AWS account.
+-- You can filter accounts by account name prefix. To find out which Amazon
+-- Chime account a user belongs to, you can filter by the user\'s email
+-- address, which returns one account result.
+--
+-- This operation returns paginated results.
+module Amazonka.Chime.ListAccounts
+  ( -- * Creating a Request
+    ListAccounts (..),
+    newListAccounts,
+
+    -- * Request Lenses
+    listAccounts_maxResults,
+    listAccounts_name,
+    listAccounts_nextToken,
+    listAccounts_userEmail,
+
+    -- * Destructuring the Response
+    ListAccountsResponse (..),
+    newListAccountsResponse,
+
+    -- * Response Lenses
+    listAccountsResponse_accounts,
+    listAccountsResponse_nextToken,
+    listAccountsResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListAccounts' smart constructor.
+data ListAccounts = ListAccounts'
+  { -- | The maximum number of results to return in a single call. Defaults to
+    -- 100.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | Amazon Chime account name prefix with which to filter results.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The token to use to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | User email address with which to filter results.
+    userEmail :: Prelude.Maybe (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAccounts' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listAccounts_maxResults' - The maximum number of results to return in a single call. Defaults to
+-- 100.
+--
+-- 'name', 'listAccounts_name' - Amazon Chime account name prefix with which to filter results.
+--
+-- 'nextToken', 'listAccounts_nextToken' - The token to use to retrieve the next page of results.
+--
+-- 'userEmail', 'listAccounts_userEmail' - User email address with which to filter results.
+newListAccounts ::
+  ListAccounts
+newListAccounts =
+  ListAccounts'
+    { maxResults = Prelude.Nothing,
+      name = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      userEmail = Prelude.Nothing
+    }
+
+-- | The maximum number of results to return in a single call. Defaults to
+-- 100.
+listAccounts_maxResults :: Lens.Lens' ListAccounts (Prelude.Maybe Prelude.Natural)
+listAccounts_maxResults = Lens.lens (\ListAccounts' {maxResults} -> maxResults) (\s@ListAccounts' {} a -> s {maxResults = a} :: ListAccounts)
+
+-- | Amazon Chime account name prefix with which to filter results.
+listAccounts_name :: Lens.Lens' ListAccounts (Prelude.Maybe Prelude.Text)
+listAccounts_name = Lens.lens (\ListAccounts' {name} -> name) (\s@ListAccounts' {} a -> s {name = a} :: ListAccounts)
+
+-- | The token to use to retrieve the next page of results.
+listAccounts_nextToken :: Lens.Lens' ListAccounts (Prelude.Maybe Prelude.Text)
+listAccounts_nextToken = Lens.lens (\ListAccounts' {nextToken} -> nextToken) (\s@ListAccounts' {} a -> s {nextToken = a} :: ListAccounts)
+
+-- | User email address with which to filter results.
+listAccounts_userEmail :: Lens.Lens' ListAccounts (Prelude.Maybe Prelude.Text)
+listAccounts_userEmail = Lens.lens (\ListAccounts' {userEmail} -> userEmail) (\s@ListAccounts' {} a -> s {userEmail = a} :: ListAccounts) Prelude.. Lens.mapping Data._Sensitive
+
+instance Core.AWSPager ListAccounts where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listAccountsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listAccountsResponse_accounts
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listAccounts_nextToken
+          Lens..~ rs
+          Lens.^? listAccountsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListAccounts where
+  type AWSResponse ListAccounts = ListAccountsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListAccountsResponse'
+            Prelude.<$> (x Data..?> "Accounts" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListAccounts where
+  hashWithSalt _salt ListAccounts' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` userEmail
+
+instance Prelude.NFData ListAccounts where
+  rnf ListAccounts' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf userEmail
+
+instance Data.ToHeaders ListAccounts where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ListAccounts where
+  toPath = Prelude.const "/accounts"
+
+instance Data.ToQuery ListAccounts where
+  toQuery ListAccounts' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "name" Data.=: name,
+        "next-token" Data.=: nextToken,
+        "user-email" Data.=: userEmail
+      ]
+
+-- | /See:/ 'newListAccountsResponse' smart constructor.
+data ListAccountsResponse = ListAccountsResponse'
+  { -- | List of Amazon Chime accounts and account details.
+    accounts :: Prelude.Maybe [Account],
+    -- | The token to use to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAccountsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accounts', 'listAccountsResponse_accounts' - List of Amazon Chime accounts and account details.
+--
+-- 'nextToken', 'listAccountsResponse_nextToken' - The token to use to retrieve the next page of results.
+--
+-- 'httpStatus', 'listAccountsResponse_httpStatus' - The response's http status code.
+newListAccountsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListAccountsResponse
+newListAccountsResponse pHttpStatus_ =
+  ListAccountsResponse'
+    { accounts = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | List of Amazon Chime accounts and account details.
+listAccountsResponse_accounts :: Lens.Lens' ListAccountsResponse (Prelude.Maybe [Account])
+listAccountsResponse_accounts = Lens.lens (\ListAccountsResponse' {accounts} -> accounts) (\s@ListAccountsResponse' {} a -> s {accounts = a} :: ListAccountsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token to use to retrieve the next page of results.
+listAccountsResponse_nextToken :: Lens.Lens' ListAccountsResponse (Prelude.Maybe Prelude.Text)
+listAccountsResponse_nextToken = Lens.lens (\ListAccountsResponse' {nextToken} -> nextToken) (\s@ListAccountsResponse' {} a -> s {nextToken = a} :: ListAccountsResponse)
+
+-- | The response's http status code.
+listAccountsResponse_httpStatus :: Lens.Lens' ListAccountsResponse Prelude.Int
+listAccountsResponse_httpStatus = Lens.lens (\ListAccountsResponse' {httpStatus} -> httpStatus) (\s@ListAccountsResponse' {} a -> s {httpStatus = a} :: ListAccountsResponse)
+
+instance Prelude.NFData ListAccountsResponse where
+  rnf ListAccountsResponse' {..} =
+    Prelude.rnf accounts
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/ListAppInstanceAdmins.hs b/gen/Amazonka/Chime/ListAppInstanceAdmins.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ListAppInstanceAdmins.hs
@@ -0,0 +1,220 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ListAppInstanceAdmins
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list of the administrators in the @AppInstance@.
+module Amazonka.Chime.ListAppInstanceAdmins
+  ( -- * Creating a Request
+    ListAppInstanceAdmins (..),
+    newListAppInstanceAdmins,
+
+    -- * Request Lenses
+    listAppInstanceAdmins_maxResults,
+    listAppInstanceAdmins_nextToken,
+    listAppInstanceAdmins_appInstanceArn,
+
+    -- * Destructuring the Response
+    ListAppInstanceAdminsResponse (..),
+    newListAppInstanceAdminsResponse,
+
+    -- * Response Lenses
+    listAppInstanceAdminsResponse_appInstanceAdmins,
+    listAppInstanceAdminsResponse_appInstanceArn,
+    listAppInstanceAdminsResponse_nextToken,
+    listAppInstanceAdminsResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListAppInstanceAdmins' smart constructor.
+data ListAppInstanceAdmins = ListAppInstanceAdmins'
+  { -- | The maximum number of administrators that you want to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token returned from previous API requests until the number of
+    -- administrators is reached.
+    nextToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The ARN of the @AppInstance@.
+    appInstanceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAppInstanceAdmins' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listAppInstanceAdmins_maxResults' - The maximum number of administrators that you want to return.
+--
+-- 'nextToken', 'listAppInstanceAdmins_nextToken' - The token returned from previous API requests until the number of
+-- administrators is reached.
+--
+-- 'appInstanceArn', 'listAppInstanceAdmins_appInstanceArn' - The ARN of the @AppInstance@.
+newListAppInstanceAdmins ::
+  -- | 'appInstanceArn'
+  Prelude.Text ->
+  ListAppInstanceAdmins
+newListAppInstanceAdmins pAppInstanceArn_ =
+  ListAppInstanceAdmins'
+    { maxResults =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      appInstanceArn = pAppInstanceArn_
+    }
+
+-- | The maximum number of administrators that you want to return.
+listAppInstanceAdmins_maxResults :: Lens.Lens' ListAppInstanceAdmins (Prelude.Maybe Prelude.Natural)
+listAppInstanceAdmins_maxResults = Lens.lens (\ListAppInstanceAdmins' {maxResults} -> maxResults) (\s@ListAppInstanceAdmins' {} a -> s {maxResults = a} :: ListAppInstanceAdmins)
+
+-- | The token returned from previous API requests until the number of
+-- administrators is reached.
+listAppInstanceAdmins_nextToken :: Lens.Lens' ListAppInstanceAdmins (Prelude.Maybe Prelude.Text)
+listAppInstanceAdmins_nextToken = Lens.lens (\ListAppInstanceAdmins' {nextToken} -> nextToken) (\s@ListAppInstanceAdmins' {} a -> s {nextToken = a} :: ListAppInstanceAdmins) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The ARN of the @AppInstance@.
+listAppInstanceAdmins_appInstanceArn :: Lens.Lens' ListAppInstanceAdmins Prelude.Text
+listAppInstanceAdmins_appInstanceArn = Lens.lens (\ListAppInstanceAdmins' {appInstanceArn} -> appInstanceArn) (\s@ListAppInstanceAdmins' {} a -> s {appInstanceArn = a} :: ListAppInstanceAdmins)
+
+instance Core.AWSRequest ListAppInstanceAdmins where
+  type
+    AWSResponse ListAppInstanceAdmins =
+      ListAppInstanceAdminsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListAppInstanceAdminsResponse'
+            Prelude.<$> ( x
+                            Data..?> "AppInstanceAdmins"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "AppInstanceArn")
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListAppInstanceAdmins where
+  hashWithSalt _salt ListAppInstanceAdmins' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` appInstanceArn
+
+instance Prelude.NFData ListAppInstanceAdmins where
+  rnf ListAppInstanceAdmins' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf appInstanceArn
+
+instance Data.ToHeaders ListAppInstanceAdmins where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ListAppInstanceAdmins where
+  toPath ListAppInstanceAdmins' {..} =
+    Prelude.mconcat
+      [ "/app-instances/",
+        Data.toBS appInstanceArn,
+        "/admins"
+      ]
+
+instance Data.ToQuery ListAppInstanceAdmins where
+  toQuery ListAppInstanceAdmins' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListAppInstanceAdminsResponse' smart constructor.
+data ListAppInstanceAdminsResponse = ListAppInstanceAdminsResponse'
+  { -- | The information for each administrator.
+    appInstanceAdmins :: Prelude.Maybe [AppInstanceAdminSummary],
+    -- | The ARN of the @AppInstance@.
+    appInstanceArn :: Prelude.Maybe Prelude.Text,
+    -- | The token returned from previous API requests until the number of
+    -- administrators is reached.
+    nextToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAppInstanceAdminsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceAdmins', 'listAppInstanceAdminsResponse_appInstanceAdmins' - The information for each administrator.
+--
+-- 'appInstanceArn', 'listAppInstanceAdminsResponse_appInstanceArn' - The ARN of the @AppInstance@.
+--
+-- 'nextToken', 'listAppInstanceAdminsResponse_nextToken' - The token returned from previous API requests until the number of
+-- administrators is reached.
+--
+-- 'httpStatus', 'listAppInstanceAdminsResponse_httpStatus' - The response's http status code.
+newListAppInstanceAdminsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListAppInstanceAdminsResponse
+newListAppInstanceAdminsResponse pHttpStatus_ =
+  ListAppInstanceAdminsResponse'
+    { appInstanceAdmins =
+        Prelude.Nothing,
+      appInstanceArn = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The information for each administrator.
+listAppInstanceAdminsResponse_appInstanceAdmins :: Lens.Lens' ListAppInstanceAdminsResponse (Prelude.Maybe [AppInstanceAdminSummary])
+listAppInstanceAdminsResponse_appInstanceAdmins = Lens.lens (\ListAppInstanceAdminsResponse' {appInstanceAdmins} -> appInstanceAdmins) (\s@ListAppInstanceAdminsResponse' {} a -> s {appInstanceAdmins = a} :: ListAppInstanceAdminsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ARN of the @AppInstance@.
+listAppInstanceAdminsResponse_appInstanceArn :: Lens.Lens' ListAppInstanceAdminsResponse (Prelude.Maybe Prelude.Text)
+listAppInstanceAdminsResponse_appInstanceArn = Lens.lens (\ListAppInstanceAdminsResponse' {appInstanceArn} -> appInstanceArn) (\s@ListAppInstanceAdminsResponse' {} a -> s {appInstanceArn = a} :: ListAppInstanceAdminsResponse)
+
+-- | The token returned from previous API requests until the number of
+-- administrators is reached.
+listAppInstanceAdminsResponse_nextToken :: Lens.Lens' ListAppInstanceAdminsResponse (Prelude.Maybe Prelude.Text)
+listAppInstanceAdminsResponse_nextToken = Lens.lens (\ListAppInstanceAdminsResponse' {nextToken} -> nextToken) (\s@ListAppInstanceAdminsResponse' {} a -> s {nextToken = a} :: ListAppInstanceAdminsResponse) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The response's http status code.
+listAppInstanceAdminsResponse_httpStatus :: Lens.Lens' ListAppInstanceAdminsResponse Prelude.Int
+listAppInstanceAdminsResponse_httpStatus = Lens.lens (\ListAppInstanceAdminsResponse' {httpStatus} -> httpStatus) (\s@ListAppInstanceAdminsResponse' {} a -> s {httpStatus = a} :: ListAppInstanceAdminsResponse)
+
+instance Prelude.NFData ListAppInstanceAdminsResponse where
+  rnf ListAppInstanceAdminsResponse' {..} =
+    Prelude.rnf appInstanceAdmins
+      `Prelude.seq` Prelude.rnf appInstanceArn
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/ListAppInstanceUsers.hs b/gen/Amazonka/Chime/ListAppInstanceUsers.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ListAppInstanceUsers.hs
@@ -0,0 +1,215 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ListAppInstanceUsers
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List all @AppInstanceUsers@ created under a single @AppInstance@.
+module Amazonka.Chime.ListAppInstanceUsers
+  ( -- * Creating a Request
+    ListAppInstanceUsers (..),
+    newListAppInstanceUsers,
+
+    -- * Request Lenses
+    listAppInstanceUsers_maxResults,
+    listAppInstanceUsers_nextToken,
+    listAppInstanceUsers_appInstanceArn,
+
+    -- * Destructuring the Response
+    ListAppInstanceUsersResponse (..),
+    newListAppInstanceUsersResponse,
+
+    -- * Response Lenses
+    listAppInstanceUsersResponse_appInstanceArn,
+    listAppInstanceUsersResponse_appInstanceUsers,
+    listAppInstanceUsersResponse_nextToken,
+    listAppInstanceUsersResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListAppInstanceUsers' smart constructor.
+data ListAppInstanceUsers = ListAppInstanceUsers'
+  { -- | The maximum number of requests that you want returned.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token passed by previous API calls until all requested users are
+    -- returned.
+    nextToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The ARN of the @AppInstance@.
+    appInstanceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAppInstanceUsers' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listAppInstanceUsers_maxResults' - The maximum number of requests that you want returned.
+--
+-- 'nextToken', 'listAppInstanceUsers_nextToken' - The token passed by previous API calls until all requested users are
+-- returned.
+--
+-- 'appInstanceArn', 'listAppInstanceUsers_appInstanceArn' - The ARN of the @AppInstance@.
+newListAppInstanceUsers ::
+  -- | 'appInstanceArn'
+  Prelude.Text ->
+  ListAppInstanceUsers
+newListAppInstanceUsers pAppInstanceArn_ =
+  ListAppInstanceUsers'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      appInstanceArn = pAppInstanceArn_
+    }
+
+-- | The maximum number of requests that you want returned.
+listAppInstanceUsers_maxResults :: Lens.Lens' ListAppInstanceUsers (Prelude.Maybe Prelude.Natural)
+listAppInstanceUsers_maxResults = Lens.lens (\ListAppInstanceUsers' {maxResults} -> maxResults) (\s@ListAppInstanceUsers' {} a -> s {maxResults = a} :: ListAppInstanceUsers)
+
+-- | The token passed by previous API calls until all requested users are
+-- returned.
+listAppInstanceUsers_nextToken :: Lens.Lens' ListAppInstanceUsers (Prelude.Maybe Prelude.Text)
+listAppInstanceUsers_nextToken = Lens.lens (\ListAppInstanceUsers' {nextToken} -> nextToken) (\s@ListAppInstanceUsers' {} a -> s {nextToken = a} :: ListAppInstanceUsers) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The ARN of the @AppInstance@.
+listAppInstanceUsers_appInstanceArn :: Lens.Lens' ListAppInstanceUsers Prelude.Text
+listAppInstanceUsers_appInstanceArn = Lens.lens (\ListAppInstanceUsers' {appInstanceArn} -> appInstanceArn) (\s@ListAppInstanceUsers' {} a -> s {appInstanceArn = a} :: ListAppInstanceUsers)
+
+instance Core.AWSRequest ListAppInstanceUsers where
+  type
+    AWSResponse ListAppInstanceUsers =
+      ListAppInstanceUsersResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListAppInstanceUsersResponse'
+            Prelude.<$> (x Data..?> "AppInstanceArn")
+            Prelude.<*> ( x
+                            Data..?> "AppInstanceUsers"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListAppInstanceUsers where
+  hashWithSalt _salt ListAppInstanceUsers' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` appInstanceArn
+
+instance Prelude.NFData ListAppInstanceUsers where
+  rnf ListAppInstanceUsers' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf appInstanceArn
+
+instance Data.ToHeaders ListAppInstanceUsers where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ListAppInstanceUsers where
+  toPath = Prelude.const "/app-instance-users"
+
+instance Data.ToQuery ListAppInstanceUsers where
+  toQuery ListAppInstanceUsers' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken,
+        "app-instance-arn" Data.=: appInstanceArn
+      ]
+
+-- | /See:/ 'newListAppInstanceUsersResponse' smart constructor.
+data ListAppInstanceUsersResponse = ListAppInstanceUsersResponse'
+  { -- | The ARN of the @AppInstance@.
+    appInstanceArn :: Prelude.Maybe Prelude.Text,
+    -- | The information for each requested @AppInstanceUser@.
+    appInstanceUsers :: Prelude.Maybe [AppInstanceUserSummary],
+    -- | The token passed by previous API calls until all requested users are
+    -- returned.
+    nextToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAppInstanceUsersResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceArn', 'listAppInstanceUsersResponse_appInstanceArn' - The ARN of the @AppInstance@.
+--
+-- 'appInstanceUsers', 'listAppInstanceUsersResponse_appInstanceUsers' - The information for each requested @AppInstanceUser@.
+--
+-- 'nextToken', 'listAppInstanceUsersResponse_nextToken' - The token passed by previous API calls until all requested users are
+-- returned.
+--
+-- 'httpStatus', 'listAppInstanceUsersResponse_httpStatus' - The response's http status code.
+newListAppInstanceUsersResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListAppInstanceUsersResponse
+newListAppInstanceUsersResponse pHttpStatus_ =
+  ListAppInstanceUsersResponse'
+    { appInstanceArn =
+        Prelude.Nothing,
+      appInstanceUsers = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of the @AppInstance@.
+listAppInstanceUsersResponse_appInstanceArn :: Lens.Lens' ListAppInstanceUsersResponse (Prelude.Maybe Prelude.Text)
+listAppInstanceUsersResponse_appInstanceArn = Lens.lens (\ListAppInstanceUsersResponse' {appInstanceArn} -> appInstanceArn) (\s@ListAppInstanceUsersResponse' {} a -> s {appInstanceArn = a} :: ListAppInstanceUsersResponse)
+
+-- | The information for each requested @AppInstanceUser@.
+listAppInstanceUsersResponse_appInstanceUsers :: Lens.Lens' ListAppInstanceUsersResponse (Prelude.Maybe [AppInstanceUserSummary])
+listAppInstanceUsersResponse_appInstanceUsers = Lens.lens (\ListAppInstanceUsersResponse' {appInstanceUsers} -> appInstanceUsers) (\s@ListAppInstanceUsersResponse' {} a -> s {appInstanceUsers = a} :: ListAppInstanceUsersResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token passed by previous API calls until all requested users are
+-- returned.
+listAppInstanceUsersResponse_nextToken :: Lens.Lens' ListAppInstanceUsersResponse (Prelude.Maybe Prelude.Text)
+listAppInstanceUsersResponse_nextToken = Lens.lens (\ListAppInstanceUsersResponse' {nextToken} -> nextToken) (\s@ListAppInstanceUsersResponse' {} a -> s {nextToken = a} :: ListAppInstanceUsersResponse) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The response's http status code.
+listAppInstanceUsersResponse_httpStatus :: Lens.Lens' ListAppInstanceUsersResponse Prelude.Int
+listAppInstanceUsersResponse_httpStatus = Lens.lens (\ListAppInstanceUsersResponse' {httpStatus} -> httpStatus) (\s@ListAppInstanceUsersResponse' {} a -> s {httpStatus = a} :: ListAppInstanceUsersResponse)
+
+instance Prelude.NFData ListAppInstanceUsersResponse where
+  rnf ListAppInstanceUsersResponse' {..} =
+    Prelude.rnf appInstanceArn
+      `Prelude.seq` Prelude.rnf appInstanceUsers
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/ListAppInstances.hs b/gen/Amazonka/Chime/ListAppInstances.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ListAppInstances.hs
@@ -0,0 +1,186 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ListAppInstances
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all Amazon Chime @AppInstance@s created under a single AWS
+-- account.
+module Amazonka.Chime.ListAppInstances
+  ( -- * Creating a Request
+    ListAppInstances (..),
+    newListAppInstances,
+
+    -- * Request Lenses
+    listAppInstances_maxResults,
+    listAppInstances_nextToken,
+
+    -- * Destructuring the Response
+    ListAppInstancesResponse (..),
+    newListAppInstancesResponse,
+
+    -- * Response Lenses
+    listAppInstancesResponse_appInstances,
+    listAppInstancesResponse_nextToken,
+    listAppInstancesResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListAppInstances' smart constructor.
+data ListAppInstances = ListAppInstances'
+  { -- | The maximum number of @AppInstance@s that you want to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token passed by previous API requests until you reach the maximum
+    -- number of @AppInstance@s.
+    nextToken :: Prelude.Maybe (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAppInstances' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listAppInstances_maxResults' - The maximum number of @AppInstance@s that you want to return.
+--
+-- 'nextToken', 'listAppInstances_nextToken' - The token passed by previous API requests until you reach the maximum
+-- number of @AppInstance@s.
+newListAppInstances ::
+  ListAppInstances
+newListAppInstances =
+  ListAppInstances'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The maximum number of @AppInstance@s that you want to return.
+listAppInstances_maxResults :: Lens.Lens' ListAppInstances (Prelude.Maybe Prelude.Natural)
+listAppInstances_maxResults = Lens.lens (\ListAppInstances' {maxResults} -> maxResults) (\s@ListAppInstances' {} a -> s {maxResults = a} :: ListAppInstances)
+
+-- | The token passed by previous API requests until you reach the maximum
+-- number of @AppInstance@s.
+listAppInstances_nextToken :: Lens.Lens' ListAppInstances (Prelude.Maybe Prelude.Text)
+listAppInstances_nextToken = Lens.lens (\ListAppInstances' {nextToken} -> nextToken) (\s@ListAppInstances' {} a -> s {nextToken = a} :: ListAppInstances) Prelude.. Lens.mapping Data._Sensitive
+
+instance Core.AWSRequest ListAppInstances where
+  type
+    AWSResponse ListAppInstances =
+      ListAppInstancesResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListAppInstancesResponse'
+            Prelude.<$> (x Data..?> "AppInstances" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListAppInstances where
+  hashWithSalt _salt ListAppInstances' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListAppInstances where
+  rnf ListAppInstances' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListAppInstances where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ListAppInstances where
+  toPath = Prelude.const "/app-instances"
+
+instance Data.ToQuery ListAppInstances where
+  toQuery ListAppInstances' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListAppInstancesResponse' smart constructor.
+data ListAppInstancesResponse = ListAppInstancesResponse'
+  { -- | The information for each @AppInstance@.
+    appInstances :: Prelude.Maybe [AppInstanceSummary],
+    -- | The token passed by previous API requests until the maximum number of
+    -- @AppInstance@s is reached.
+    nextToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAppInstancesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstances', 'listAppInstancesResponse_appInstances' - The information for each @AppInstance@.
+--
+-- 'nextToken', 'listAppInstancesResponse_nextToken' - The token passed by previous API requests until the maximum number of
+-- @AppInstance@s is reached.
+--
+-- 'httpStatus', 'listAppInstancesResponse_httpStatus' - The response's http status code.
+newListAppInstancesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListAppInstancesResponse
+newListAppInstancesResponse pHttpStatus_ =
+  ListAppInstancesResponse'
+    { appInstances =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The information for each @AppInstance@.
+listAppInstancesResponse_appInstances :: Lens.Lens' ListAppInstancesResponse (Prelude.Maybe [AppInstanceSummary])
+listAppInstancesResponse_appInstances = Lens.lens (\ListAppInstancesResponse' {appInstances} -> appInstances) (\s@ListAppInstancesResponse' {} a -> s {appInstances = a} :: ListAppInstancesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token passed by previous API requests until the maximum number of
+-- @AppInstance@s is reached.
+listAppInstancesResponse_nextToken :: Lens.Lens' ListAppInstancesResponse (Prelude.Maybe Prelude.Text)
+listAppInstancesResponse_nextToken = Lens.lens (\ListAppInstancesResponse' {nextToken} -> nextToken) (\s@ListAppInstancesResponse' {} a -> s {nextToken = a} :: ListAppInstancesResponse) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The response's http status code.
+listAppInstancesResponse_httpStatus :: Lens.Lens' ListAppInstancesResponse Prelude.Int
+listAppInstancesResponse_httpStatus = Lens.lens (\ListAppInstancesResponse' {httpStatus} -> httpStatus) (\s@ListAppInstancesResponse' {} a -> s {httpStatus = a} :: ListAppInstancesResponse)
+
+instance Prelude.NFData ListAppInstancesResponse where
+  rnf ListAppInstancesResponse' {..} =
+    Prelude.rnf appInstances
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/ListAttendeeTags.hs b/gen/Amazonka/Chime/ListAttendeeTags.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ListAttendeeTags.hs
@@ -0,0 +1,173 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ListAttendeeTags
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the tags applied to an Amazon Chime SDK attendee resource.
+module Amazonka.Chime.ListAttendeeTags
+  ( -- * Creating a Request
+    ListAttendeeTags (..),
+    newListAttendeeTags,
+
+    -- * Request Lenses
+    listAttendeeTags_meetingId,
+    listAttendeeTags_attendeeId,
+
+    -- * Destructuring the Response
+    ListAttendeeTagsResponse (..),
+    newListAttendeeTagsResponse,
+
+    -- * Response Lenses
+    listAttendeeTagsResponse_tags,
+    listAttendeeTagsResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListAttendeeTags' smart constructor.
+data ListAttendeeTags = ListAttendeeTags'
+  { -- | The Amazon Chime SDK meeting ID.
+    meetingId :: Prelude.Text,
+    -- | The Amazon Chime SDK attendee ID.
+    attendeeId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAttendeeTags' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'meetingId', 'listAttendeeTags_meetingId' - The Amazon Chime SDK meeting ID.
+--
+-- 'attendeeId', 'listAttendeeTags_attendeeId' - The Amazon Chime SDK attendee ID.
+newListAttendeeTags ::
+  -- | 'meetingId'
+  Prelude.Text ->
+  -- | 'attendeeId'
+  Prelude.Text ->
+  ListAttendeeTags
+newListAttendeeTags pMeetingId_ pAttendeeId_ =
+  ListAttendeeTags'
+    { meetingId = pMeetingId_,
+      attendeeId = pAttendeeId_
+    }
+
+-- | The Amazon Chime SDK meeting ID.
+listAttendeeTags_meetingId :: Lens.Lens' ListAttendeeTags Prelude.Text
+listAttendeeTags_meetingId = Lens.lens (\ListAttendeeTags' {meetingId} -> meetingId) (\s@ListAttendeeTags' {} a -> s {meetingId = a} :: ListAttendeeTags)
+
+-- | The Amazon Chime SDK attendee ID.
+listAttendeeTags_attendeeId :: Lens.Lens' ListAttendeeTags Prelude.Text
+listAttendeeTags_attendeeId = Lens.lens (\ListAttendeeTags' {attendeeId} -> attendeeId) (\s@ListAttendeeTags' {} a -> s {attendeeId = a} :: ListAttendeeTags)
+
+instance Core.AWSRequest ListAttendeeTags where
+  type
+    AWSResponse ListAttendeeTags =
+      ListAttendeeTagsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListAttendeeTagsResponse'
+            Prelude.<$> (x Data..?> "Tags")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListAttendeeTags where
+  hashWithSalt _salt ListAttendeeTags' {..} =
+    _salt
+      `Prelude.hashWithSalt` meetingId
+      `Prelude.hashWithSalt` attendeeId
+
+instance Prelude.NFData ListAttendeeTags where
+  rnf ListAttendeeTags' {..} =
+    Prelude.rnf meetingId
+      `Prelude.seq` Prelude.rnf attendeeId
+
+instance Data.ToHeaders ListAttendeeTags where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ListAttendeeTags where
+  toPath ListAttendeeTags' {..} =
+    Prelude.mconcat
+      [ "/meetings/",
+        Data.toBS meetingId,
+        "/attendees/",
+        Data.toBS attendeeId,
+        "/tags"
+      ]
+
+instance Data.ToQuery ListAttendeeTags where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListAttendeeTagsResponse' smart constructor.
+data ListAttendeeTagsResponse = ListAttendeeTagsResponse'
+  { -- | A list of tag key-value pairs.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAttendeeTagsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tags', 'listAttendeeTagsResponse_tags' - A list of tag key-value pairs.
+--
+-- 'httpStatus', 'listAttendeeTagsResponse_httpStatus' - The response's http status code.
+newListAttendeeTagsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListAttendeeTagsResponse
+newListAttendeeTagsResponse pHttpStatus_ =
+  ListAttendeeTagsResponse'
+    { tags = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of tag key-value pairs.
+listAttendeeTagsResponse_tags :: Lens.Lens' ListAttendeeTagsResponse (Prelude.Maybe (Prelude.NonEmpty Tag))
+listAttendeeTagsResponse_tags = Lens.lens (\ListAttendeeTagsResponse' {tags} -> tags) (\s@ListAttendeeTagsResponse' {} a -> s {tags = a} :: ListAttendeeTagsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listAttendeeTagsResponse_httpStatus :: Lens.Lens' ListAttendeeTagsResponse Prelude.Int
+listAttendeeTagsResponse_httpStatus = Lens.lens (\ListAttendeeTagsResponse' {httpStatus} -> httpStatus) (\s@ListAttendeeTagsResponse' {} a -> s {httpStatus = a} :: ListAttendeeTagsResponse)
+
+instance Prelude.NFData ListAttendeeTagsResponse where
+  rnf ListAttendeeTagsResponse' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/ListAttendees.hs b/gen/Amazonka/Chime/ListAttendees.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ListAttendees.hs
@@ -0,0 +1,197 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ListAttendees
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the attendees for the specified Amazon Chime SDK meeting. For more
+-- information about the Amazon Chime SDK, see
+-- <https://docs.aws.amazon.com/chime/latest/dg/meetings-sdk.html Using the Amazon Chime SDK>
+-- in the /Amazon Chime Developer Guide/.
+module Amazonka.Chime.ListAttendees
+  ( -- * Creating a Request
+    ListAttendees (..),
+    newListAttendees,
+
+    -- * Request Lenses
+    listAttendees_maxResults,
+    listAttendees_nextToken,
+    listAttendees_meetingId,
+
+    -- * Destructuring the Response
+    ListAttendeesResponse (..),
+    newListAttendeesResponse,
+
+    -- * Response Lenses
+    listAttendeesResponse_attendees,
+    listAttendeesResponse_nextToken,
+    listAttendeesResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListAttendees' smart constructor.
+data ListAttendees = ListAttendees'
+  { -- | The maximum number of results to return in a single call.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token to use to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Chime SDK meeting ID.
+    meetingId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAttendees' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listAttendees_maxResults' - The maximum number of results to return in a single call.
+--
+-- 'nextToken', 'listAttendees_nextToken' - The token to use to retrieve the next page of results.
+--
+-- 'meetingId', 'listAttendees_meetingId' - The Amazon Chime SDK meeting ID.
+newListAttendees ::
+  -- | 'meetingId'
+  Prelude.Text ->
+  ListAttendees
+newListAttendees pMeetingId_ =
+  ListAttendees'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      meetingId = pMeetingId_
+    }
+
+-- | The maximum number of results to return in a single call.
+listAttendees_maxResults :: Lens.Lens' ListAttendees (Prelude.Maybe Prelude.Natural)
+listAttendees_maxResults = Lens.lens (\ListAttendees' {maxResults} -> maxResults) (\s@ListAttendees' {} a -> s {maxResults = a} :: ListAttendees)
+
+-- | The token to use to retrieve the next page of results.
+listAttendees_nextToken :: Lens.Lens' ListAttendees (Prelude.Maybe Prelude.Text)
+listAttendees_nextToken = Lens.lens (\ListAttendees' {nextToken} -> nextToken) (\s@ListAttendees' {} a -> s {nextToken = a} :: ListAttendees)
+
+-- | The Amazon Chime SDK meeting ID.
+listAttendees_meetingId :: Lens.Lens' ListAttendees Prelude.Text
+listAttendees_meetingId = Lens.lens (\ListAttendees' {meetingId} -> meetingId) (\s@ListAttendees' {} a -> s {meetingId = a} :: ListAttendees)
+
+instance Core.AWSRequest ListAttendees where
+  type
+    AWSResponse ListAttendees =
+      ListAttendeesResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListAttendeesResponse'
+            Prelude.<$> (x Data..?> "Attendees" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListAttendees where
+  hashWithSalt _salt ListAttendees' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` meetingId
+
+instance Prelude.NFData ListAttendees where
+  rnf ListAttendees' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf meetingId
+
+instance Data.ToHeaders ListAttendees where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ListAttendees where
+  toPath ListAttendees' {..} =
+    Prelude.mconcat
+      ["/meetings/", Data.toBS meetingId, "/attendees"]
+
+instance Data.ToQuery ListAttendees where
+  toQuery ListAttendees' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListAttendeesResponse' smart constructor.
+data ListAttendeesResponse = ListAttendeesResponse'
+  { -- | The Amazon Chime SDK attendee information.
+    attendees :: Prelude.Maybe [Attendee],
+    -- | The token to use to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAttendeesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'attendees', 'listAttendeesResponse_attendees' - The Amazon Chime SDK attendee information.
+--
+-- 'nextToken', 'listAttendeesResponse_nextToken' - The token to use to retrieve the next page of results.
+--
+-- 'httpStatus', 'listAttendeesResponse_httpStatus' - The response's http status code.
+newListAttendeesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListAttendeesResponse
+newListAttendeesResponse pHttpStatus_ =
+  ListAttendeesResponse'
+    { attendees = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Chime SDK attendee information.
+listAttendeesResponse_attendees :: Lens.Lens' ListAttendeesResponse (Prelude.Maybe [Attendee])
+listAttendeesResponse_attendees = Lens.lens (\ListAttendeesResponse' {attendees} -> attendees) (\s@ListAttendeesResponse' {} a -> s {attendees = a} :: ListAttendeesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token to use to retrieve the next page of results.
+listAttendeesResponse_nextToken :: Lens.Lens' ListAttendeesResponse (Prelude.Maybe Prelude.Text)
+listAttendeesResponse_nextToken = Lens.lens (\ListAttendeesResponse' {nextToken} -> nextToken) (\s@ListAttendeesResponse' {} a -> s {nextToken = a} :: ListAttendeesResponse)
+
+-- | The response's http status code.
+listAttendeesResponse_httpStatus :: Lens.Lens' ListAttendeesResponse Prelude.Int
+listAttendeesResponse_httpStatus = Lens.lens (\ListAttendeesResponse' {httpStatus} -> httpStatus) (\s@ListAttendeesResponse' {} a -> s {httpStatus = a} :: ListAttendeesResponse)
+
+instance Prelude.NFData ListAttendeesResponse where
+  rnf ListAttendeesResponse' {..} =
+    Prelude.rnf attendees
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/ListBots.hs b/gen/Amazonka/Chime/ListBots.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ListBots.hs
@@ -0,0 +1,196 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ListBots
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the bots associated with the administrator\'s Amazon Chime
+-- Enterprise account ID.
+module Amazonka.Chime.ListBots
+  ( -- * Creating a Request
+    ListBots (..),
+    newListBots,
+
+    -- * Request Lenses
+    listBots_maxResults,
+    listBots_nextToken,
+    listBots_accountId,
+
+    -- * Destructuring the Response
+    ListBotsResponse (..),
+    newListBotsResponse,
+
+    -- * Response Lenses
+    listBotsResponse_bots,
+    listBotsResponse_nextToken,
+    listBotsResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListBots' smart constructor.
+data ListBots = ListBots'
+  { -- | The maximum number of results to return in a single call. The default is
+    -- 10.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token to use to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListBots' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listBots_maxResults' - The maximum number of results to return in a single call. The default is
+-- 10.
+--
+-- 'nextToken', 'listBots_nextToken' - The token to use to retrieve the next page of results.
+--
+-- 'accountId', 'listBots_accountId' - The Amazon Chime account ID.
+newListBots ::
+  -- | 'accountId'
+  Prelude.Text ->
+  ListBots
+newListBots pAccountId_ =
+  ListBots'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      accountId = pAccountId_
+    }
+
+-- | The maximum number of results to return in a single call. The default is
+-- 10.
+listBots_maxResults :: Lens.Lens' ListBots (Prelude.Maybe Prelude.Natural)
+listBots_maxResults = Lens.lens (\ListBots' {maxResults} -> maxResults) (\s@ListBots' {} a -> s {maxResults = a} :: ListBots)
+
+-- | The token to use to retrieve the next page of results.
+listBots_nextToken :: Lens.Lens' ListBots (Prelude.Maybe Prelude.Text)
+listBots_nextToken = Lens.lens (\ListBots' {nextToken} -> nextToken) (\s@ListBots' {} a -> s {nextToken = a} :: ListBots)
+
+-- | The Amazon Chime account ID.
+listBots_accountId :: Lens.Lens' ListBots Prelude.Text
+listBots_accountId = Lens.lens (\ListBots' {accountId} -> accountId) (\s@ListBots' {} a -> s {accountId = a} :: ListBots)
+
+instance Core.AWSRequest ListBots where
+  type AWSResponse ListBots = ListBotsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListBotsResponse'
+            Prelude.<$> (x Data..?> "Bots" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListBots where
+  hashWithSalt _salt ListBots' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` accountId
+
+instance Prelude.NFData ListBots where
+  rnf ListBots' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf accountId
+
+instance Data.ToHeaders ListBots where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ListBots where
+  toPath ListBots' {..} =
+    Prelude.mconcat
+      ["/accounts/", Data.toBS accountId, "/bots"]
+
+instance Data.ToQuery ListBots where
+  toQuery ListBots' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListBotsResponse' smart constructor.
+data ListBotsResponse = ListBotsResponse'
+  { -- | List of bots and bot details.
+    bots :: Prelude.Maybe [Bot],
+    -- | The token to use to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListBotsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bots', 'listBotsResponse_bots' - List of bots and bot details.
+--
+-- 'nextToken', 'listBotsResponse_nextToken' - The token to use to retrieve the next page of results.
+--
+-- 'httpStatus', 'listBotsResponse_httpStatus' - The response's http status code.
+newListBotsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListBotsResponse
+newListBotsResponse pHttpStatus_ =
+  ListBotsResponse'
+    { bots = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | List of bots and bot details.
+listBotsResponse_bots :: Lens.Lens' ListBotsResponse (Prelude.Maybe [Bot])
+listBotsResponse_bots = Lens.lens (\ListBotsResponse' {bots} -> bots) (\s@ListBotsResponse' {} a -> s {bots = a} :: ListBotsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token to use to retrieve the next page of results.
+listBotsResponse_nextToken :: Lens.Lens' ListBotsResponse (Prelude.Maybe Prelude.Text)
+listBotsResponse_nextToken = Lens.lens (\ListBotsResponse' {nextToken} -> nextToken) (\s@ListBotsResponse' {} a -> s {nextToken = a} :: ListBotsResponse)
+
+-- | The response's http status code.
+listBotsResponse_httpStatus :: Lens.Lens' ListBotsResponse Prelude.Int
+listBotsResponse_httpStatus = Lens.lens (\ListBotsResponse' {httpStatus} -> httpStatus) (\s@ListBotsResponse' {} a -> s {httpStatus = a} :: ListBotsResponse)
+
+instance Prelude.NFData ListBotsResponse where
+  rnf ListBotsResponse' {..} =
+    Prelude.rnf bots
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/ListChannelBans.hs b/gen/Amazonka/Chime/ListChannelBans.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ListChannelBans.hs
@@ -0,0 +1,231 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ListChannelBans
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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.
+module Amazonka.Chime.ListChannelBans
+  ( -- * Creating a Request
+    ListChannelBans (..),
+    newListChannelBans,
+
+    -- * Request Lenses
+    listChannelBans_chimeBearer,
+    listChannelBans_maxResults,
+    listChannelBans_nextToken,
+    listChannelBans_channelArn,
+
+    -- * Destructuring the Response
+    ListChannelBansResponse (..),
+    newListChannelBansResponse,
+
+    -- * Response Lenses
+    listChannelBansResponse_channelArn,
+    listChannelBansResponse_channelBans,
+    listChannelBansResponse_nextToken,
+    listChannelBansResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListChannelBans' smart constructor.
+data ListChannelBans = ListChannelBans'
+  { -- | The @AppInstanceUserArn@ of the user that makes the API call.
+    chimeBearer :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of bans that you want returned.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token passed by previous API calls until all requested bans are
+    -- returned.
+    nextToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The ARN of the channel.
+    channelArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListChannelBans' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chimeBearer', 'listChannelBans_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
+--
+-- 'maxResults', 'listChannelBans_maxResults' - The maximum number of bans that you want returned.
+--
+-- 'nextToken', 'listChannelBans_nextToken' - The token passed by previous API calls until all requested bans are
+-- returned.
+--
+-- 'channelArn', 'listChannelBans_channelArn' - The ARN of the channel.
+newListChannelBans ::
+  -- | 'channelArn'
+  Prelude.Text ->
+  ListChannelBans
+newListChannelBans pChannelArn_ =
+  ListChannelBans'
+    { chimeBearer = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      channelArn = pChannelArn_
+    }
+
+-- | The @AppInstanceUserArn@ of the user that makes the API call.
+listChannelBans_chimeBearer :: Lens.Lens' ListChannelBans (Prelude.Maybe Prelude.Text)
+listChannelBans_chimeBearer = Lens.lens (\ListChannelBans' {chimeBearer} -> chimeBearer) (\s@ListChannelBans' {} a -> s {chimeBearer = a} :: ListChannelBans)
+
+-- | The maximum number of bans that you want returned.
+listChannelBans_maxResults :: Lens.Lens' ListChannelBans (Prelude.Maybe Prelude.Natural)
+listChannelBans_maxResults = Lens.lens (\ListChannelBans' {maxResults} -> maxResults) (\s@ListChannelBans' {} a -> s {maxResults = a} :: ListChannelBans)
+
+-- | The token passed by previous API calls until all requested bans are
+-- returned.
+listChannelBans_nextToken :: Lens.Lens' ListChannelBans (Prelude.Maybe Prelude.Text)
+listChannelBans_nextToken = Lens.lens (\ListChannelBans' {nextToken} -> nextToken) (\s@ListChannelBans' {} a -> s {nextToken = a} :: ListChannelBans) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The ARN of the channel.
+listChannelBans_channelArn :: Lens.Lens' ListChannelBans Prelude.Text
+listChannelBans_channelArn = Lens.lens (\ListChannelBans' {channelArn} -> channelArn) (\s@ListChannelBans' {} a -> s {channelArn = a} :: ListChannelBans)
+
+instance Core.AWSRequest ListChannelBans where
+  type
+    AWSResponse ListChannelBans =
+      ListChannelBansResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListChannelBansResponse'
+            Prelude.<$> (x Data..?> "ChannelArn")
+            Prelude.<*> (x Data..?> "ChannelBans" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListChannelBans where
+  hashWithSalt _salt ListChannelBans' {..} =
+    _salt
+      `Prelude.hashWithSalt` chimeBearer
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` channelArn
+
+instance Prelude.NFData ListChannelBans where
+  rnf ListChannelBans' {..} =
+    Prelude.rnf chimeBearer
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf channelArn
+
+instance Data.ToHeaders ListChannelBans where
+  toHeaders ListChannelBans' {..} =
+    Prelude.mconcat
+      ["x-amz-chime-bearer" Data.=# chimeBearer]
+
+instance Data.ToPath ListChannelBans where
+  toPath ListChannelBans' {..} =
+    Prelude.mconcat
+      ["/channels/", Data.toBS channelArn, "/bans"]
+
+instance Data.ToQuery ListChannelBans where
+  toQuery ListChannelBans' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListChannelBansResponse' smart constructor.
+data ListChannelBansResponse = ListChannelBansResponse'
+  { -- | The ARN of the channel.
+    channelArn :: Prelude.Maybe Prelude.Text,
+    -- | The information for each requested ban.
+    channelBans :: Prelude.Maybe [ChannelBanSummary],
+    -- | The token passed by previous API calls until all requested bans are
+    -- returned.
+    nextToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListChannelBansResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channelArn', 'listChannelBansResponse_channelArn' - The ARN of the channel.
+--
+-- 'channelBans', 'listChannelBansResponse_channelBans' - The information for each requested ban.
+--
+-- 'nextToken', 'listChannelBansResponse_nextToken' - The token passed by previous API calls until all requested bans are
+-- returned.
+--
+-- 'httpStatus', 'listChannelBansResponse_httpStatus' - The response's http status code.
+newListChannelBansResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListChannelBansResponse
+newListChannelBansResponse pHttpStatus_ =
+  ListChannelBansResponse'
+    { channelArn =
+        Prelude.Nothing,
+      channelBans = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of the channel.
+listChannelBansResponse_channelArn :: Lens.Lens' ListChannelBansResponse (Prelude.Maybe Prelude.Text)
+listChannelBansResponse_channelArn = Lens.lens (\ListChannelBansResponse' {channelArn} -> channelArn) (\s@ListChannelBansResponse' {} a -> s {channelArn = a} :: ListChannelBansResponse)
+
+-- | The information for each requested ban.
+listChannelBansResponse_channelBans :: Lens.Lens' ListChannelBansResponse (Prelude.Maybe [ChannelBanSummary])
+listChannelBansResponse_channelBans = Lens.lens (\ListChannelBansResponse' {channelBans} -> channelBans) (\s@ListChannelBansResponse' {} a -> s {channelBans = a} :: ListChannelBansResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token passed by previous API calls until all requested bans are
+-- returned.
+listChannelBansResponse_nextToken :: Lens.Lens' ListChannelBansResponse (Prelude.Maybe Prelude.Text)
+listChannelBansResponse_nextToken = Lens.lens (\ListChannelBansResponse' {nextToken} -> nextToken) (\s@ListChannelBansResponse' {} a -> s {nextToken = a} :: ListChannelBansResponse) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The response's http status code.
+listChannelBansResponse_httpStatus :: Lens.Lens' ListChannelBansResponse Prelude.Int
+listChannelBansResponse_httpStatus = Lens.lens (\ListChannelBansResponse' {httpStatus} -> httpStatus) (\s@ListChannelBansResponse' {} a -> s {httpStatus = a} :: ListChannelBansResponse)
+
+instance Prelude.NFData ListChannelBansResponse where
+  rnf ListChannelBansResponse' {..} =
+    Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf channelBans
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/ListChannelMemberships.hs b/gen/Amazonka/Chime/ListChannelMemberships.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ListChannelMemberships.hs
@@ -0,0 +1,260 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ListChannelMemberships
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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.
+module Amazonka.Chime.ListChannelMemberships
+  ( -- * Creating a Request
+    ListChannelMemberships (..),
+    newListChannelMemberships,
+
+    -- * Request Lenses
+    listChannelMemberships_chimeBearer,
+    listChannelMemberships_maxResults,
+    listChannelMemberships_nextToken,
+    listChannelMemberships_type,
+    listChannelMemberships_channelArn,
+
+    -- * Destructuring the Response
+    ListChannelMembershipsResponse (..),
+    newListChannelMembershipsResponse,
+
+    -- * Response Lenses
+    listChannelMembershipsResponse_channelArn,
+    listChannelMembershipsResponse_channelMemberships,
+    listChannelMembershipsResponse_nextToken,
+    listChannelMembershipsResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListChannelMemberships' smart constructor.
+data ListChannelMemberships = ListChannelMemberships'
+  { -- | The @AppInstanceUserArn@ of the user that makes the API call.
+    chimeBearer :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of channel memberships that you want returned.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token passed by previous API calls until all requested channel
+    -- memberships are returned.
+    nextToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | 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.
+    type' :: Prelude.Maybe ChannelMembershipType,
+    -- | The maximum number of channel memberships that you want returned.
+    channelArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListChannelMemberships' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chimeBearer', 'listChannelMemberships_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
+--
+-- 'maxResults', 'listChannelMemberships_maxResults' - The maximum number of channel memberships that you want returned.
+--
+-- 'nextToken', 'listChannelMemberships_nextToken' - The token passed by previous API calls until all requested channel
+-- memberships are returned.
+--
+-- 'type'', 'listChannelMemberships_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.
+--
+-- 'channelArn', 'listChannelMemberships_channelArn' - The maximum number of channel memberships that you want returned.
+newListChannelMemberships ::
+  -- | 'channelArn'
+  Prelude.Text ->
+  ListChannelMemberships
+newListChannelMemberships pChannelArn_ =
+  ListChannelMemberships'
+    { chimeBearer =
+        Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      channelArn = pChannelArn_
+    }
+
+-- | The @AppInstanceUserArn@ of the user that makes the API call.
+listChannelMemberships_chimeBearer :: Lens.Lens' ListChannelMemberships (Prelude.Maybe Prelude.Text)
+listChannelMemberships_chimeBearer = Lens.lens (\ListChannelMemberships' {chimeBearer} -> chimeBearer) (\s@ListChannelMemberships' {} a -> s {chimeBearer = a} :: ListChannelMemberships)
+
+-- | The maximum number of channel memberships that you want returned.
+listChannelMemberships_maxResults :: Lens.Lens' ListChannelMemberships (Prelude.Maybe Prelude.Natural)
+listChannelMemberships_maxResults = Lens.lens (\ListChannelMemberships' {maxResults} -> maxResults) (\s@ListChannelMemberships' {} a -> s {maxResults = a} :: ListChannelMemberships)
+
+-- | The token passed by previous API calls until all requested channel
+-- memberships are returned.
+listChannelMemberships_nextToken :: Lens.Lens' ListChannelMemberships (Prelude.Maybe Prelude.Text)
+listChannelMemberships_nextToken = Lens.lens (\ListChannelMemberships' {nextToken} -> nextToken) (\s@ListChannelMemberships' {} a -> s {nextToken = a} :: ListChannelMemberships) Prelude.. Lens.mapping Data._Sensitive
+
+-- | 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.
+listChannelMemberships_type :: Lens.Lens' ListChannelMemberships (Prelude.Maybe ChannelMembershipType)
+listChannelMemberships_type = Lens.lens (\ListChannelMemberships' {type'} -> type') (\s@ListChannelMemberships' {} a -> s {type' = a} :: ListChannelMemberships)
+
+-- | The maximum number of channel memberships that you want returned.
+listChannelMemberships_channelArn :: Lens.Lens' ListChannelMemberships Prelude.Text
+listChannelMemberships_channelArn = Lens.lens (\ListChannelMemberships' {channelArn} -> channelArn) (\s@ListChannelMemberships' {} a -> s {channelArn = a} :: ListChannelMemberships)
+
+instance Core.AWSRequest ListChannelMemberships where
+  type
+    AWSResponse ListChannelMemberships =
+      ListChannelMembershipsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListChannelMembershipsResponse'
+            Prelude.<$> (x Data..?> "ChannelArn")
+            Prelude.<*> ( x
+                            Data..?> "ChannelMemberships"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListChannelMemberships where
+  hashWithSalt _salt ListChannelMemberships' {..} =
+    _salt
+      `Prelude.hashWithSalt` chimeBearer
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` channelArn
+
+instance Prelude.NFData ListChannelMemberships where
+  rnf ListChannelMemberships' {..} =
+    Prelude.rnf chimeBearer
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf channelArn
+
+instance Data.ToHeaders ListChannelMemberships where
+  toHeaders ListChannelMemberships' {..} =
+    Prelude.mconcat
+      ["x-amz-chime-bearer" Data.=# chimeBearer]
+
+instance Data.ToPath ListChannelMemberships where
+  toPath ListChannelMemberships' {..} =
+    Prelude.mconcat
+      ["/channels/", Data.toBS channelArn, "/memberships"]
+
+instance Data.ToQuery ListChannelMemberships where
+  toQuery ListChannelMemberships' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken,
+        "type" Data.=: type'
+      ]
+
+-- | /See:/ 'newListChannelMembershipsResponse' smart constructor.
+data ListChannelMembershipsResponse = ListChannelMembershipsResponse'
+  { -- | The ARN of the channel.
+    channelArn :: Prelude.Maybe Prelude.Text,
+    -- | The information for the requested channel memberships.
+    channelMemberships :: Prelude.Maybe [ChannelMembershipSummary],
+    -- | The token passed by previous API calls until all requested channel
+    -- memberships are returned.
+    nextToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListChannelMembershipsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channelArn', 'listChannelMembershipsResponse_channelArn' - The ARN of the channel.
+--
+-- 'channelMemberships', 'listChannelMembershipsResponse_channelMemberships' - The information for the requested channel memberships.
+--
+-- 'nextToken', 'listChannelMembershipsResponse_nextToken' - The token passed by previous API calls until all requested channel
+-- memberships are returned.
+--
+-- 'httpStatus', 'listChannelMembershipsResponse_httpStatus' - The response's http status code.
+newListChannelMembershipsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListChannelMembershipsResponse
+newListChannelMembershipsResponse pHttpStatus_ =
+  ListChannelMembershipsResponse'
+    { channelArn =
+        Prelude.Nothing,
+      channelMemberships = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of the channel.
+listChannelMembershipsResponse_channelArn :: Lens.Lens' ListChannelMembershipsResponse (Prelude.Maybe Prelude.Text)
+listChannelMembershipsResponse_channelArn = Lens.lens (\ListChannelMembershipsResponse' {channelArn} -> channelArn) (\s@ListChannelMembershipsResponse' {} a -> s {channelArn = a} :: ListChannelMembershipsResponse)
+
+-- | The information for the requested channel memberships.
+listChannelMembershipsResponse_channelMemberships :: Lens.Lens' ListChannelMembershipsResponse (Prelude.Maybe [ChannelMembershipSummary])
+listChannelMembershipsResponse_channelMemberships = Lens.lens (\ListChannelMembershipsResponse' {channelMemberships} -> channelMemberships) (\s@ListChannelMembershipsResponse' {} a -> s {channelMemberships = a} :: ListChannelMembershipsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token passed by previous API calls until all requested channel
+-- memberships are returned.
+listChannelMembershipsResponse_nextToken :: Lens.Lens' ListChannelMembershipsResponse (Prelude.Maybe Prelude.Text)
+listChannelMembershipsResponse_nextToken = Lens.lens (\ListChannelMembershipsResponse' {nextToken} -> nextToken) (\s@ListChannelMembershipsResponse' {} a -> s {nextToken = a} :: ListChannelMembershipsResponse) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The response's http status code.
+listChannelMembershipsResponse_httpStatus :: Lens.Lens' ListChannelMembershipsResponse Prelude.Int
+listChannelMembershipsResponse_httpStatus = Lens.lens (\ListChannelMembershipsResponse' {httpStatus} -> httpStatus) (\s@ListChannelMembershipsResponse' {} a -> s {httpStatus = a} :: ListChannelMembershipsResponse)
+
+instance
+  Prelude.NFData
+    ListChannelMembershipsResponse
+  where
+  rnf ListChannelMembershipsResponse' {..} =
+    Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf channelMemberships
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/ListChannelMembershipsForAppInstanceUser.hs b/gen/Amazonka/Chime/ListChannelMembershipsForAppInstanceUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ListChannelMembershipsForAppInstanceUser.hs
@@ -0,0 +1,254 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ListChannelMembershipsForAppInstanceUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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.
+module Amazonka.Chime.ListChannelMembershipsForAppInstanceUser
+  ( -- * Creating a Request
+    ListChannelMembershipsForAppInstanceUser (..),
+    newListChannelMembershipsForAppInstanceUser,
+
+    -- * Request Lenses
+    listChannelMembershipsForAppInstanceUser_appInstanceUserArn,
+    listChannelMembershipsForAppInstanceUser_chimeBearer,
+    listChannelMembershipsForAppInstanceUser_maxResults,
+    listChannelMembershipsForAppInstanceUser_nextToken,
+
+    -- * Destructuring the Response
+    ListChannelMembershipsForAppInstanceUserResponse (..),
+    newListChannelMembershipsForAppInstanceUserResponse,
+
+    -- * Response Lenses
+    listChannelMembershipsForAppInstanceUserResponse_channelMemberships,
+    listChannelMembershipsForAppInstanceUserResponse_nextToken,
+    listChannelMembershipsForAppInstanceUserResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListChannelMembershipsForAppInstanceUser' smart constructor.
+data ListChannelMembershipsForAppInstanceUser = ListChannelMembershipsForAppInstanceUser'
+  { -- | The ARN of the @AppInstanceUser@s
+    appInstanceUserArn :: Prelude.Maybe Prelude.Text,
+    -- | The @AppInstanceUserArn@ of the user that makes the API call.
+    chimeBearer :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of users that you want returned.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token returned from previous API requests until the number of
+    -- channel memberships is reached.
+    nextToken :: Prelude.Maybe (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListChannelMembershipsForAppInstanceUser' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceUserArn', 'listChannelMembershipsForAppInstanceUser_appInstanceUserArn' - The ARN of the @AppInstanceUser@s
+--
+-- 'chimeBearer', 'listChannelMembershipsForAppInstanceUser_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
+--
+-- 'maxResults', 'listChannelMembershipsForAppInstanceUser_maxResults' - The maximum number of users that you want returned.
+--
+-- 'nextToken', 'listChannelMembershipsForAppInstanceUser_nextToken' - The token returned from previous API requests until the number of
+-- channel memberships is reached.
+newListChannelMembershipsForAppInstanceUser ::
+  ListChannelMembershipsForAppInstanceUser
+newListChannelMembershipsForAppInstanceUser =
+  ListChannelMembershipsForAppInstanceUser'
+    { appInstanceUserArn =
+        Prelude.Nothing,
+      chimeBearer = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The ARN of the @AppInstanceUser@s
+listChannelMembershipsForAppInstanceUser_appInstanceUserArn :: Lens.Lens' ListChannelMembershipsForAppInstanceUser (Prelude.Maybe Prelude.Text)
+listChannelMembershipsForAppInstanceUser_appInstanceUserArn = Lens.lens (\ListChannelMembershipsForAppInstanceUser' {appInstanceUserArn} -> appInstanceUserArn) (\s@ListChannelMembershipsForAppInstanceUser' {} a -> s {appInstanceUserArn = a} :: ListChannelMembershipsForAppInstanceUser)
+
+-- | The @AppInstanceUserArn@ of the user that makes the API call.
+listChannelMembershipsForAppInstanceUser_chimeBearer :: Lens.Lens' ListChannelMembershipsForAppInstanceUser (Prelude.Maybe Prelude.Text)
+listChannelMembershipsForAppInstanceUser_chimeBearer = Lens.lens (\ListChannelMembershipsForAppInstanceUser' {chimeBearer} -> chimeBearer) (\s@ListChannelMembershipsForAppInstanceUser' {} a -> s {chimeBearer = a} :: ListChannelMembershipsForAppInstanceUser)
+
+-- | The maximum number of users that you want returned.
+listChannelMembershipsForAppInstanceUser_maxResults :: Lens.Lens' ListChannelMembershipsForAppInstanceUser (Prelude.Maybe Prelude.Natural)
+listChannelMembershipsForAppInstanceUser_maxResults = Lens.lens (\ListChannelMembershipsForAppInstanceUser' {maxResults} -> maxResults) (\s@ListChannelMembershipsForAppInstanceUser' {} a -> s {maxResults = a} :: ListChannelMembershipsForAppInstanceUser)
+
+-- | The token returned from previous API requests until the number of
+-- channel memberships is reached.
+listChannelMembershipsForAppInstanceUser_nextToken :: Lens.Lens' ListChannelMembershipsForAppInstanceUser (Prelude.Maybe Prelude.Text)
+listChannelMembershipsForAppInstanceUser_nextToken = Lens.lens (\ListChannelMembershipsForAppInstanceUser' {nextToken} -> nextToken) (\s@ListChannelMembershipsForAppInstanceUser' {} a -> s {nextToken = a} :: ListChannelMembershipsForAppInstanceUser) Prelude.. Lens.mapping Data._Sensitive
+
+instance
+  Core.AWSRequest
+    ListChannelMembershipsForAppInstanceUser
+  where
+  type
+    AWSResponse
+      ListChannelMembershipsForAppInstanceUser =
+      ListChannelMembershipsForAppInstanceUserResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListChannelMembershipsForAppInstanceUserResponse'
+            Prelude.<$> ( x
+                            Data..?> "ChannelMemberships"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    ListChannelMembershipsForAppInstanceUser
+  where
+  hashWithSalt
+    _salt
+    ListChannelMembershipsForAppInstanceUser' {..} =
+      _salt
+        `Prelude.hashWithSalt` appInstanceUserArn
+        `Prelude.hashWithSalt` chimeBearer
+        `Prelude.hashWithSalt` maxResults
+        `Prelude.hashWithSalt` nextToken
+
+instance
+  Prelude.NFData
+    ListChannelMembershipsForAppInstanceUser
+  where
+  rnf ListChannelMembershipsForAppInstanceUser' {..} =
+    Prelude.rnf appInstanceUserArn
+      `Prelude.seq` Prelude.rnf chimeBearer
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance
+  Data.ToHeaders
+    ListChannelMembershipsForAppInstanceUser
+  where
+  toHeaders
+    ListChannelMembershipsForAppInstanceUser' {..} =
+      Prelude.mconcat
+        ["x-amz-chime-bearer" Data.=# chimeBearer]
+
+instance
+  Data.ToPath
+    ListChannelMembershipsForAppInstanceUser
+  where
+  toPath = Prelude.const "/channels"
+
+instance
+  Data.ToQuery
+    ListChannelMembershipsForAppInstanceUser
+  where
+  toQuery ListChannelMembershipsForAppInstanceUser' {..} =
+    Prelude.mconcat
+      [ "app-instance-user-arn" Data.=: appInstanceUserArn,
+        "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken,
+        "scope=app-instance-user-memberships"
+      ]
+
+-- | /See:/ 'newListChannelMembershipsForAppInstanceUserResponse' smart constructor.
+data ListChannelMembershipsForAppInstanceUserResponse = ListChannelMembershipsForAppInstanceUserResponse'
+  { -- | The token passed by previous API calls until all requested users are
+    -- returned.
+    channelMemberships :: Prelude.Maybe [ChannelMembershipForAppInstanceUserSummary],
+    -- | The token passed by previous API calls until all requested users are
+    -- returned.
+    nextToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListChannelMembershipsForAppInstanceUserResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channelMemberships', 'listChannelMembershipsForAppInstanceUserResponse_channelMemberships' - The token passed by previous API calls until all requested users are
+-- returned.
+--
+-- 'nextToken', 'listChannelMembershipsForAppInstanceUserResponse_nextToken' - The token passed by previous API calls until all requested users are
+-- returned.
+--
+-- 'httpStatus', 'listChannelMembershipsForAppInstanceUserResponse_httpStatus' - The response's http status code.
+newListChannelMembershipsForAppInstanceUserResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListChannelMembershipsForAppInstanceUserResponse
+newListChannelMembershipsForAppInstanceUserResponse
+  pHttpStatus_ =
+    ListChannelMembershipsForAppInstanceUserResponse'
+      { channelMemberships =
+          Prelude.Nothing,
+        nextToken =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The token passed by previous API calls until all requested users are
+-- returned.
+listChannelMembershipsForAppInstanceUserResponse_channelMemberships :: Lens.Lens' ListChannelMembershipsForAppInstanceUserResponse (Prelude.Maybe [ChannelMembershipForAppInstanceUserSummary])
+listChannelMembershipsForAppInstanceUserResponse_channelMemberships = Lens.lens (\ListChannelMembershipsForAppInstanceUserResponse' {channelMemberships} -> channelMemberships) (\s@ListChannelMembershipsForAppInstanceUserResponse' {} a -> s {channelMemberships = a} :: ListChannelMembershipsForAppInstanceUserResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token passed by previous API calls until all requested users are
+-- returned.
+listChannelMembershipsForAppInstanceUserResponse_nextToken :: Lens.Lens' ListChannelMembershipsForAppInstanceUserResponse (Prelude.Maybe Prelude.Text)
+listChannelMembershipsForAppInstanceUserResponse_nextToken = Lens.lens (\ListChannelMembershipsForAppInstanceUserResponse' {nextToken} -> nextToken) (\s@ListChannelMembershipsForAppInstanceUserResponse' {} a -> s {nextToken = a} :: ListChannelMembershipsForAppInstanceUserResponse) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The response's http status code.
+listChannelMembershipsForAppInstanceUserResponse_httpStatus :: Lens.Lens' ListChannelMembershipsForAppInstanceUserResponse Prelude.Int
+listChannelMembershipsForAppInstanceUserResponse_httpStatus = Lens.lens (\ListChannelMembershipsForAppInstanceUserResponse' {httpStatus} -> httpStatus) (\s@ListChannelMembershipsForAppInstanceUserResponse' {} a -> s {httpStatus = a} :: ListChannelMembershipsForAppInstanceUserResponse)
+
+instance
+  Prelude.NFData
+    ListChannelMembershipsForAppInstanceUserResponse
+  where
+  rnf
+    ListChannelMembershipsForAppInstanceUserResponse' {..} =
+      Prelude.rnf channelMemberships
+        `Prelude.seq` Prelude.rnf nextToken
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/ListChannelMessages.hs b/gen/Amazonka/Chime/ListChannelMessages.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ListChannelMessages.hs
@@ -0,0 +1,282 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ListChannelMessages
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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.
+module Amazonka.Chime.ListChannelMessages
+  ( -- * Creating a Request
+    ListChannelMessages (..),
+    newListChannelMessages,
+
+    -- * Request Lenses
+    listChannelMessages_chimeBearer,
+    listChannelMessages_maxResults,
+    listChannelMessages_nextToken,
+    listChannelMessages_notAfter,
+    listChannelMessages_notBefore,
+    listChannelMessages_sortOrder,
+    listChannelMessages_channelArn,
+
+    -- * Destructuring the Response
+    ListChannelMessagesResponse (..),
+    newListChannelMessagesResponse,
+
+    -- * Response Lenses
+    listChannelMessagesResponse_channelArn,
+    listChannelMessagesResponse_channelMessages,
+    listChannelMessagesResponse_nextToken,
+    listChannelMessagesResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListChannelMessages' smart constructor.
+data ListChannelMessages = ListChannelMessages'
+  { -- | The @AppInstanceUserArn@ of the user that makes the API call.
+    chimeBearer :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of messages that you want returned.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token passed by previous API calls until all requested messages are
+    -- returned.
+    nextToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The final or ending time stamp for your requested messages.
+    notAfter :: Prelude.Maybe Data.POSIX,
+    -- | The initial or starting time stamp for your requested messages.
+    notBefore :: Prelude.Maybe Data.POSIX,
+    -- | The order in which you want messages sorted. Default is Descending,
+    -- based on time created.
+    sortOrder :: Prelude.Maybe SortOrder,
+    -- | The ARN of the channel.
+    channelArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListChannelMessages' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chimeBearer', 'listChannelMessages_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
+--
+-- 'maxResults', 'listChannelMessages_maxResults' - The maximum number of messages that you want returned.
+--
+-- 'nextToken', 'listChannelMessages_nextToken' - The token passed by previous API calls until all requested messages are
+-- returned.
+--
+-- 'notAfter', 'listChannelMessages_notAfter' - The final or ending time stamp for your requested messages.
+--
+-- 'notBefore', 'listChannelMessages_notBefore' - The initial or starting time stamp for your requested messages.
+--
+-- 'sortOrder', 'listChannelMessages_sortOrder' - The order in which you want messages sorted. Default is Descending,
+-- based on time created.
+--
+-- 'channelArn', 'listChannelMessages_channelArn' - The ARN of the channel.
+newListChannelMessages ::
+  -- | 'channelArn'
+  Prelude.Text ->
+  ListChannelMessages
+newListChannelMessages pChannelArn_ =
+  ListChannelMessages'
+    { chimeBearer = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      notAfter = Prelude.Nothing,
+      notBefore = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      channelArn = pChannelArn_
+    }
+
+-- | The @AppInstanceUserArn@ of the user that makes the API call.
+listChannelMessages_chimeBearer :: Lens.Lens' ListChannelMessages (Prelude.Maybe Prelude.Text)
+listChannelMessages_chimeBearer = Lens.lens (\ListChannelMessages' {chimeBearer} -> chimeBearer) (\s@ListChannelMessages' {} a -> s {chimeBearer = a} :: ListChannelMessages)
+
+-- | The maximum number of messages that you want returned.
+listChannelMessages_maxResults :: Lens.Lens' ListChannelMessages (Prelude.Maybe Prelude.Natural)
+listChannelMessages_maxResults = Lens.lens (\ListChannelMessages' {maxResults} -> maxResults) (\s@ListChannelMessages' {} a -> s {maxResults = a} :: ListChannelMessages)
+
+-- | The token passed by previous API calls until all requested messages are
+-- returned.
+listChannelMessages_nextToken :: Lens.Lens' ListChannelMessages (Prelude.Maybe Prelude.Text)
+listChannelMessages_nextToken = Lens.lens (\ListChannelMessages' {nextToken} -> nextToken) (\s@ListChannelMessages' {} a -> s {nextToken = a} :: ListChannelMessages) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The final or ending time stamp for your requested messages.
+listChannelMessages_notAfter :: Lens.Lens' ListChannelMessages (Prelude.Maybe Prelude.UTCTime)
+listChannelMessages_notAfter = Lens.lens (\ListChannelMessages' {notAfter} -> notAfter) (\s@ListChannelMessages' {} a -> s {notAfter = a} :: ListChannelMessages) Prelude.. Lens.mapping Data._Time
+
+-- | The initial or starting time stamp for your requested messages.
+listChannelMessages_notBefore :: Lens.Lens' ListChannelMessages (Prelude.Maybe Prelude.UTCTime)
+listChannelMessages_notBefore = Lens.lens (\ListChannelMessages' {notBefore} -> notBefore) (\s@ListChannelMessages' {} a -> s {notBefore = a} :: ListChannelMessages) Prelude.. Lens.mapping Data._Time
+
+-- | The order in which you want messages sorted. Default is Descending,
+-- based on time created.
+listChannelMessages_sortOrder :: Lens.Lens' ListChannelMessages (Prelude.Maybe SortOrder)
+listChannelMessages_sortOrder = Lens.lens (\ListChannelMessages' {sortOrder} -> sortOrder) (\s@ListChannelMessages' {} a -> s {sortOrder = a} :: ListChannelMessages)
+
+-- | The ARN of the channel.
+listChannelMessages_channelArn :: Lens.Lens' ListChannelMessages Prelude.Text
+listChannelMessages_channelArn = Lens.lens (\ListChannelMessages' {channelArn} -> channelArn) (\s@ListChannelMessages' {} a -> s {channelArn = a} :: ListChannelMessages)
+
+instance Core.AWSRequest ListChannelMessages where
+  type
+    AWSResponse ListChannelMessages =
+      ListChannelMessagesResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListChannelMessagesResponse'
+            Prelude.<$> (x Data..?> "ChannelArn")
+            Prelude.<*> ( x
+                            Data..?> "ChannelMessages"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListChannelMessages where
+  hashWithSalt _salt ListChannelMessages' {..} =
+    _salt
+      `Prelude.hashWithSalt` chimeBearer
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` notAfter
+      `Prelude.hashWithSalt` notBefore
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` channelArn
+
+instance Prelude.NFData ListChannelMessages where
+  rnf ListChannelMessages' {..} =
+    Prelude.rnf chimeBearer
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf notAfter
+      `Prelude.seq` Prelude.rnf notBefore
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf channelArn
+
+instance Data.ToHeaders ListChannelMessages where
+  toHeaders ListChannelMessages' {..} =
+    Prelude.mconcat
+      ["x-amz-chime-bearer" Data.=# chimeBearer]
+
+instance Data.ToPath ListChannelMessages where
+  toPath ListChannelMessages' {..} =
+    Prelude.mconcat
+      ["/channels/", Data.toBS channelArn, "/messages"]
+
+instance Data.ToQuery ListChannelMessages where
+  toQuery ListChannelMessages' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken,
+        "not-after" Data.=: notAfter,
+        "not-before" Data.=: notBefore,
+        "sort-order" Data.=: sortOrder
+      ]
+
+-- | /See:/ 'newListChannelMessagesResponse' smart constructor.
+data ListChannelMessagesResponse = ListChannelMessagesResponse'
+  { -- | The ARN of the channel containing the requested messages.
+    channelArn :: Prelude.Maybe Prelude.Text,
+    -- | The information about, and content of, each requested message.
+    channelMessages :: Prelude.Maybe [ChannelMessageSummary],
+    -- | The token passed by previous API calls until all requested messages are
+    -- returned.
+    nextToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListChannelMessagesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channelArn', 'listChannelMessagesResponse_channelArn' - The ARN of the channel containing the requested messages.
+--
+-- 'channelMessages', 'listChannelMessagesResponse_channelMessages' - The information about, and content of, each requested message.
+--
+-- 'nextToken', 'listChannelMessagesResponse_nextToken' - The token passed by previous API calls until all requested messages are
+-- returned.
+--
+-- 'httpStatus', 'listChannelMessagesResponse_httpStatus' - The response's http status code.
+newListChannelMessagesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListChannelMessagesResponse
+newListChannelMessagesResponse pHttpStatus_ =
+  ListChannelMessagesResponse'
+    { channelArn =
+        Prelude.Nothing,
+      channelMessages = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of the channel containing the requested messages.
+listChannelMessagesResponse_channelArn :: Lens.Lens' ListChannelMessagesResponse (Prelude.Maybe Prelude.Text)
+listChannelMessagesResponse_channelArn = Lens.lens (\ListChannelMessagesResponse' {channelArn} -> channelArn) (\s@ListChannelMessagesResponse' {} a -> s {channelArn = a} :: ListChannelMessagesResponse)
+
+-- | The information about, and content of, each requested message.
+listChannelMessagesResponse_channelMessages :: Lens.Lens' ListChannelMessagesResponse (Prelude.Maybe [ChannelMessageSummary])
+listChannelMessagesResponse_channelMessages = Lens.lens (\ListChannelMessagesResponse' {channelMessages} -> channelMessages) (\s@ListChannelMessagesResponse' {} a -> s {channelMessages = a} :: ListChannelMessagesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token passed by previous API calls until all requested messages are
+-- returned.
+listChannelMessagesResponse_nextToken :: Lens.Lens' ListChannelMessagesResponse (Prelude.Maybe Prelude.Text)
+listChannelMessagesResponse_nextToken = Lens.lens (\ListChannelMessagesResponse' {nextToken} -> nextToken) (\s@ListChannelMessagesResponse' {} a -> s {nextToken = a} :: ListChannelMessagesResponse) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The response's http status code.
+listChannelMessagesResponse_httpStatus :: Lens.Lens' ListChannelMessagesResponse Prelude.Int
+listChannelMessagesResponse_httpStatus = Lens.lens (\ListChannelMessagesResponse' {httpStatus} -> httpStatus) (\s@ListChannelMessagesResponse' {} a -> s {httpStatus = a} :: ListChannelMessagesResponse)
+
+instance Prelude.NFData ListChannelMessagesResponse where
+  rnf ListChannelMessagesResponse' {..} =
+    Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf channelMessages
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/ListChannelModerators.hs b/gen/Amazonka/Chime/ListChannelModerators.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ListChannelModerators.hs
@@ -0,0 +1,235 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ListChannelModerators
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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.
+module Amazonka.Chime.ListChannelModerators
+  ( -- * Creating a Request
+    ListChannelModerators (..),
+    newListChannelModerators,
+
+    -- * Request Lenses
+    listChannelModerators_chimeBearer,
+    listChannelModerators_maxResults,
+    listChannelModerators_nextToken,
+    listChannelModerators_channelArn,
+
+    -- * Destructuring the Response
+    ListChannelModeratorsResponse (..),
+    newListChannelModeratorsResponse,
+
+    -- * Response Lenses
+    listChannelModeratorsResponse_channelArn,
+    listChannelModeratorsResponse_channelModerators,
+    listChannelModeratorsResponse_nextToken,
+    listChannelModeratorsResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListChannelModerators' smart constructor.
+data ListChannelModerators = ListChannelModerators'
+  { -- | The @AppInstanceUserArn@ of the user that makes the API call.
+    chimeBearer :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of moderators that you want returned.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token passed by previous API calls until all requested moderators
+    -- are returned.
+    nextToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The ARN of the channel.
+    channelArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListChannelModerators' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chimeBearer', 'listChannelModerators_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
+--
+-- 'maxResults', 'listChannelModerators_maxResults' - The maximum number of moderators that you want returned.
+--
+-- 'nextToken', 'listChannelModerators_nextToken' - The token passed by previous API calls until all requested moderators
+-- are returned.
+--
+-- 'channelArn', 'listChannelModerators_channelArn' - The ARN of the channel.
+newListChannelModerators ::
+  -- | 'channelArn'
+  Prelude.Text ->
+  ListChannelModerators
+newListChannelModerators pChannelArn_ =
+  ListChannelModerators'
+    { chimeBearer =
+        Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      channelArn = pChannelArn_
+    }
+
+-- | The @AppInstanceUserArn@ of the user that makes the API call.
+listChannelModerators_chimeBearer :: Lens.Lens' ListChannelModerators (Prelude.Maybe Prelude.Text)
+listChannelModerators_chimeBearer = Lens.lens (\ListChannelModerators' {chimeBearer} -> chimeBearer) (\s@ListChannelModerators' {} a -> s {chimeBearer = a} :: ListChannelModerators)
+
+-- | The maximum number of moderators that you want returned.
+listChannelModerators_maxResults :: Lens.Lens' ListChannelModerators (Prelude.Maybe Prelude.Natural)
+listChannelModerators_maxResults = Lens.lens (\ListChannelModerators' {maxResults} -> maxResults) (\s@ListChannelModerators' {} a -> s {maxResults = a} :: ListChannelModerators)
+
+-- | The token passed by previous API calls until all requested moderators
+-- are returned.
+listChannelModerators_nextToken :: Lens.Lens' ListChannelModerators (Prelude.Maybe Prelude.Text)
+listChannelModerators_nextToken = Lens.lens (\ListChannelModerators' {nextToken} -> nextToken) (\s@ListChannelModerators' {} a -> s {nextToken = a} :: ListChannelModerators) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The ARN of the channel.
+listChannelModerators_channelArn :: Lens.Lens' ListChannelModerators Prelude.Text
+listChannelModerators_channelArn = Lens.lens (\ListChannelModerators' {channelArn} -> channelArn) (\s@ListChannelModerators' {} a -> s {channelArn = a} :: ListChannelModerators)
+
+instance Core.AWSRequest ListChannelModerators where
+  type
+    AWSResponse ListChannelModerators =
+      ListChannelModeratorsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListChannelModeratorsResponse'
+            Prelude.<$> (x Data..?> "ChannelArn")
+            Prelude.<*> ( x
+                            Data..?> "ChannelModerators"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListChannelModerators where
+  hashWithSalt _salt ListChannelModerators' {..} =
+    _salt
+      `Prelude.hashWithSalt` chimeBearer
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` channelArn
+
+instance Prelude.NFData ListChannelModerators where
+  rnf ListChannelModerators' {..} =
+    Prelude.rnf chimeBearer
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf channelArn
+
+instance Data.ToHeaders ListChannelModerators where
+  toHeaders ListChannelModerators' {..} =
+    Prelude.mconcat
+      ["x-amz-chime-bearer" Data.=# chimeBearer]
+
+instance Data.ToPath ListChannelModerators where
+  toPath ListChannelModerators' {..} =
+    Prelude.mconcat
+      ["/channels/", Data.toBS channelArn, "/moderators"]
+
+instance Data.ToQuery ListChannelModerators where
+  toQuery ListChannelModerators' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListChannelModeratorsResponse' smart constructor.
+data ListChannelModeratorsResponse = ListChannelModeratorsResponse'
+  { -- | The ARN of the channel.
+    channelArn :: Prelude.Maybe Prelude.Text,
+    -- | The information about and names of each moderator.
+    channelModerators :: Prelude.Maybe [ChannelModeratorSummary],
+    -- | The token passed by previous API calls until all requested moderators
+    -- are returned.
+    nextToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListChannelModeratorsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channelArn', 'listChannelModeratorsResponse_channelArn' - The ARN of the channel.
+--
+-- 'channelModerators', 'listChannelModeratorsResponse_channelModerators' - The information about and names of each moderator.
+--
+-- 'nextToken', 'listChannelModeratorsResponse_nextToken' - The token passed by previous API calls until all requested moderators
+-- are returned.
+--
+-- 'httpStatus', 'listChannelModeratorsResponse_httpStatus' - The response's http status code.
+newListChannelModeratorsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListChannelModeratorsResponse
+newListChannelModeratorsResponse pHttpStatus_ =
+  ListChannelModeratorsResponse'
+    { channelArn =
+        Prelude.Nothing,
+      channelModerators = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of the channel.
+listChannelModeratorsResponse_channelArn :: Lens.Lens' ListChannelModeratorsResponse (Prelude.Maybe Prelude.Text)
+listChannelModeratorsResponse_channelArn = Lens.lens (\ListChannelModeratorsResponse' {channelArn} -> channelArn) (\s@ListChannelModeratorsResponse' {} a -> s {channelArn = a} :: ListChannelModeratorsResponse)
+
+-- | The information about and names of each moderator.
+listChannelModeratorsResponse_channelModerators :: Lens.Lens' ListChannelModeratorsResponse (Prelude.Maybe [ChannelModeratorSummary])
+listChannelModeratorsResponse_channelModerators = Lens.lens (\ListChannelModeratorsResponse' {channelModerators} -> channelModerators) (\s@ListChannelModeratorsResponse' {} a -> s {channelModerators = a} :: ListChannelModeratorsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token passed by previous API calls until all requested moderators
+-- are returned.
+listChannelModeratorsResponse_nextToken :: Lens.Lens' ListChannelModeratorsResponse (Prelude.Maybe Prelude.Text)
+listChannelModeratorsResponse_nextToken = Lens.lens (\ListChannelModeratorsResponse' {nextToken} -> nextToken) (\s@ListChannelModeratorsResponse' {} a -> s {nextToken = a} :: ListChannelModeratorsResponse) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The response's http status code.
+listChannelModeratorsResponse_httpStatus :: Lens.Lens' ListChannelModeratorsResponse Prelude.Int
+listChannelModeratorsResponse_httpStatus = Lens.lens (\ListChannelModeratorsResponse' {httpStatus} -> httpStatus) (\s@ListChannelModeratorsResponse' {} a -> s {httpStatus = a} :: ListChannelModeratorsResponse)
+
+instance Prelude.NFData ListChannelModeratorsResponse where
+  rnf ListChannelModeratorsResponse' {..} =
+    Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf channelModerators
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/ListChannels.hs b/gen/Amazonka/Chime/ListChannels.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ListChannels.hs
@@ -0,0 +1,243 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ListChannels
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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.
+module Amazonka.Chime.ListChannels
+  ( -- * Creating a Request
+    ListChannels (..),
+    newListChannels,
+
+    -- * Request Lenses
+    listChannels_chimeBearer,
+    listChannels_maxResults,
+    listChannels_nextToken,
+    listChannels_privacy,
+    listChannels_appInstanceArn,
+
+    -- * Destructuring the Response
+    ListChannelsResponse (..),
+    newListChannelsResponse,
+
+    -- * Response Lenses
+    listChannelsResponse_channels,
+    listChannelsResponse_nextToken,
+    listChannelsResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListChannels' smart constructor.
+data ListChannels = ListChannels'
+  { -- | The @AppInstanceUserArn@ of the user that makes the API call.
+    chimeBearer :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of channels that you want to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token passed by previous API calls until all requested channels are
+    -- returned.
+    nextToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The privacy setting. @PUBLIC@ retrieves all the public channels.
+    -- @PRIVATE@ retrieves private channels. Only an @AppInstanceAdmin@ can
+    -- retrieve private channels.
+    privacy :: Prelude.Maybe ChannelPrivacy,
+    -- | The ARN of the @AppInstance@.
+    appInstanceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListChannels' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chimeBearer', 'listChannels_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
+--
+-- 'maxResults', 'listChannels_maxResults' - The maximum number of channels that you want to return.
+--
+-- 'nextToken', 'listChannels_nextToken' - The token passed by previous API calls until all requested channels are
+-- returned.
+--
+-- 'privacy', 'listChannels_privacy' - The privacy setting. @PUBLIC@ retrieves all the public channels.
+-- @PRIVATE@ retrieves private channels. Only an @AppInstanceAdmin@ can
+-- retrieve private channels.
+--
+-- 'appInstanceArn', 'listChannels_appInstanceArn' - The ARN of the @AppInstance@.
+newListChannels ::
+  -- | 'appInstanceArn'
+  Prelude.Text ->
+  ListChannels
+newListChannels pAppInstanceArn_ =
+  ListChannels'
+    { chimeBearer = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      privacy = Prelude.Nothing,
+      appInstanceArn = pAppInstanceArn_
+    }
+
+-- | The @AppInstanceUserArn@ of the user that makes the API call.
+listChannels_chimeBearer :: Lens.Lens' ListChannels (Prelude.Maybe Prelude.Text)
+listChannels_chimeBearer = Lens.lens (\ListChannels' {chimeBearer} -> chimeBearer) (\s@ListChannels' {} a -> s {chimeBearer = a} :: ListChannels)
+
+-- | The maximum number of channels that you want to return.
+listChannels_maxResults :: Lens.Lens' ListChannels (Prelude.Maybe Prelude.Natural)
+listChannels_maxResults = Lens.lens (\ListChannels' {maxResults} -> maxResults) (\s@ListChannels' {} a -> s {maxResults = a} :: ListChannels)
+
+-- | The token passed by previous API calls until all requested channels are
+-- returned.
+listChannels_nextToken :: Lens.Lens' ListChannels (Prelude.Maybe Prelude.Text)
+listChannels_nextToken = Lens.lens (\ListChannels' {nextToken} -> nextToken) (\s@ListChannels' {} a -> s {nextToken = a} :: ListChannels) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The privacy setting. @PUBLIC@ retrieves all the public channels.
+-- @PRIVATE@ retrieves private channels. Only an @AppInstanceAdmin@ can
+-- retrieve private channels.
+listChannels_privacy :: Lens.Lens' ListChannels (Prelude.Maybe ChannelPrivacy)
+listChannels_privacy = Lens.lens (\ListChannels' {privacy} -> privacy) (\s@ListChannels' {} a -> s {privacy = a} :: ListChannels)
+
+-- | The ARN of the @AppInstance@.
+listChannels_appInstanceArn :: Lens.Lens' ListChannels Prelude.Text
+listChannels_appInstanceArn = Lens.lens (\ListChannels' {appInstanceArn} -> appInstanceArn) (\s@ListChannels' {} a -> s {appInstanceArn = a} :: ListChannels)
+
+instance Core.AWSRequest ListChannels where
+  type AWSResponse ListChannels = ListChannelsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListChannelsResponse'
+            Prelude.<$> (x Data..?> "Channels" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListChannels where
+  hashWithSalt _salt ListChannels' {..} =
+    _salt
+      `Prelude.hashWithSalt` chimeBearer
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` privacy
+      `Prelude.hashWithSalt` appInstanceArn
+
+instance Prelude.NFData ListChannels where
+  rnf ListChannels' {..} =
+    Prelude.rnf chimeBearer
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf privacy
+      `Prelude.seq` Prelude.rnf appInstanceArn
+
+instance Data.ToHeaders ListChannels where
+  toHeaders ListChannels' {..} =
+    Prelude.mconcat
+      ["x-amz-chime-bearer" Data.=# chimeBearer]
+
+instance Data.ToPath ListChannels where
+  toPath = Prelude.const "/channels"
+
+instance Data.ToQuery ListChannels where
+  toQuery ListChannels' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken,
+        "privacy" Data.=: privacy,
+        "app-instance-arn" Data.=: appInstanceArn
+      ]
+
+-- | /See:/ 'newListChannelsResponse' smart constructor.
+data ListChannelsResponse = ListChannelsResponse'
+  { -- | The information about each channel.
+    channels :: Prelude.Maybe [ChannelSummary],
+    -- | The token returned from previous API requests until the number of
+    -- channels is reached.
+    nextToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListChannelsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channels', 'listChannelsResponse_channels' - The information about each channel.
+--
+-- 'nextToken', 'listChannelsResponse_nextToken' - The token returned from previous API requests until the number of
+-- channels is reached.
+--
+-- 'httpStatus', 'listChannelsResponse_httpStatus' - The response's http status code.
+newListChannelsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListChannelsResponse
+newListChannelsResponse pHttpStatus_ =
+  ListChannelsResponse'
+    { channels = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The information about each channel.
+listChannelsResponse_channels :: Lens.Lens' ListChannelsResponse (Prelude.Maybe [ChannelSummary])
+listChannelsResponse_channels = Lens.lens (\ListChannelsResponse' {channels} -> channels) (\s@ListChannelsResponse' {} a -> s {channels = a} :: ListChannelsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token returned from previous API requests until the number of
+-- channels is reached.
+listChannelsResponse_nextToken :: Lens.Lens' ListChannelsResponse (Prelude.Maybe Prelude.Text)
+listChannelsResponse_nextToken = Lens.lens (\ListChannelsResponse' {nextToken} -> nextToken) (\s@ListChannelsResponse' {} a -> s {nextToken = a} :: ListChannelsResponse) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The response's http status code.
+listChannelsResponse_httpStatus :: Lens.Lens' ListChannelsResponse Prelude.Int
+listChannelsResponse_httpStatus = Lens.lens (\ListChannelsResponse' {httpStatus} -> httpStatus) (\s@ListChannelsResponse' {} a -> s {httpStatus = a} :: ListChannelsResponse)
+
+instance Prelude.NFData ListChannelsResponse where
+  rnf ListChannelsResponse' {..} =
+    Prelude.rnf channels
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/ListChannelsModeratedByAppInstanceUser.hs b/gen/Amazonka/Chime/ListChannelsModeratedByAppInstanceUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ListChannelsModeratedByAppInstanceUser.hs
@@ -0,0 +1,244 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ListChannelsModeratedByAppInstanceUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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.
+module Amazonka.Chime.ListChannelsModeratedByAppInstanceUser
+  ( -- * Creating a Request
+    ListChannelsModeratedByAppInstanceUser (..),
+    newListChannelsModeratedByAppInstanceUser,
+
+    -- * Request Lenses
+    listChannelsModeratedByAppInstanceUser_appInstanceUserArn,
+    listChannelsModeratedByAppInstanceUser_chimeBearer,
+    listChannelsModeratedByAppInstanceUser_maxResults,
+    listChannelsModeratedByAppInstanceUser_nextToken,
+
+    -- * Destructuring the Response
+    ListChannelsModeratedByAppInstanceUserResponse (..),
+    newListChannelsModeratedByAppInstanceUserResponse,
+
+    -- * Response Lenses
+    listChannelsModeratedByAppInstanceUserResponse_channels,
+    listChannelsModeratedByAppInstanceUserResponse_nextToken,
+    listChannelsModeratedByAppInstanceUserResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListChannelsModeratedByAppInstanceUser' smart constructor.
+data ListChannelsModeratedByAppInstanceUser = ListChannelsModeratedByAppInstanceUser'
+  { -- | The ARN of the user in the moderated channel.
+    appInstanceUserArn :: Prelude.Maybe Prelude.Text,
+    -- | The @AppInstanceUserArn@ of the user that makes the API call.
+    chimeBearer :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of channels in the request.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token returned from previous API requests until the number of
+    -- channels moderated by the user is reached.
+    nextToken :: Prelude.Maybe (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListChannelsModeratedByAppInstanceUser' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceUserArn', 'listChannelsModeratedByAppInstanceUser_appInstanceUserArn' - The ARN of the user in the moderated channel.
+--
+-- 'chimeBearer', 'listChannelsModeratedByAppInstanceUser_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
+--
+-- 'maxResults', 'listChannelsModeratedByAppInstanceUser_maxResults' - The maximum number of channels in the request.
+--
+-- 'nextToken', 'listChannelsModeratedByAppInstanceUser_nextToken' - The token returned from previous API requests until the number of
+-- channels moderated by the user is reached.
+newListChannelsModeratedByAppInstanceUser ::
+  ListChannelsModeratedByAppInstanceUser
+newListChannelsModeratedByAppInstanceUser =
+  ListChannelsModeratedByAppInstanceUser'
+    { appInstanceUserArn =
+        Prelude.Nothing,
+      chimeBearer = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The ARN of the user in the moderated channel.
+listChannelsModeratedByAppInstanceUser_appInstanceUserArn :: Lens.Lens' ListChannelsModeratedByAppInstanceUser (Prelude.Maybe Prelude.Text)
+listChannelsModeratedByAppInstanceUser_appInstanceUserArn = Lens.lens (\ListChannelsModeratedByAppInstanceUser' {appInstanceUserArn} -> appInstanceUserArn) (\s@ListChannelsModeratedByAppInstanceUser' {} a -> s {appInstanceUserArn = a} :: ListChannelsModeratedByAppInstanceUser)
+
+-- | The @AppInstanceUserArn@ of the user that makes the API call.
+listChannelsModeratedByAppInstanceUser_chimeBearer :: Lens.Lens' ListChannelsModeratedByAppInstanceUser (Prelude.Maybe Prelude.Text)
+listChannelsModeratedByAppInstanceUser_chimeBearer = Lens.lens (\ListChannelsModeratedByAppInstanceUser' {chimeBearer} -> chimeBearer) (\s@ListChannelsModeratedByAppInstanceUser' {} a -> s {chimeBearer = a} :: ListChannelsModeratedByAppInstanceUser)
+
+-- | The maximum number of channels in the request.
+listChannelsModeratedByAppInstanceUser_maxResults :: Lens.Lens' ListChannelsModeratedByAppInstanceUser (Prelude.Maybe Prelude.Natural)
+listChannelsModeratedByAppInstanceUser_maxResults = Lens.lens (\ListChannelsModeratedByAppInstanceUser' {maxResults} -> maxResults) (\s@ListChannelsModeratedByAppInstanceUser' {} a -> s {maxResults = a} :: ListChannelsModeratedByAppInstanceUser)
+
+-- | The token returned from previous API requests until the number of
+-- channels moderated by the user is reached.
+listChannelsModeratedByAppInstanceUser_nextToken :: Lens.Lens' ListChannelsModeratedByAppInstanceUser (Prelude.Maybe Prelude.Text)
+listChannelsModeratedByAppInstanceUser_nextToken = Lens.lens (\ListChannelsModeratedByAppInstanceUser' {nextToken} -> nextToken) (\s@ListChannelsModeratedByAppInstanceUser' {} a -> s {nextToken = a} :: ListChannelsModeratedByAppInstanceUser) Prelude.. Lens.mapping Data._Sensitive
+
+instance
+  Core.AWSRequest
+    ListChannelsModeratedByAppInstanceUser
+  where
+  type
+    AWSResponse
+      ListChannelsModeratedByAppInstanceUser =
+      ListChannelsModeratedByAppInstanceUserResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListChannelsModeratedByAppInstanceUserResponse'
+            Prelude.<$> (x Data..?> "Channels" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    ListChannelsModeratedByAppInstanceUser
+  where
+  hashWithSalt
+    _salt
+    ListChannelsModeratedByAppInstanceUser' {..} =
+      _salt
+        `Prelude.hashWithSalt` appInstanceUserArn
+        `Prelude.hashWithSalt` chimeBearer
+        `Prelude.hashWithSalt` maxResults
+        `Prelude.hashWithSalt` nextToken
+
+instance
+  Prelude.NFData
+    ListChannelsModeratedByAppInstanceUser
+  where
+  rnf ListChannelsModeratedByAppInstanceUser' {..} =
+    Prelude.rnf appInstanceUserArn
+      `Prelude.seq` Prelude.rnf chimeBearer
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance
+  Data.ToHeaders
+    ListChannelsModeratedByAppInstanceUser
+  where
+  toHeaders ListChannelsModeratedByAppInstanceUser' {..} =
+    Prelude.mconcat
+      ["x-amz-chime-bearer" Data.=# chimeBearer]
+
+instance
+  Data.ToPath
+    ListChannelsModeratedByAppInstanceUser
+  where
+  toPath = Prelude.const "/channels"
+
+instance
+  Data.ToQuery
+    ListChannelsModeratedByAppInstanceUser
+  where
+  toQuery ListChannelsModeratedByAppInstanceUser' {..} =
+    Prelude.mconcat
+      [ "app-instance-user-arn" Data.=: appInstanceUserArn,
+        "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken,
+        "scope=app-instance-user-moderated-channels"
+      ]
+
+-- | /See:/ 'newListChannelsModeratedByAppInstanceUserResponse' smart constructor.
+data ListChannelsModeratedByAppInstanceUserResponse = ListChannelsModeratedByAppInstanceUserResponse'
+  { -- | The moderated channels in the request.
+    channels :: Prelude.Maybe [ChannelModeratedByAppInstanceUserSummary],
+    -- | The token returned from previous API requests until the number of
+    -- channels moderated by the user is reached.
+    nextToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListChannelsModeratedByAppInstanceUserResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channels', 'listChannelsModeratedByAppInstanceUserResponse_channels' - The moderated channels in the request.
+--
+-- 'nextToken', 'listChannelsModeratedByAppInstanceUserResponse_nextToken' - The token returned from previous API requests until the number of
+-- channels moderated by the user is reached.
+--
+-- 'httpStatus', 'listChannelsModeratedByAppInstanceUserResponse_httpStatus' - The response's http status code.
+newListChannelsModeratedByAppInstanceUserResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListChannelsModeratedByAppInstanceUserResponse
+newListChannelsModeratedByAppInstanceUserResponse
+  pHttpStatus_ =
+    ListChannelsModeratedByAppInstanceUserResponse'
+      { channels =
+          Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The moderated channels in the request.
+listChannelsModeratedByAppInstanceUserResponse_channels :: Lens.Lens' ListChannelsModeratedByAppInstanceUserResponse (Prelude.Maybe [ChannelModeratedByAppInstanceUserSummary])
+listChannelsModeratedByAppInstanceUserResponse_channels = Lens.lens (\ListChannelsModeratedByAppInstanceUserResponse' {channels} -> channels) (\s@ListChannelsModeratedByAppInstanceUserResponse' {} a -> s {channels = a} :: ListChannelsModeratedByAppInstanceUserResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token returned from previous API requests until the number of
+-- channels moderated by the user is reached.
+listChannelsModeratedByAppInstanceUserResponse_nextToken :: Lens.Lens' ListChannelsModeratedByAppInstanceUserResponse (Prelude.Maybe Prelude.Text)
+listChannelsModeratedByAppInstanceUserResponse_nextToken = Lens.lens (\ListChannelsModeratedByAppInstanceUserResponse' {nextToken} -> nextToken) (\s@ListChannelsModeratedByAppInstanceUserResponse' {} a -> s {nextToken = a} :: ListChannelsModeratedByAppInstanceUserResponse) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The response's http status code.
+listChannelsModeratedByAppInstanceUserResponse_httpStatus :: Lens.Lens' ListChannelsModeratedByAppInstanceUserResponse Prelude.Int
+listChannelsModeratedByAppInstanceUserResponse_httpStatus = Lens.lens (\ListChannelsModeratedByAppInstanceUserResponse' {httpStatus} -> httpStatus) (\s@ListChannelsModeratedByAppInstanceUserResponse' {} a -> s {httpStatus = a} :: ListChannelsModeratedByAppInstanceUserResponse)
+
+instance
+  Prelude.NFData
+    ListChannelsModeratedByAppInstanceUserResponse
+  where
+  rnf
+    ListChannelsModeratedByAppInstanceUserResponse' {..} =
+      Prelude.rnf channels
+        `Prelude.seq` Prelude.rnf nextToken
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/ListMediaCapturePipelines.hs b/gen/Amazonka/Chime/ListMediaCapturePipelines.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ListMediaCapturePipelines.hs
@@ -0,0 +1,189 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ListMediaCapturePipelines
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list of media capture pipelines.
+module Amazonka.Chime.ListMediaCapturePipelines
+  ( -- * Creating a Request
+    ListMediaCapturePipelines (..),
+    newListMediaCapturePipelines,
+
+    -- * Request Lenses
+    listMediaCapturePipelines_maxResults,
+    listMediaCapturePipelines_nextToken,
+
+    -- * Destructuring the Response
+    ListMediaCapturePipelinesResponse (..),
+    newListMediaCapturePipelinesResponse,
+
+    -- * Response Lenses
+    listMediaCapturePipelinesResponse_mediaCapturePipelines,
+    listMediaCapturePipelinesResponse_nextToken,
+    listMediaCapturePipelinesResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListMediaCapturePipelines' smart constructor.
+data ListMediaCapturePipelines = ListMediaCapturePipelines'
+  { -- | The maximum number of results to return in a single call. Valid Range: 1
+    -- - 99.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token used to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListMediaCapturePipelines' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listMediaCapturePipelines_maxResults' - The maximum number of results to return in a single call. Valid Range: 1
+-- - 99.
+--
+-- 'nextToken', 'listMediaCapturePipelines_nextToken' - The token used to retrieve the next page of results.
+newListMediaCapturePipelines ::
+  ListMediaCapturePipelines
+newListMediaCapturePipelines =
+  ListMediaCapturePipelines'
+    { maxResults =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The maximum number of results to return in a single call. Valid Range: 1
+-- - 99.
+listMediaCapturePipelines_maxResults :: Lens.Lens' ListMediaCapturePipelines (Prelude.Maybe Prelude.Natural)
+listMediaCapturePipelines_maxResults = Lens.lens (\ListMediaCapturePipelines' {maxResults} -> maxResults) (\s@ListMediaCapturePipelines' {} a -> s {maxResults = a} :: ListMediaCapturePipelines)
+
+-- | The token used to retrieve the next page of results.
+listMediaCapturePipelines_nextToken :: Lens.Lens' ListMediaCapturePipelines (Prelude.Maybe Prelude.Text)
+listMediaCapturePipelines_nextToken = Lens.lens (\ListMediaCapturePipelines' {nextToken} -> nextToken) (\s@ListMediaCapturePipelines' {} a -> s {nextToken = a} :: ListMediaCapturePipelines)
+
+instance Core.AWSRequest ListMediaCapturePipelines where
+  type
+    AWSResponse ListMediaCapturePipelines =
+      ListMediaCapturePipelinesResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListMediaCapturePipelinesResponse'
+            Prelude.<$> ( x
+                            Data..?> "MediaCapturePipelines"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListMediaCapturePipelines where
+  hashWithSalt _salt ListMediaCapturePipelines' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListMediaCapturePipelines where
+  rnf ListMediaCapturePipelines' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListMediaCapturePipelines where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ListMediaCapturePipelines where
+  toPath = Prelude.const "/media-capture-pipelines"
+
+instance Data.ToQuery ListMediaCapturePipelines where
+  toQuery ListMediaCapturePipelines' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListMediaCapturePipelinesResponse' smart constructor.
+data ListMediaCapturePipelinesResponse = ListMediaCapturePipelinesResponse'
+  { -- | The media capture pipeline objects in the list.
+    mediaCapturePipelines :: Prelude.Maybe [MediaCapturePipeline],
+    -- | The token used to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListMediaCapturePipelinesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'mediaCapturePipelines', 'listMediaCapturePipelinesResponse_mediaCapturePipelines' - The media capture pipeline objects in the list.
+--
+-- 'nextToken', 'listMediaCapturePipelinesResponse_nextToken' - The token used to retrieve the next page of results.
+--
+-- 'httpStatus', 'listMediaCapturePipelinesResponse_httpStatus' - The response's http status code.
+newListMediaCapturePipelinesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListMediaCapturePipelinesResponse
+newListMediaCapturePipelinesResponse pHttpStatus_ =
+  ListMediaCapturePipelinesResponse'
+    { mediaCapturePipelines =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The media capture pipeline objects in the list.
+listMediaCapturePipelinesResponse_mediaCapturePipelines :: Lens.Lens' ListMediaCapturePipelinesResponse (Prelude.Maybe [MediaCapturePipeline])
+listMediaCapturePipelinesResponse_mediaCapturePipelines = Lens.lens (\ListMediaCapturePipelinesResponse' {mediaCapturePipelines} -> mediaCapturePipelines) (\s@ListMediaCapturePipelinesResponse' {} a -> s {mediaCapturePipelines = a} :: ListMediaCapturePipelinesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token used to retrieve the next page of results.
+listMediaCapturePipelinesResponse_nextToken :: Lens.Lens' ListMediaCapturePipelinesResponse (Prelude.Maybe Prelude.Text)
+listMediaCapturePipelinesResponse_nextToken = Lens.lens (\ListMediaCapturePipelinesResponse' {nextToken} -> nextToken) (\s@ListMediaCapturePipelinesResponse' {} a -> s {nextToken = a} :: ListMediaCapturePipelinesResponse)
+
+-- | The response's http status code.
+listMediaCapturePipelinesResponse_httpStatus :: Lens.Lens' ListMediaCapturePipelinesResponse Prelude.Int
+listMediaCapturePipelinesResponse_httpStatus = Lens.lens (\ListMediaCapturePipelinesResponse' {httpStatus} -> httpStatus) (\s@ListMediaCapturePipelinesResponse' {} a -> s {httpStatus = a} :: ListMediaCapturePipelinesResponse)
+
+instance
+  Prelude.NFData
+    ListMediaCapturePipelinesResponse
+  where
+  rnf ListMediaCapturePipelinesResponse' {..} =
+    Prelude.rnf mediaCapturePipelines
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/ListMeetingTags.hs b/gen/Amazonka/Chime/ListMeetingTags.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ListMeetingTags.hs
@@ -0,0 +1,150 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ListMeetingTags
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the tags applied to an Amazon Chime SDK meeting resource.
+module Amazonka.Chime.ListMeetingTags
+  ( -- * Creating a Request
+    ListMeetingTags (..),
+    newListMeetingTags,
+
+    -- * Request Lenses
+    listMeetingTags_meetingId,
+
+    -- * Destructuring the Response
+    ListMeetingTagsResponse (..),
+    newListMeetingTagsResponse,
+
+    -- * Response Lenses
+    listMeetingTagsResponse_tags,
+    listMeetingTagsResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListMeetingTags' smart constructor.
+data ListMeetingTags = ListMeetingTags'
+  { -- | The Amazon Chime SDK meeting ID.
+    meetingId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListMeetingTags' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'meetingId', 'listMeetingTags_meetingId' - The Amazon Chime SDK meeting ID.
+newListMeetingTags ::
+  -- | 'meetingId'
+  Prelude.Text ->
+  ListMeetingTags
+newListMeetingTags pMeetingId_ =
+  ListMeetingTags' {meetingId = pMeetingId_}
+
+-- | The Amazon Chime SDK meeting ID.
+listMeetingTags_meetingId :: Lens.Lens' ListMeetingTags Prelude.Text
+listMeetingTags_meetingId = Lens.lens (\ListMeetingTags' {meetingId} -> meetingId) (\s@ListMeetingTags' {} a -> s {meetingId = a} :: ListMeetingTags)
+
+instance Core.AWSRequest ListMeetingTags where
+  type
+    AWSResponse ListMeetingTags =
+      ListMeetingTagsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListMeetingTagsResponse'
+            Prelude.<$> (x Data..?> "Tags")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListMeetingTags where
+  hashWithSalt _salt ListMeetingTags' {..} =
+    _salt `Prelude.hashWithSalt` meetingId
+
+instance Prelude.NFData ListMeetingTags where
+  rnf ListMeetingTags' {..} = Prelude.rnf meetingId
+
+instance Data.ToHeaders ListMeetingTags where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ListMeetingTags where
+  toPath ListMeetingTags' {..} =
+    Prelude.mconcat
+      ["/meetings/", Data.toBS meetingId, "/tags"]
+
+instance Data.ToQuery ListMeetingTags where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListMeetingTagsResponse' smart constructor.
+data ListMeetingTagsResponse = ListMeetingTagsResponse'
+  { -- | A list of tag key-value pairs.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListMeetingTagsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tags', 'listMeetingTagsResponse_tags' - A list of tag key-value pairs.
+--
+-- 'httpStatus', 'listMeetingTagsResponse_httpStatus' - The response's http status code.
+newListMeetingTagsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListMeetingTagsResponse
+newListMeetingTagsResponse pHttpStatus_ =
+  ListMeetingTagsResponse'
+    { tags = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of tag key-value pairs.
+listMeetingTagsResponse_tags :: Lens.Lens' ListMeetingTagsResponse (Prelude.Maybe (Prelude.NonEmpty Tag))
+listMeetingTagsResponse_tags = Lens.lens (\ListMeetingTagsResponse' {tags} -> tags) (\s@ListMeetingTagsResponse' {} a -> s {tags = a} :: ListMeetingTagsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listMeetingTagsResponse_httpStatus :: Lens.Lens' ListMeetingTagsResponse Prelude.Int
+listMeetingTagsResponse_httpStatus = Lens.lens (\ListMeetingTagsResponse' {httpStatus} -> httpStatus) (\s@ListMeetingTagsResponse' {} a -> s {httpStatus = a} :: ListMeetingTagsResponse)
+
+instance Prelude.NFData ListMeetingTagsResponse where
+  rnf ListMeetingTagsResponse' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/ListMeetings.hs b/gen/Amazonka/Chime/ListMeetings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ListMeetings.hs
@@ -0,0 +1,179 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ListMeetings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists up to 100 active Amazon Chime SDK meetings. For more information
+-- about the Amazon Chime SDK, see
+-- <https://docs.aws.amazon.com/chime/latest/dg/meetings-sdk.html Using the Amazon Chime SDK>
+-- in the /Amazon Chime Developer Guide/.
+module Amazonka.Chime.ListMeetings
+  ( -- * Creating a Request
+    ListMeetings (..),
+    newListMeetings,
+
+    -- * Request Lenses
+    listMeetings_maxResults,
+    listMeetings_nextToken,
+
+    -- * Destructuring the Response
+    ListMeetingsResponse (..),
+    newListMeetingsResponse,
+
+    -- * Response Lenses
+    listMeetingsResponse_meetings,
+    listMeetingsResponse_nextToken,
+    listMeetingsResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListMeetings' smart constructor.
+data ListMeetings = ListMeetings'
+  { -- | The maximum number of results to return in a single call.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token to use to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListMeetings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listMeetings_maxResults' - The maximum number of results to return in a single call.
+--
+-- 'nextToken', 'listMeetings_nextToken' - The token to use to retrieve the next page of results.
+newListMeetings ::
+  ListMeetings
+newListMeetings =
+  ListMeetings'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The maximum number of results to return in a single call.
+listMeetings_maxResults :: Lens.Lens' ListMeetings (Prelude.Maybe Prelude.Natural)
+listMeetings_maxResults = Lens.lens (\ListMeetings' {maxResults} -> maxResults) (\s@ListMeetings' {} a -> s {maxResults = a} :: ListMeetings)
+
+-- | The token to use to retrieve the next page of results.
+listMeetings_nextToken :: Lens.Lens' ListMeetings (Prelude.Maybe Prelude.Text)
+listMeetings_nextToken = Lens.lens (\ListMeetings' {nextToken} -> nextToken) (\s@ListMeetings' {} a -> s {nextToken = a} :: ListMeetings)
+
+instance Core.AWSRequest ListMeetings where
+  type AWSResponse ListMeetings = ListMeetingsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListMeetingsResponse'
+            Prelude.<$> (x Data..?> "Meetings" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListMeetings where
+  hashWithSalt _salt ListMeetings' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListMeetings where
+  rnf ListMeetings' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListMeetings where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ListMeetings where
+  toPath = Prelude.const "/meetings"
+
+instance Data.ToQuery ListMeetings where
+  toQuery ListMeetings' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListMeetingsResponse' smart constructor.
+data ListMeetingsResponse = ListMeetingsResponse'
+  { -- | The Amazon Chime SDK meeting information.
+    meetings :: Prelude.Maybe [Meeting],
+    -- | The token to use to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListMeetingsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'meetings', 'listMeetingsResponse_meetings' - The Amazon Chime SDK meeting information.
+--
+-- 'nextToken', 'listMeetingsResponse_nextToken' - The token to use to retrieve the next page of results.
+--
+-- 'httpStatus', 'listMeetingsResponse_httpStatus' - The response's http status code.
+newListMeetingsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListMeetingsResponse
+newListMeetingsResponse pHttpStatus_ =
+  ListMeetingsResponse'
+    { meetings = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Chime SDK meeting information.
+listMeetingsResponse_meetings :: Lens.Lens' ListMeetingsResponse (Prelude.Maybe [Meeting])
+listMeetingsResponse_meetings = Lens.lens (\ListMeetingsResponse' {meetings} -> meetings) (\s@ListMeetingsResponse' {} a -> s {meetings = a} :: ListMeetingsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token to use to retrieve the next page of results.
+listMeetingsResponse_nextToken :: Lens.Lens' ListMeetingsResponse (Prelude.Maybe Prelude.Text)
+listMeetingsResponse_nextToken = Lens.lens (\ListMeetingsResponse' {nextToken} -> nextToken) (\s@ListMeetingsResponse' {} a -> s {nextToken = a} :: ListMeetingsResponse)
+
+-- | The response's http status code.
+listMeetingsResponse_httpStatus :: Lens.Lens' ListMeetingsResponse Prelude.Int
+listMeetingsResponse_httpStatus = Lens.lens (\ListMeetingsResponse' {httpStatus} -> httpStatus) (\s@ListMeetingsResponse' {} a -> s {httpStatus = a} :: ListMeetingsResponse)
+
+instance Prelude.NFData ListMeetingsResponse where
+  rnf ListMeetingsResponse' {..} =
+    Prelude.rnf meetings
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/ListPhoneNumberOrders.hs b/gen/Amazonka/Chime/ListPhoneNumberOrders.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ListPhoneNumberOrders.hs
@@ -0,0 +1,184 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ListPhoneNumberOrders
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the phone number orders for the administrator\'s Amazon Chime
+-- account.
+module Amazonka.Chime.ListPhoneNumberOrders
+  ( -- * Creating a Request
+    ListPhoneNumberOrders (..),
+    newListPhoneNumberOrders,
+
+    -- * Request Lenses
+    listPhoneNumberOrders_maxResults,
+    listPhoneNumberOrders_nextToken,
+
+    -- * Destructuring the Response
+    ListPhoneNumberOrdersResponse (..),
+    newListPhoneNumberOrdersResponse,
+
+    -- * Response Lenses
+    listPhoneNumberOrdersResponse_nextToken,
+    listPhoneNumberOrdersResponse_phoneNumberOrders,
+    listPhoneNumberOrdersResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListPhoneNumberOrders' smart constructor.
+data ListPhoneNumberOrders = ListPhoneNumberOrders'
+  { -- | The maximum number of results to return in a single call.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token to use to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListPhoneNumberOrders' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listPhoneNumberOrders_maxResults' - The maximum number of results to return in a single call.
+--
+-- 'nextToken', 'listPhoneNumberOrders_nextToken' - The token to use to retrieve the next page of results.
+newListPhoneNumberOrders ::
+  ListPhoneNumberOrders
+newListPhoneNumberOrders =
+  ListPhoneNumberOrders'
+    { maxResults =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The maximum number of results to return in a single call.
+listPhoneNumberOrders_maxResults :: Lens.Lens' ListPhoneNumberOrders (Prelude.Maybe Prelude.Natural)
+listPhoneNumberOrders_maxResults = Lens.lens (\ListPhoneNumberOrders' {maxResults} -> maxResults) (\s@ListPhoneNumberOrders' {} a -> s {maxResults = a} :: ListPhoneNumberOrders)
+
+-- | The token to use to retrieve the next page of results.
+listPhoneNumberOrders_nextToken :: Lens.Lens' ListPhoneNumberOrders (Prelude.Maybe Prelude.Text)
+listPhoneNumberOrders_nextToken = Lens.lens (\ListPhoneNumberOrders' {nextToken} -> nextToken) (\s@ListPhoneNumberOrders' {} a -> s {nextToken = a} :: ListPhoneNumberOrders)
+
+instance Core.AWSRequest ListPhoneNumberOrders where
+  type
+    AWSResponse ListPhoneNumberOrders =
+      ListPhoneNumberOrdersResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListPhoneNumberOrdersResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "PhoneNumberOrders"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListPhoneNumberOrders where
+  hashWithSalt _salt ListPhoneNumberOrders' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListPhoneNumberOrders where
+  rnf ListPhoneNumberOrders' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListPhoneNumberOrders where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ListPhoneNumberOrders where
+  toPath = Prelude.const "/phone-number-orders"
+
+instance Data.ToQuery ListPhoneNumberOrders where
+  toQuery ListPhoneNumberOrders' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListPhoneNumberOrdersResponse' smart constructor.
+data ListPhoneNumberOrdersResponse = ListPhoneNumberOrdersResponse'
+  { -- | The token to use to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The phone number order details.
+    phoneNumberOrders :: Prelude.Maybe [PhoneNumberOrder],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListPhoneNumberOrdersResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'nextToken', 'listPhoneNumberOrdersResponse_nextToken' - The token to use to retrieve the next page of results.
+--
+-- 'phoneNumberOrders', 'listPhoneNumberOrdersResponse_phoneNumberOrders' - The phone number order details.
+--
+-- 'httpStatus', 'listPhoneNumberOrdersResponse_httpStatus' - The response's http status code.
+newListPhoneNumberOrdersResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListPhoneNumberOrdersResponse
+newListPhoneNumberOrdersResponse pHttpStatus_ =
+  ListPhoneNumberOrdersResponse'
+    { nextToken =
+        Prelude.Nothing,
+      phoneNumberOrders = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The token to use to retrieve the next page of results.
+listPhoneNumberOrdersResponse_nextToken :: Lens.Lens' ListPhoneNumberOrdersResponse (Prelude.Maybe Prelude.Text)
+listPhoneNumberOrdersResponse_nextToken = Lens.lens (\ListPhoneNumberOrdersResponse' {nextToken} -> nextToken) (\s@ListPhoneNumberOrdersResponse' {} a -> s {nextToken = a} :: ListPhoneNumberOrdersResponse)
+
+-- | The phone number order details.
+listPhoneNumberOrdersResponse_phoneNumberOrders :: Lens.Lens' ListPhoneNumberOrdersResponse (Prelude.Maybe [PhoneNumberOrder])
+listPhoneNumberOrdersResponse_phoneNumberOrders = Lens.lens (\ListPhoneNumberOrdersResponse' {phoneNumberOrders} -> phoneNumberOrders) (\s@ListPhoneNumberOrdersResponse' {} a -> s {phoneNumberOrders = a} :: ListPhoneNumberOrdersResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listPhoneNumberOrdersResponse_httpStatus :: Lens.Lens' ListPhoneNumberOrdersResponse Prelude.Int
+listPhoneNumberOrdersResponse_httpStatus = Lens.lens (\ListPhoneNumberOrdersResponse' {httpStatus} -> httpStatus) (\s@ListPhoneNumberOrdersResponse' {} a -> s {httpStatus = a} :: ListPhoneNumberOrdersResponse)
+
+instance Prelude.NFData ListPhoneNumberOrdersResponse where
+  rnf ListPhoneNumberOrdersResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf phoneNumberOrders
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/ListPhoneNumbers.hs b/gen/Amazonka/Chime/ListPhoneNumbers.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ListPhoneNumbers.hs
@@ -0,0 +1,233 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ListPhoneNumbers
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the phone numbers for the specified Amazon Chime account, Amazon
+-- Chime user, Amazon Chime Voice Connector, or Amazon Chime Voice
+-- Connector group.
+module Amazonka.Chime.ListPhoneNumbers
+  ( -- * Creating a Request
+    ListPhoneNumbers (..),
+    newListPhoneNumbers,
+
+    -- * Request Lenses
+    listPhoneNumbers_filterName,
+    listPhoneNumbers_filterValue,
+    listPhoneNumbers_maxResults,
+    listPhoneNumbers_nextToken,
+    listPhoneNumbers_productType,
+    listPhoneNumbers_status,
+
+    -- * Destructuring the Response
+    ListPhoneNumbersResponse (..),
+    newListPhoneNumbersResponse,
+
+    -- * Response Lenses
+    listPhoneNumbersResponse_nextToken,
+    listPhoneNumbersResponse_phoneNumbers,
+    listPhoneNumbersResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListPhoneNumbers' smart constructor.
+data ListPhoneNumbers = ListPhoneNumbers'
+  { -- | The filter to use to limit the number of results.
+    filterName :: Prelude.Maybe PhoneNumberAssociationName,
+    -- | The value to use for the filter.
+    filterValue :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of results to return in a single call.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token to use to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The phone number product type.
+    productType :: Prelude.Maybe PhoneNumberProductType,
+    -- | The phone number status.
+    status :: Prelude.Maybe PhoneNumberStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListPhoneNumbers' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'filterName', 'listPhoneNumbers_filterName' - The filter to use to limit the number of results.
+--
+-- 'filterValue', 'listPhoneNumbers_filterValue' - The value to use for the filter.
+--
+-- 'maxResults', 'listPhoneNumbers_maxResults' - The maximum number of results to return in a single call.
+--
+-- 'nextToken', 'listPhoneNumbers_nextToken' - The token to use to retrieve the next page of results.
+--
+-- 'productType', 'listPhoneNumbers_productType' - The phone number product type.
+--
+-- 'status', 'listPhoneNumbers_status' - The phone number status.
+newListPhoneNumbers ::
+  ListPhoneNumbers
+newListPhoneNumbers =
+  ListPhoneNumbers'
+    { filterName = Prelude.Nothing,
+      filterValue = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      productType = Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+-- | The filter to use to limit the number of results.
+listPhoneNumbers_filterName :: Lens.Lens' ListPhoneNumbers (Prelude.Maybe PhoneNumberAssociationName)
+listPhoneNumbers_filterName = Lens.lens (\ListPhoneNumbers' {filterName} -> filterName) (\s@ListPhoneNumbers' {} a -> s {filterName = a} :: ListPhoneNumbers)
+
+-- | The value to use for the filter.
+listPhoneNumbers_filterValue :: Lens.Lens' ListPhoneNumbers (Prelude.Maybe Prelude.Text)
+listPhoneNumbers_filterValue = Lens.lens (\ListPhoneNumbers' {filterValue} -> filterValue) (\s@ListPhoneNumbers' {} a -> s {filterValue = a} :: ListPhoneNumbers)
+
+-- | The maximum number of results to return in a single call.
+listPhoneNumbers_maxResults :: Lens.Lens' ListPhoneNumbers (Prelude.Maybe Prelude.Natural)
+listPhoneNumbers_maxResults = Lens.lens (\ListPhoneNumbers' {maxResults} -> maxResults) (\s@ListPhoneNumbers' {} a -> s {maxResults = a} :: ListPhoneNumbers)
+
+-- | The token to use to retrieve the next page of results.
+listPhoneNumbers_nextToken :: Lens.Lens' ListPhoneNumbers (Prelude.Maybe Prelude.Text)
+listPhoneNumbers_nextToken = Lens.lens (\ListPhoneNumbers' {nextToken} -> nextToken) (\s@ListPhoneNumbers' {} a -> s {nextToken = a} :: ListPhoneNumbers)
+
+-- | The phone number product type.
+listPhoneNumbers_productType :: Lens.Lens' ListPhoneNumbers (Prelude.Maybe PhoneNumberProductType)
+listPhoneNumbers_productType = Lens.lens (\ListPhoneNumbers' {productType} -> productType) (\s@ListPhoneNumbers' {} a -> s {productType = a} :: ListPhoneNumbers)
+
+-- | The phone number status.
+listPhoneNumbers_status :: Lens.Lens' ListPhoneNumbers (Prelude.Maybe PhoneNumberStatus)
+listPhoneNumbers_status = Lens.lens (\ListPhoneNumbers' {status} -> status) (\s@ListPhoneNumbers' {} a -> s {status = a} :: ListPhoneNumbers)
+
+instance Core.AWSRequest ListPhoneNumbers where
+  type
+    AWSResponse ListPhoneNumbers =
+      ListPhoneNumbersResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListPhoneNumbersResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "PhoneNumbers" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListPhoneNumbers where
+  hashWithSalt _salt ListPhoneNumbers' {..} =
+    _salt
+      `Prelude.hashWithSalt` filterName
+      `Prelude.hashWithSalt` filterValue
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` productType
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData ListPhoneNumbers where
+  rnf ListPhoneNumbers' {..} =
+    Prelude.rnf filterName
+      `Prelude.seq` Prelude.rnf filterValue
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf productType
+      `Prelude.seq` Prelude.rnf status
+
+instance Data.ToHeaders ListPhoneNumbers where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ListPhoneNumbers where
+  toPath = Prelude.const "/phone-numbers"
+
+instance Data.ToQuery ListPhoneNumbers where
+  toQuery ListPhoneNumbers' {..} =
+    Prelude.mconcat
+      [ "filter-name" Data.=: filterName,
+        "filter-value" Data.=: filterValue,
+        "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken,
+        "product-type" Data.=: productType,
+        "status" Data.=: status
+      ]
+
+-- | /See:/ 'newListPhoneNumbersResponse' smart constructor.
+data ListPhoneNumbersResponse = ListPhoneNumbersResponse'
+  { -- | The token to use to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The phone number details.
+    phoneNumbers :: Prelude.Maybe [PhoneNumber],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListPhoneNumbersResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'nextToken', 'listPhoneNumbersResponse_nextToken' - The token to use to retrieve the next page of results.
+--
+-- 'phoneNumbers', 'listPhoneNumbersResponse_phoneNumbers' - The phone number details.
+--
+-- 'httpStatus', 'listPhoneNumbersResponse_httpStatus' - The response's http status code.
+newListPhoneNumbersResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListPhoneNumbersResponse
+newListPhoneNumbersResponse pHttpStatus_ =
+  ListPhoneNumbersResponse'
+    { nextToken =
+        Prelude.Nothing,
+      phoneNumbers = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The token to use to retrieve the next page of results.
+listPhoneNumbersResponse_nextToken :: Lens.Lens' ListPhoneNumbersResponse (Prelude.Maybe Prelude.Text)
+listPhoneNumbersResponse_nextToken = Lens.lens (\ListPhoneNumbersResponse' {nextToken} -> nextToken) (\s@ListPhoneNumbersResponse' {} a -> s {nextToken = a} :: ListPhoneNumbersResponse)
+
+-- | The phone number details.
+listPhoneNumbersResponse_phoneNumbers :: Lens.Lens' ListPhoneNumbersResponse (Prelude.Maybe [PhoneNumber])
+listPhoneNumbersResponse_phoneNumbers = Lens.lens (\ListPhoneNumbersResponse' {phoneNumbers} -> phoneNumbers) (\s@ListPhoneNumbersResponse' {} a -> s {phoneNumbers = a} :: ListPhoneNumbersResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listPhoneNumbersResponse_httpStatus :: Lens.Lens' ListPhoneNumbersResponse Prelude.Int
+listPhoneNumbersResponse_httpStatus = Lens.lens (\ListPhoneNumbersResponse' {httpStatus} -> httpStatus) (\s@ListPhoneNumbersResponse' {} a -> s {httpStatus = a} :: ListPhoneNumbersResponse)
+
+instance Prelude.NFData ListPhoneNumbersResponse where
+  rnf ListPhoneNumbersResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf phoneNumbers
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/ListProxySessions.hs b/gen/Amazonka/Chime/ListProxySessions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ListProxySessions.hs
@@ -0,0 +1,211 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ListProxySessions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the proxy sessions for the specified Amazon Chime Voice Connector.
+module Amazonka.Chime.ListProxySessions
+  ( -- * Creating a Request
+    ListProxySessions (..),
+    newListProxySessions,
+
+    -- * Request Lenses
+    listProxySessions_maxResults,
+    listProxySessions_nextToken,
+    listProxySessions_status,
+    listProxySessions_voiceConnectorId,
+
+    -- * Destructuring the Response
+    ListProxySessionsResponse (..),
+    newListProxySessionsResponse,
+
+    -- * Response Lenses
+    listProxySessionsResponse_nextToken,
+    listProxySessionsResponse_proxySessions,
+    listProxySessionsResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListProxySessions' smart constructor.
+data ListProxySessions = ListProxySessions'
+  { -- | The maximum number of results to return in a single call.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token to use to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The proxy session status.
+    status :: Prelude.Maybe ProxySessionStatus,
+    -- | The Amazon Chime voice connector ID.
+    voiceConnectorId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListProxySessions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listProxySessions_maxResults' - The maximum number of results to return in a single call.
+--
+-- 'nextToken', 'listProxySessions_nextToken' - The token to use to retrieve the next page of results.
+--
+-- 'status', 'listProxySessions_status' - The proxy session status.
+--
+-- 'voiceConnectorId', 'listProxySessions_voiceConnectorId' - The Amazon Chime voice connector ID.
+newListProxySessions ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  ListProxySessions
+newListProxySessions pVoiceConnectorId_ =
+  ListProxySessions'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      status = Prelude.Nothing,
+      voiceConnectorId = pVoiceConnectorId_
+    }
+
+-- | The maximum number of results to return in a single call.
+listProxySessions_maxResults :: Lens.Lens' ListProxySessions (Prelude.Maybe Prelude.Natural)
+listProxySessions_maxResults = Lens.lens (\ListProxySessions' {maxResults} -> maxResults) (\s@ListProxySessions' {} a -> s {maxResults = a} :: ListProxySessions)
+
+-- | The token to use to retrieve the next page of results.
+listProxySessions_nextToken :: Lens.Lens' ListProxySessions (Prelude.Maybe Prelude.Text)
+listProxySessions_nextToken = Lens.lens (\ListProxySessions' {nextToken} -> nextToken) (\s@ListProxySessions' {} a -> s {nextToken = a} :: ListProxySessions)
+
+-- | The proxy session status.
+listProxySessions_status :: Lens.Lens' ListProxySessions (Prelude.Maybe ProxySessionStatus)
+listProxySessions_status = Lens.lens (\ListProxySessions' {status} -> status) (\s@ListProxySessions' {} a -> s {status = a} :: ListProxySessions)
+
+-- | The Amazon Chime voice connector ID.
+listProxySessions_voiceConnectorId :: Lens.Lens' ListProxySessions Prelude.Text
+listProxySessions_voiceConnectorId = Lens.lens (\ListProxySessions' {voiceConnectorId} -> voiceConnectorId) (\s@ListProxySessions' {} a -> s {voiceConnectorId = a} :: ListProxySessions)
+
+instance Core.AWSRequest ListProxySessions where
+  type
+    AWSResponse ListProxySessions =
+      ListProxySessionsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListProxySessionsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "ProxySessions" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListProxySessions where
+  hashWithSalt _salt ListProxySessions' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` voiceConnectorId
+
+instance Prelude.NFData ListProxySessions where
+  rnf ListProxySessions' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf voiceConnectorId
+
+instance Data.ToHeaders ListProxySessions where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ListProxySessions where
+  toPath ListProxySessions' {..} =
+    Prelude.mconcat
+      [ "/voice-connectors/",
+        Data.toBS voiceConnectorId,
+        "/proxy-sessions"
+      ]
+
+instance Data.ToQuery ListProxySessions where
+  toQuery ListProxySessions' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken,
+        "status" Data.=: status
+      ]
+
+-- | /See:/ 'newListProxySessionsResponse' smart constructor.
+data ListProxySessionsResponse = ListProxySessionsResponse'
+  { -- | The token to use to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The proxy session details.
+    proxySessions :: Prelude.Maybe [ProxySession],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListProxySessionsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'nextToken', 'listProxySessionsResponse_nextToken' - The token to use to retrieve the next page of results.
+--
+-- 'proxySessions', 'listProxySessionsResponse_proxySessions' - The proxy session details.
+--
+-- 'httpStatus', 'listProxySessionsResponse_httpStatus' - The response's http status code.
+newListProxySessionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListProxySessionsResponse
+newListProxySessionsResponse pHttpStatus_ =
+  ListProxySessionsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      proxySessions = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The token to use to retrieve the next page of results.
+listProxySessionsResponse_nextToken :: Lens.Lens' ListProxySessionsResponse (Prelude.Maybe Prelude.Text)
+listProxySessionsResponse_nextToken = Lens.lens (\ListProxySessionsResponse' {nextToken} -> nextToken) (\s@ListProxySessionsResponse' {} a -> s {nextToken = a} :: ListProxySessionsResponse)
+
+-- | The proxy session details.
+listProxySessionsResponse_proxySessions :: Lens.Lens' ListProxySessionsResponse (Prelude.Maybe [ProxySession])
+listProxySessionsResponse_proxySessions = Lens.lens (\ListProxySessionsResponse' {proxySessions} -> proxySessions) (\s@ListProxySessionsResponse' {} a -> s {proxySessions = a} :: ListProxySessionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listProxySessionsResponse_httpStatus :: Lens.Lens' ListProxySessionsResponse Prelude.Int
+listProxySessionsResponse_httpStatus = Lens.lens (\ListProxySessionsResponse' {httpStatus} -> httpStatus) (\s@ListProxySessionsResponse' {} a -> s {httpStatus = a} :: ListProxySessionsResponse)
+
+instance Prelude.NFData ListProxySessionsResponse where
+  rnf ListProxySessionsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf proxySessions
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/ListRoomMemberships.hs b/gen/Amazonka/Chime/ListRoomMemberships.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ListRoomMemberships.hs
@@ -0,0 +1,219 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ListRoomMemberships
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the membership details for the specified room in an Amazon Chime
+-- Enterprise account, such as the members\' IDs, email addresses, and
+-- names.
+module Amazonka.Chime.ListRoomMemberships
+  ( -- * Creating a Request
+    ListRoomMemberships (..),
+    newListRoomMemberships,
+
+    -- * Request Lenses
+    listRoomMemberships_maxResults,
+    listRoomMemberships_nextToken,
+    listRoomMemberships_accountId,
+    listRoomMemberships_roomId,
+
+    -- * Destructuring the Response
+    ListRoomMembershipsResponse (..),
+    newListRoomMembershipsResponse,
+
+    -- * Response Lenses
+    listRoomMembershipsResponse_nextToken,
+    listRoomMembershipsResponse_roomMemberships,
+    listRoomMembershipsResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListRoomMemberships' smart constructor.
+data ListRoomMemberships = ListRoomMemberships'
+  { -- | The maximum number of results to return in a single call.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token to use to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The room ID.
+    roomId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListRoomMemberships' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listRoomMemberships_maxResults' - The maximum number of results to return in a single call.
+--
+-- 'nextToken', 'listRoomMemberships_nextToken' - The token to use to retrieve the next page of results.
+--
+-- 'accountId', 'listRoomMemberships_accountId' - The Amazon Chime account ID.
+--
+-- 'roomId', 'listRoomMemberships_roomId' - The room ID.
+newListRoomMemberships ::
+  -- | 'accountId'
+  Prelude.Text ->
+  -- | 'roomId'
+  Prelude.Text ->
+  ListRoomMemberships
+newListRoomMemberships pAccountId_ pRoomId_ =
+  ListRoomMemberships'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      accountId = pAccountId_,
+      roomId = pRoomId_
+    }
+
+-- | The maximum number of results to return in a single call.
+listRoomMemberships_maxResults :: Lens.Lens' ListRoomMemberships (Prelude.Maybe Prelude.Natural)
+listRoomMemberships_maxResults = Lens.lens (\ListRoomMemberships' {maxResults} -> maxResults) (\s@ListRoomMemberships' {} a -> s {maxResults = a} :: ListRoomMemberships)
+
+-- | The token to use to retrieve the next page of results.
+listRoomMemberships_nextToken :: Lens.Lens' ListRoomMemberships (Prelude.Maybe Prelude.Text)
+listRoomMemberships_nextToken = Lens.lens (\ListRoomMemberships' {nextToken} -> nextToken) (\s@ListRoomMemberships' {} a -> s {nextToken = a} :: ListRoomMemberships)
+
+-- | The Amazon Chime account ID.
+listRoomMemberships_accountId :: Lens.Lens' ListRoomMemberships Prelude.Text
+listRoomMemberships_accountId = Lens.lens (\ListRoomMemberships' {accountId} -> accountId) (\s@ListRoomMemberships' {} a -> s {accountId = a} :: ListRoomMemberships)
+
+-- | The room ID.
+listRoomMemberships_roomId :: Lens.Lens' ListRoomMemberships Prelude.Text
+listRoomMemberships_roomId = Lens.lens (\ListRoomMemberships' {roomId} -> roomId) (\s@ListRoomMemberships' {} a -> s {roomId = a} :: ListRoomMemberships)
+
+instance Core.AWSRequest ListRoomMemberships where
+  type
+    AWSResponse ListRoomMemberships =
+      ListRoomMembershipsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListRoomMembershipsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "RoomMemberships"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListRoomMemberships where
+  hashWithSalt _salt ListRoomMemberships' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` roomId
+
+instance Prelude.NFData ListRoomMemberships where
+  rnf ListRoomMemberships' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf roomId
+
+instance Data.ToHeaders ListRoomMemberships where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ListRoomMemberships where
+  toPath ListRoomMemberships' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS accountId,
+        "/rooms/",
+        Data.toBS roomId,
+        "/memberships"
+      ]
+
+instance Data.ToQuery ListRoomMemberships where
+  toQuery ListRoomMemberships' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListRoomMembershipsResponse' smart constructor.
+data ListRoomMembershipsResponse = ListRoomMembershipsResponse'
+  { -- | The token to use to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The room membership details.
+    roomMemberships :: Prelude.Maybe [RoomMembership],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListRoomMembershipsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'nextToken', 'listRoomMembershipsResponse_nextToken' - The token to use to retrieve the next page of results.
+--
+-- 'roomMemberships', 'listRoomMembershipsResponse_roomMemberships' - The room membership details.
+--
+-- 'httpStatus', 'listRoomMembershipsResponse_httpStatus' - The response's http status code.
+newListRoomMembershipsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListRoomMembershipsResponse
+newListRoomMembershipsResponse pHttpStatus_ =
+  ListRoomMembershipsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      roomMemberships = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The token to use to retrieve the next page of results.
+listRoomMembershipsResponse_nextToken :: Lens.Lens' ListRoomMembershipsResponse (Prelude.Maybe Prelude.Text)
+listRoomMembershipsResponse_nextToken = Lens.lens (\ListRoomMembershipsResponse' {nextToken} -> nextToken) (\s@ListRoomMembershipsResponse' {} a -> s {nextToken = a} :: ListRoomMembershipsResponse)
+
+-- | The room membership details.
+listRoomMembershipsResponse_roomMemberships :: Lens.Lens' ListRoomMembershipsResponse (Prelude.Maybe [RoomMembership])
+listRoomMembershipsResponse_roomMemberships = Lens.lens (\ListRoomMembershipsResponse' {roomMemberships} -> roomMemberships) (\s@ListRoomMembershipsResponse' {} a -> s {roomMemberships = a} :: ListRoomMembershipsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listRoomMembershipsResponse_httpStatus :: Lens.Lens' ListRoomMembershipsResponse Prelude.Int
+listRoomMembershipsResponse_httpStatus = Lens.lens (\ListRoomMembershipsResponse' {httpStatus} -> httpStatus) (\s@ListRoomMembershipsResponse' {} a -> s {httpStatus = a} :: ListRoomMembershipsResponse)
+
+instance Prelude.NFData ListRoomMembershipsResponse where
+  rnf ListRoomMembershipsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf roomMemberships
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/ListRooms.hs b/gen/Amazonka/Chime/ListRooms.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ListRooms.hs
@@ -0,0 +1,207 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ListRooms
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the room details for the specified Amazon Chime Enterprise
+-- account. Optionally, filter the results by a member ID (user ID or bot
+-- ID) to see a list of rooms that the member belongs to.
+module Amazonka.Chime.ListRooms
+  ( -- * Creating a Request
+    ListRooms (..),
+    newListRooms,
+
+    -- * Request Lenses
+    listRooms_maxResults,
+    listRooms_memberId,
+    listRooms_nextToken,
+    listRooms_accountId,
+
+    -- * Destructuring the Response
+    ListRoomsResponse (..),
+    newListRoomsResponse,
+
+    -- * Response Lenses
+    listRoomsResponse_nextToken,
+    listRoomsResponse_rooms,
+    listRoomsResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListRooms' smart constructor.
+data ListRooms = ListRooms'
+  { -- | The maximum number of results to return in a single call.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The member ID (user ID or bot ID).
+    memberId :: Prelude.Maybe Prelude.Text,
+    -- | The token to use to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListRooms' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listRooms_maxResults' - The maximum number of results to return in a single call.
+--
+-- 'memberId', 'listRooms_memberId' - The member ID (user ID or bot ID).
+--
+-- 'nextToken', 'listRooms_nextToken' - The token to use to retrieve the next page of results.
+--
+-- 'accountId', 'listRooms_accountId' - The Amazon Chime account ID.
+newListRooms ::
+  -- | 'accountId'
+  Prelude.Text ->
+  ListRooms
+newListRooms pAccountId_ =
+  ListRooms'
+    { maxResults = Prelude.Nothing,
+      memberId = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      accountId = pAccountId_
+    }
+
+-- | The maximum number of results to return in a single call.
+listRooms_maxResults :: Lens.Lens' ListRooms (Prelude.Maybe Prelude.Natural)
+listRooms_maxResults = Lens.lens (\ListRooms' {maxResults} -> maxResults) (\s@ListRooms' {} a -> s {maxResults = a} :: ListRooms)
+
+-- | The member ID (user ID or bot ID).
+listRooms_memberId :: Lens.Lens' ListRooms (Prelude.Maybe Prelude.Text)
+listRooms_memberId = Lens.lens (\ListRooms' {memberId} -> memberId) (\s@ListRooms' {} a -> s {memberId = a} :: ListRooms)
+
+-- | The token to use to retrieve the next page of results.
+listRooms_nextToken :: Lens.Lens' ListRooms (Prelude.Maybe Prelude.Text)
+listRooms_nextToken = Lens.lens (\ListRooms' {nextToken} -> nextToken) (\s@ListRooms' {} a -> s {nextToken = a} :: ListRooms)
+
+-- | The Amazon Chime account ID.
+listRooms_accountId :: Lens.Lens' ListRooms Prelude.Text
+listRooms_accountId = Lens.lens (\ListRooms' {accountId} -> accountId) (\s@ListRooms' {} a -> s {accountId = a} :: ListRooms)
+
+instance Core.AWSRequest ListRooms where
+  type AWSResponse ListRooms = ListRoomsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListRoomsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "Rooms" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListRooms where
+  hashWithSalt _salt ListRooms' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` memberId
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` accountId
+
+instance Prelude.NFData ListRooms where
+  rnf ListRooms' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf memberId
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf accountId
+
+instance Data.ToHeaders ListRooms where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ListRooms where
+  toPath ListRooms' {..} =
+    Prelude.mconcat
+      ["/accounts/", Data.toBS accountId, "/rooms"]
+
+instance Data.ToQuery ListRooms where
+  toQuery ListRooms' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "member-id" Data.=: memberId,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListRoomsResponse' smart constructor.
+data ListRoomsResponse = ListRoomsResponse'
+  { -- | The token to use to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The room details.
+    rooms :: Prelude.Maybe [Room],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListRoomsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'nextToken', 'listRoomsResponse_nextToken' - The token to use to retrieve the next page of results.
+--
+-- 'rooms', 'listRoomsResponse_rooms' - The room details.
+--
+-- 'httpStatus', 'listRoomsResponse_httpStatus' - The response's http status code.
+newListRoomsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListRoomsResponse
+newListRoomsResponse pHttpStatus_ =
+  ListRoomsResponse'
+    { nextToken = Prelude.Nothing,
+      rooms = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The token to use to retrieve the next page of results.
+listRoomsResponse_nextToken :: Lens.Lens' ListRoomsResponse (Prelude.Maybe Prelude.Text)
+listRoomsResponse_nextToken = Lens.lens (\ListRoomsResponse' {nextToken} -> nextToken) (\s@ListRoomsResponse' {} a -> s {nextToken = a} :: ListRoomsResponse)
+
+-- | The room details.
+listRoomsResponse_rooms :: Lens.Lens' ListRoomsResponse (Prelude.Maybe [Room])
+listRoomsResponse_rooms = Lens.lens (\ListRoomsResponse' {rooms} -> rooms) (\s@ListRoomsResponse' {} a -> s {rooms = a} :: ListRoomsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listRoomsResponse_httpStatus :: Lens.Lens' ListRoomsResponse Prelude.Int
+listRoomsResponse_httpStatus = Lens.lens (\ListRoomsResponse' {httpStatus} -> httpStatus) (\s@ListRoomsResponse' {} a -> s {httpStatus = a} :: ListRoomsResponse)
+
+instance Prelude.NFData ListRoomsResponse where
+  rnf ListRoomsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf rooms
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/ListSipMediaApplications.hs b/gen/Amazonka/Chime/ListSipMediaApplications.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ListSipMediaApplications.hs
@@ -0,0 +1,189 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ListSipMediaApplications
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the SIP media applications under the administrator\'s AWS account.
+module Amazonka.Chime.ListSipMediaApplications
+  ( -- * Creating a Request
+    ListSipMediaApplications (..),
+    newListSipMediaApplications,
+
+    -- * Request Lenses
+    listSipMediaApplications_maxResults,
+    listSipMediaApplications_nextToken,
+
+    -- * Destructuring the Response
+    ListSipMediaApplicationsResponse (..),
+    newListSipMediaApplicationsResponse,
+
+    -- * Response Lenses
+    listSipMediaApplicationsResponse_nextToken,
+    listSipMediaApplicationsResponse_sipMediaApplications,
+    listSipMediaApplicationsResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListSipMediaApplications' smart constructor.
+data ListSipMediaApplications = ListSipMediaApplications'
+  { -- | The maximum number of results to return in a single call. Defaults to
+    -- 100.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token to use to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListSipMediaApplications' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listSipMediaApplications_maxResults' - The maximum number of results to return in a single call. Defaults to
+-- 100.
+--
+-- 'nextToken', 'listSipMediaApplications_nextToken' - The token to use to retrieve the next page of results.
+newListSipMediaApplications ::
+  ListSipMediaApplications
+newListSipMediaApplications =
+  ListSipMediaApplications'
+    { maxResults =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The maximum number of results to return in a single call. Defaults to
+-- 100.
+listSipMediaApplications_maxResults :: Lens.Lens' ListSipMediaApplications (Prelude.Maybe Prelude.Natural)
+listSipMediaApplications_maxResults = Lens.lens (\ListSipMediaApplications' {maxResults} -> maxResults) (\s@ListSipMediaApplications' {} a -> s {maxResults = a} :: ListSipMediaApplications)
+
+-- | The token to use to retrieve the next page of results.
+listSipMediaApplications_nextToken :: Lens.Lens' ListSipMediaApplications (Prelude.Maybe Prelude.Text)
+listSipMediaApplications_nextToken = Lens.lens (\ListSipMediaApplications' {nextToken} -> nextToken) (\s@ListSipMediaApplications' {} a -> s {nextToken = a} :: ListSipMediaApplications)
+
+instance Core.AWSRequest ListSipMediaApplications where
+  type
+    AWSResponse ListSipMediaApplications =
+      ListSipMediaApplicationsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListSipMediaApplicationsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "SipMediaApplications"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListSipMediaApplications where
+  hashWithSalt _salt ListSipMediaApplications' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListSipMediaApplications where
+  rnf ListSipMediaApplications' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListSipMediaApplications where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ListSipMediaApplications where
+  toPath = Prelude.const "/sip-media-applications"
+
+instance Data.ToQuery ListSipMediaApplications where
+  toQuery ListSipMediaApplications' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListSipMediaApplicationsResponse' smart constructor.
+data ListSipMediaApplicationsResponse = ListSipMediaApplicationsResponse'
+  { -- | The token to use to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | List of SIP media applications and application details.
+    sipMediaApplications :: Prelude.Maybe [SipMediaApplication],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListSipMediaApplicationsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'nextToken', 'listSipMediaApplicationsResponse_nextToken' - The token to use to retrieve the next page of results.
+--
+-- 'sipMediaApplications', 'listSipMediaApplicationsResponse_sipMediaApplications' - List of SIP media applications and application details.
+--
+-- 'httpStatus', 'listSipMediaApplicationsResponse_httpStatus' - The response's http status code.
+newListSipMediaApplicationsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListSipMediaApplicationsResponse
+newListSipMediaApplicationsResponse pHttpStatus_ =
+  ListSipMediaApplicationsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      sipMediaApplications = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The token to use to retrieve the next page of results.
+listSipMediaApplicationsResponse_nextToken :: Lens.Lens' ListSipMediaApplicationsResponse (Prelude.Maybe Prelude.Text)
+listSipMediaApplicationsResponse_nextToken = Lens.lens (\ListSipMediaApplicationsResponse' {nextToken} -> nextToken) (\s@ListSipMediaApplicationsResponse' {} a -> s {nextToken = a} :: ListSipMediaApplicationsResponse)
+
+-- | List of SIP media applications and application details.
+listSipMediaApplicationsResponse_sipMediaApplications :: Lens.Lens' ListSipMediaApplicationsResponse (Prelude.Maybe [SipMediaApplication])
+listSipMediaApplicationsResponse_sipMediaApplications = Lens.lens (\ListSipMediaApplicationsResponse' {sipMediaApplications} -> sipMediaApplications) (\s@ListSipMediaApplicationsResponse' {} a -> s {sipMediaApplications = a} :: ListSipMediaApplicationsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listSipMediaApplicationsResponse_httpStatus :: Lens.Lens' ListSipMediaApplicationsResponse Prelude.Int
+listSipMediaApplicationsResponse_httpStatus = Lens.lens (\ListSipMediaApplicationsResponse' {httpStatus} -> httpStatus) (\s@ListSipMediaApplicationsResponse' {} a -> s {httpStatus = a} :: ListSipMediaApplicationsResponse)
+
+instance
+  Prelude.NFData
+    ListSipMediaApplicationsResponse
+  where
+  rnf ListSipMediaApplicationsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sipMediaApplications
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/ListSipRules.hs b/gen/Amazonka/Chime/ListSipRules.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ListSipRules.hs
@@ -0,0 +1,193 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ListSipRules
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the SIP rules under the administrator\'s AWS account.
+module Amazonka.Chime.ListSipRules
+  ( -- * Creating a Request
+    ListSipRules (..),
+    newListSipRules,
+
+    -- * Request Lenses
+    listSipRules_maxResults,
+    listSipRules_nextToken,
+    listSipRules_sipMediaApplicationId,
+
+    -- * Destructuring the Response
+    ListSipRulesResponse (..),
+    newListSipRulesResponse,
+
+    -- * Response Lenses
+    listSipRulesResponse_nextToken,
+    listSipRulesResponse_sipRules,
+    listSipRulesResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListSipRules' smart constructor.
+data ListSipRules = ListSipRules'
+  { -- | The maximum number of results to return in a single call. Defaults to
+    -- 100.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token to use to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The SIP media application ID.
+    sipMediaApplicationId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListSipRules' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listSipRules_maxResults' - The maximum number of results to return in a single call. Defaults to
+-- 100.
+--
+-- 'nextToken', 'listSipRules_nextToken' - The token to use to retrieve the next page of results.
+--
+-- 'sipMediaApplicationId', 'listSipRules_sipMediaApplicationId' - The SIP media application ID.
+newListSipRules ::
+  ListSipRules
+newListSipRules =
+  ListSipRules'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sipMediaApplicationId = Prelude.Nothing
+    }
+
+-- | The maximum number of results to return in a single call. Defaults to
+-- 100.
+listSipRules_maxResults :: Lens.Lens' ListSipRules (Prelude.Maybe Prelude.Natural)
+listSipRules_maxResults = Lens.lens (\ListSipRules' {maxResults} -> maxResults) (\s@ListSipRules' {} a -> s {maxResults = a} :: ListSipRules)
+
+-- | The token to use to retrieve the next page of results.
+listSipRules_nextToken :: Lens.Lens' ListSipRules (Prelude.Maybe Prelude.Text)
+listSipRules_nextToken = Lens.lens (\ListSipRules' {nextToken} -> nextToken) (\s@ListSipRules' {} a -> s {nextToken = a} :: ListSipRules)
+
+-- | The SIP media application ID.
+listSipRules_sipMediaApplicationId :: Lens.Lens' ListSipRules (Prelude.Maybe Prelude.Text)
+listSipRules_sipMediaApplicationId = Lens.lens (\ListSipRules' {sipMediaApplicationId} -> sipMediaApplicationId) (\s@ListSipRules' {} a -> s {sipMediaApplicationId = a} :: ListSipRules)
+
+instance Core.AWSRequest ListSipRules where
+  type AWSResponse ListSipRules = ListSipRulesResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListSipRulesResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "SipRules" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListSipRules where
+  hashWithSalt _salt ListSipRules' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sipMediaApplicationId
+
+instance Prelude.NFData ListSipRules where
+  rnf ListSipRules' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sipMediaApplicationId
+
+instance Data.ToHeaders ListSipRules where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ListSipRules where
+  toPath = Prelude.const "/sip-rules"
+
+instance Data.ToQuery ListSipRules where
+  toQuery ListSipRules' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken,
+        "sip-media-application"
+          Data.=: sipMediaApplicationId
+      ]
+
+-- | /See:/ 'newListSipRulesResponse' smart constructor.
+data ListSipRulesResponse = ListSipRulesResponse'
+  { -- | The token to use to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | List of SIP rules and rule details.
+    sipRules :: Prelude.Maybe [SipRule],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListSipRulesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'nextToken', 'listSipRulesResponse_nextToken' - The token to use to retrieve the next page of results.
+--
+-- 'sipRules', 'listSipRulesResponse_sipRules' - List of SIP rules and rule details.
+--
+-- 'httpStatus', 'listSipRulesResponse_httpStatus' - The response's http status code.
+newListSipRulesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListSipRulesResponse
+newListSipRulesResponse pHttpStatus_ =
+  ListSipRulesResponse'
+    { nextToken = Prelude.Nothing,
+      sipRules = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The token to use to retrieve the next page of results.
+listSipRulesResponse_nextToken :: Lens.Lens' ListSipRulesResponse (Prelude.Maybe Prelude.Text)
+listSipRulesResponse_nextToken = Lens.lens (\ListSipRulesResponse' {nextToken} -> nextToken) (\s@ListSipRulesResponse' {} a -> s {nextToken = a} :: ListSipRulesResponse)
+
+-- | List of SIP rules and rule details.
+listSipRulesResponse_sipRules :: Lens.Lens' ListSipRulesResponse (Prelude.Maybe [SipRule])
+listSipRulesResponse_sipRules = Lens.lens (\ListSipRulesResponse' {sipRules} -> sipRules) (\s@ListSipRulesResponse' {} a -> s {sipRules = a} :: ListSipRulesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listSipRulesResponse_httpStatus :: Lens.Lens' ListSipRulesResponse Prelude.Int
+listSipRulesResponse_httpStatus = Lens.lens (\ListSipRulesResponse' {httpStatus} -> httpStatus) (\s@ListSipRulesResponse' {} a -> s {httpStatus = a} :: ListSipRulesResponse)
+
+instance Prelude.NFData ListSipRulesResponse where
+  rnf ListSipRulesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sipRules
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/ListSupportedPhoneNumberCountries.hs b/gen/Amazonka/Chime/ListSupportedPhoneNumberCountries.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ListSupportedPhoneNumberCountries.hs
@@ -0,0 +1,182 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ListSupportedPhoneNumberCountries
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists supported phone number countries.
+module Amazonka.Chime.ListSupportedPhoneNumberCountries
+  ( -- * Creating a Request
+    ListSupportedPhoneNumberCountries (..),
+    newListSupportedPhoneNumberCountries,
+
+    -- * Request Lenses
+    listSupportedPhoneNumberCountries_productType,
+
+    -- * Destructuring the Response
+    ListSupportedPhoneNumberCountriesResponse (..),
+    newListSupportedPhoneNumberCountriesResponse,
+
+    -- * Response Lenses
+    listSupportedPhoneNumberCountriesResponse_phoneNumberCountries,
+    listSupportedPhoneNumberCountriesResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListSupportedPhoneNumberCountries' smart constructor.
+data ListSupportedPhoneNumberCountries = ListSupportedPhoneNumberCountries'
+  { -- | The phone number product type.
+    productType :: PhoneNumberProductType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListSupportedPhoneNumberCountries' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'productType', 'listSupportedPhoneNumberCountries_productType' - The phone number product type.
+newListSupportedPhoneNumberCountries ::
+  -- | 'productType'
+  PhoneNumberProductType ->
+  ListSupportedPhoneNumberCountries
+newListSupportedPhoneNumberCountries pProductType_ =
+  ListSupportedPhoneNumberCountries'
+    { productType =
+        pProductType_
+    }
+
+-- | The phone number product type.
+listSupportedPhoneNumberCountries_productType :: Lens.Lens' ListSupportedPhoneNumberCountries PhoneNumberProductType
+listSupportedPhoneNumberCountries_productType = Lens.lens (\ListSupportedPhoneNumberCountries' {productType} -> productType) (\s@ListSupportedPhoneNumberCountries' {} a -> s {productType = a} :: ListSupportedPhoneNumberCountries)
+
+instance
+  Core.AWSRequest
+    ListSupportedPhoneNumberCountries
+  where
+  type
+    AWSResponse ListSupportedPhoneNumberCountries =
+      ListSupportedPhoneNumberCountriesResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListSupportedPhoneNumberCountriesResponse'
+            Prelude.<$> ( x
+                            Data..?> "PhoneNumberCountries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    ListSupportedPhoneNumberCountries
+  where
+  hashWithSalt
+    _salt
+    ListSupportedPhoneNumberCountries' {..} =
+      _salt `Prelude.hashWithSalt` productType
+
+instance
+  Prelude.NFData
+    ListSupportedPhoneNumberCountries
+  where
+  rnf ListSupportedPhoneNumberCountries' {..} =
+    Prelude.rnf productType
+
+instance
+  Data.ToHeaders
+    ListSupportedPhoneNumberCountries
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    ListSupportedPhoneNumberCountries
+  where
+  toPath = Prelude.const "/phone-number-countries"
+
+instance
+  Data.ToQuery
+    ListSupportedPhoneNumberCountries
+  where
+  toQuery ListSupportedPhoneNumberCountries' {..} =
+    Prelude.mconcat
+      ["product-type" Data.=: productType]
+
+-- | /See:/ 'newListSupportedPhoneNumberCountriesResponse' smart constructor.
+data ListSupportedPhoneNumberCountriesResponse = ListSupportedPhoneNumberCountriesResponse'
+  { -- | The supported phone number countries.
+    phoneNumberCountries :: Prelude.Maybe [PhoneNumberCountry],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListSupportedPhoneNumberCountriesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'phoneNumberCountries', 'listSupportedPhoneNumberCountriesResponse_phoneNumberCountries' - The supported phone number countries.
+--
+-- 'httpStatus', 'listSupportedPhoneNumberCountriesResponse_httpStatus' - The response's http status code.
+newListSupportedPhoneNumberCountriesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListSupportedPhoneNumberCountriesResponse
+newListSupportedPhoneNumberCountriesResponse
+  pHttpStatus_ =
+    ListSupportedPhoneNumberCountriesResponse'
+      { phoneNumberCountries =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The supported phone number countries.
+listSupportedPhoneNumberCountriesResponse_phoneNumberCountries :: Lens.Lens' ListSupportedPhoneNumberCountriesResponse (Prelude.Maybe [PhoneNumberCountry])
+listSupportedPhoneNumberCountriesResponse_phoneNumberCountries = Lens.lens (\ListSupportedPhoneNumberCountriesResponse' {phoneNumberCountries} -> phoneNumberCountries) (\s@ListSupportedPhoneNumberCountriesResponse' {} a -> s {phoneNumberCountries = a} :: ListSupportedPhoneNumberCountriesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listSupportedPhoneNumberCountriesResponse_httpStatus :: Lens.Lens' ListSupportedPhoneNumberCountriesResponse Prelude.Int
+listSupportedPhoneNumberCountriesResponse_httpStatus = Lens.lens (\ListSupportedPhoneNumberCountriesResponse' {httpStatus} -> httpStatus) (\s@ListSupportedPhoneNumberCountriesResponse' {} a -> s {httpStatus = a} :: ListSupportedPhoneNumberCountriesResponse)
+
+instance
+  Prelude.NFData
+    ListSupportedPhoneNumberCountriesResponse
+  where
+  rnf ListSupportedPhoneNumberCountriesResponse' {..} =
+    Prelude.rnf phoneNumberCountries
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/ListTagsForResource.hs b/gen/Amazonka/Chime/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ListTagsForResource.hs
@@ -0,0 +1,154 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ListTagsForResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the tags applied to an Amazon Chime SDK meeting resource.
+module Amazonka.Chime.ListTagsForResource
+  ( -- * Creating a Request
+    ListTagsForResource (..),
+    newListTagsForResource,
+
+    -- * Request Lenses
+    listTagsForResource_resourceARN,
+
+    -- * Destructuring the Response
+    ListTagsForResourceResponse (..),
+    newListTagsForResourceResponse,
+
+    -- * Response Lenses
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListTagsForResource' smart constructor.
+data ListTagsForResource = ListTagsForResource'
+  { -- | The resource ARN.
+    resourceARN :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceARN', 'listTagsForResource_resourceARN' - The resource ARN.
+newListTagsForResource ::
+  -- | 'resourceARN'
+  Prelude.Text ->
+  ListTagsForResource
+newListTagsForResource pResourceARN_ =
+  ListTagsForResource'
+    { resourceARN =
+        Data._Sensitive Lens.# pResourceARN_
+    }
+
+-- | The resource ARN.
+listTagsForResource_resourceARN :: Lens.Lens' ListTagsForResource Prelude.Text
+listTagsForResource_resourceARN = Lens.lens (\ListTagsForResource' {resourceARN} -> resourceARN) (\s@ListTagsForResource' {} a -> s {resourceARN = a} :: ListTagsForResource) Prelude.. Data._Sensitive
+
+instance Core.AWSRequest ListTagsForResource where
+  type
+    AWSResponse ListTagsForResource =
+      ListTagsForResourceResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListTagsForResourceResponse'
+            Prelude.<$> (x Data..?> "Tags")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListTagsForResource where
+  hashWithSalt _salt ListTagsForResource' {..} =
+    _salt `Prelude.hashWithSalt` resourceARN
+
+instance Prelude.NFData ListTagsForResource where
+  rnf ListTagsForResource' {..} =
+    Prelude.rnf resourceARN
+
+instance Data.ToHeaders ListTagsForResource where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ListTagsForResource where
+  toPath = Prelude.const "/tags"
+
+instance Data.ToQuery ListTagsForResource where
+  toQuery ListTagsForResource' {..} =
+    Prelude.mconcat ["arn" Data.=: resourceARN]
+
+-- | /See:/ 'newListTagsForResourceResponse' smart constructor.
+data ListTagsForResourceResponse = ListTagsForResourceResponse'
+  { -- | A list of tag-key value pairs.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tags', 'listTagsForResourceResponse_tags' - A list of tag-key value pairs.
+--
+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.
+newListTagsForResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTagsForResourceResponse
+newListTagsForResourceResponse pHttpStatus_ =
+  ListTagsForResourceResponse'
+    { tags =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of tag-key value pairs.
+listTagsForResourceResponse_tags :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe (Prelude.NonEmpty Tag))
+listTagsForResourceResponse_tags = Lens.lens (\ListTagsForResourceResponse' {tags} -> tags) (\s@ListTagsForResourceResponse' {} a -> s {tags = a} :: ListTagsForResourceResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listTagsForResourceResponse_httpStatus :: Lens.Lens' ListTagsForResourceResponse Prelude.Int
+listTagsForResourceResponse_httpStatus = Lens.lens (\ListTagsForResourceResponse' {httpStatus} -> httpStatus) (\s@ListTagsForResourceResponse' {} a -> s {httpStatus = a} :: ListTagsForResourceResponse)
+
+instance Prelude.NFData ListTagsForResourceResponse where
+  rnf ListTagsForResourceResponse' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/ListUsers.hs b/gen/Amazonka/Chime/ListUsers.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ListUsers.hs
@@ -0,0 +1,247 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ListUsers
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the users that belong to the specified Amazon Chime account. You
+-- can specify an email address to list only the user that the email
+-- address belongs to.
+--
+-- This operation returns paginated results.
+module Amazonka.Chime.ListUsers
+  ( -- * Creating a Request
+    ListUsers (..),
+    newListUsers,
+
+    -- * Request Lenses
+    listUsers_maxResults,
+    listUsers_nextToken,
+    listUsers_userEmail,
+    listUsers_userType,
+    listUsers_accountId,
+
+    -- * Destructuring the Response
+    ListUsersResponse (..),
+    newListUsersResponse,
+
+    -- * Response Lenses
+    listUsersResponse_nextToken,
+    listUsersResponse_users,
+    listUsersResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListUsers' smart constructor.
+data ListUsers = ListUsers'
+  { -- | The maximum number of results to return in a single call. Defaults to
+    -- 100.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token to use to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Optional. The user email address used to filter results. Maximum 1.
+    userEmail :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The user type.
+    userType :: Prelude.Maybe UserType,
+    -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListUsers' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listUsers_maxResults' - The maximum number of results to return in a single call. Defaults to
+-- 100.
+--
+-- 'nextToken', 'listUsers_nextToken' - The token to use to retrieve the next page of results.
+--
+-- 'userEmail', 'listUsers_userEmail' - Optional. The user email address used to filter results. Maximum 1.
+--
+-- 'userType', 'listUsers_userType' - The user type.
+--
+-- 'accountId', 'listUsers_accountId' - The Amazon Chime account ID.
+newListUsers ::
+  -- | 'accountId'
+  Prelude.Text ->
+  ListUsers
+newListUsers pAccountId_ =
+  ListUsers'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      userEmail = Prelude.Nothing,
+      userType = Prelude.Nothing,
+      accountId = pAccountId_
+    }
+
+-- | The maximum number of results to return in a single call. Defaults to
+-- 100.
+listUsers_maxResults :: Lens.Lens' ListUsers (Prelude.Maybe Prelude.Natural)
+listUsers_maxResults = Lens.lens (\ListUsers' {maxResults} -> maxResults) (\s@ListUsers' {} a -> s {maxResults = a} :: ListUsers)
+
+-- | The token to use to retrieve the next page of results.
+listUsers_nextToken :: Lens.Lens' ListUsers (Prelude.Maybe Prelude.Text)
+listUsers_nextToken = Lens.lens (\ListUsers' {nextToken} -> nextToken) (\s@ListUsers' {} a -> s {nextToken = a} :: ListUsers)
+
+-- | Optional. The user email address used to filter results. Maximum 1.
+listUsers_userEmail :: Lens.Lens' ListUsers (Prelude.Maybe Prelude.Text)
+listUsers_userEmail = Lens.lens (\ListUsers' {userEmail} -> userEmail) (\s@ListUsers' {} a -> s {userEmail = a} :: ListUsers) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The user type.
+listUsers_userType :: Lens.Lens' ListUsers (Prelude.Maybe UserType)
+listUsers_userType = Lens.lens (\ListUsers' {userType} -> userType) (\s@ListUsers' {} a -> s {userType = a} :: ListUsers)
+
+-- | The Amazon Chime account ID.
+listUsers_accountId :: Lens.Lens' ListUsers Prelude.Text
+listUsers_accountId = Lens.lens (\ListUsers' {accountId} -> accountId) (\s@ListUsers' {} a -> s {accountId = a} :: ListUsers)
+
+instance Core.AWSPager ListUsers where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listUsersResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listUsersResponse_users
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listUsers_nextToken
+          Lens..~ rs
+          Lens.^? listUsersResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListUsers where
+  type AWSResponse ListUsers = ListUsersResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListUsersResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "Users" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListUsers where
+  hashWithSalt _salt ListUsers' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` userEmail
+      `Prelude.hashWithSalt` userType
+      `Prelude.hashWithSalt` accountId
+
+instance Prelude.NFData ListUsers where
+  rnf ListUsers' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf userEmail
+      `Prelude.seq` Prelude.rnf userType
+      `Prelude.seq` Prelude.rnf accountId
+
+instance Data.ToHeaders ListUsers where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ListUsers where
+  toPath ListUsers' {..} =
+    Prelude.mconcat
+      ["/accounts/", Data.toBS accountId, "/users"]
+
+instance Data.ToQuery ListUsers where
+  toQuery ListUsers' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken,
+        "user-email" Data.=: userEmail,
+        "user-type" Data.=: userType
+      ]
+
+-- | /See:/ 'newListUsersResponse' smart constructor.
+data ListUsersResponse = ListUsersResponse'
+  { -- | The token to use to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | List of users and user details.
+    users :: Prelude.Maybe [User],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListUsersResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'nextToken', 'listUsersResponse_nextToken' - The token to use to retrieve the next page of results.
+--
+-- 'users', 'listUsersResponse_users' - List of users and user details.
+--
+-- 'httpStatus', 'listUsersResponse_httpStatus' - The response's http status code.
+newListUsersResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListUsersResponse
+newListUsersResponse pHttpStatus_ =
+  ListUsersResponse'
+    { nextToken = Prelude.Nothing,
+      users = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The token to use to retrieve the next page of results.
+listUsersResponse_nextToken :: Lens.Lens' ListUsersResponse (Prelude.Maybe Prelude.Text)
+listUsersResponse_nextToken = Lens.lens (\ListUsersResponse' {nextToken} -> nextToken) (\s@ListUsersResponse' {} a -> s {nextToken = a} :: ListUsersResponse)
+
+-- | List of users and user details.
+listUsersResponse_users :: Lens.Lens' ListUsersResponse (Prelude.Maybe [User])
+listUsersResponse_users = Lens.lens (\ListUsersResponse' {users} -> users) (\s@ListUsersResponse' {} a -> s {users = a} :: ListUsersResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listUsersResponse_httpStatus :: Lens.Lens' ListUsersResponse Prelude.Int
+listUsersResponse_httpStatus = Lens.lens (\ListUsersResponse' {httpStatus} -> httpStatus) (\s@ListUsersResponse' {} a -> s {httpStatus = a} :: ListUsersResponse)
+
+instance Prelude.NFData ListUsersResponse where
+  rnf ListUsersResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf users
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/ListVoiceConnectorGroups.hs b/gen/Amazonka/Chime/ListVoiceConnectorGroups.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ListVoiceConnectorGroups.hs
@@ -0,0 +1,187 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ListVoiceConnectorGroups
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the Amazon Chime Voice Connector groups for the administrator\'s
+-- AWS account.
+module Amazonka.Chime.ListVoiceConnectorGroups
+  ( -- * Creating a Request
+    ListVoiceConnectorGroups (..),
+    newListVoiceConnectorGroups,
+
+    -- * Request Lenses
+    listVoiceConnectorGroups_maxResults,
+    listVoiceConnectorGroups_nextToken,
+
+    -- * Destructuring the Response
+    ListVoiceConnectorGroupsResponse (..),
+    newListVoiceConnectorGroupsResponse,
+
+    -- * Response Lenses
+    listVoiceConnectorGroupsResponse_nextToken,
+    listVoiceConnectorGroupsResponse_voiceConnectorGroups,
+    listVoiceConnectorGroupsResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListVoiceConnectorGroups' smart constructor.
+data ListVoiceConnectorGroups = ListVoiceConnectorGroups'
+  { -- | The maximum number of results to return in a single call.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token to use to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListVoiceConnectorGroups' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listVoiceConnectorGroups_maxResults' - The maximum number of results to return in a single call.
+--
+-- 'nextToken', 'listVoiceConnectorGroups_nextToken' - The token to use to retrieve the next page of results.
+newListVoiceConnectorGroups ::
+  ListVoiceConnectorGroups
+newListVoiceConnectorGroups =
+  ListVoiceConnectorGroups'
+    { maxResults =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The maximum number of results to return in a single call.
+listVoiceConnectorGroups_maxResults :: Lens.Lens' ListVoiceConnectorGroups (Prelude.Maybe Prelude.Natural)
+listVoiceConnectorGroups_maxResults = Lens.lens (\ListVoiceConnectorGroups' {maxResults} -> maxResults) (\s@ListVoiceConnectorGroups' {} a -> s {maxResults = a} :: ListVoiceConnectorGroups)
+
+-- | The token to use to retrieve the next page of results.
+listVoiceConnectorGroups_nextToken :: Lens.Lens' ListVoiceConnectorGroups (Prelude.Maybe Prelude.Text)
+listVoiceConnectorGroups_nextToken = Lens.lens (\ListVoiceConnectorGroups' {nextToken} -> nextToken) (\s@ListVoiceConnectorGroups' {} a -> s {nextToken = a} :: ListVoiceConnectorGroups)
+
+instance Core.AWSRequest ListVoiceConnectorGroups where
+  type
+    AWSResponse ListVoiceConnectorGroups =
+      ListVoiceConnectorGroupsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListVoiceConnectorGroupsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "VoiceConnectorGroups"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListVoiceConnectorGroups where
+  hashWithSalt _salt ListVoiceConnectorGroups' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListVoiceConnectorGroups where
+  rnf ListVoiceConnectorGroups' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListVoiceConnectorGroups where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ListVoiceConnectorGroups where
+  toPath = Prelude.const "/voice-connector-groups"
+
+instance Data.ToQuery ListVoiceConnectorGroups where
+  toQuery ListVoiceConnectorGroups' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListVoiceConnectorGroupsResponse' smart constructor.
+data ListVoiceConnectorGroupsResponse = ListVoiceConnectorGroupsResponse'
+  { -- | The token to use to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The details of the Amazon Chime Voice Connector groups.
+    voiceConnectorGroups :: Prelude.Maybe [VoiceConnectorGroup],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListVoiceConnectorGroupsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'nextToken', 'listVoiceConnectorGroupsResponse_nextToken' - The token to use to retrieve the next page of results.
+--
+-- 'voiceConnectorGroups', 'listVoiceConnectorGroupsResponse_voiceConnectorGroups' - The details of the Amazon Chime Voice Connector groups.
+--
+-- 'httpStatus', 'listVoiceConnectorGroupsResponse_httpStatus' - The response's http status code.
+newListVoiceConnectorGroupsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListVoiceConnectorGroupsResponse
+newListVoiceConnectorGroupsResponse pHttpStatus_ =
+  ListVoiceConnectorGroupsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      voiceConnectorGroups = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The token to use to retrieve the next page of results.
+listVoiceConnectorGroupsResponse_nextToken :: Lens.Lens' ListVoiceConnectorGroupsResponse (Prelude.Maybe Prelude.Text)
+listVoiceConnectorGroupsResponse_nextToken = Lens.lens (\ListVoiceConnectorGroupsResponse' {nextToken} -> nextToken) (\s@ListVoiceConnectorGroupsResponse' {} a -> s {nextToken = a} :: ListVoiceConnectorGroupsResponse)
+
+-- | The details of the Amazon Chime Voice Connector groups.
+listVoiceConnectorGroupsResponse_voiceConnectorGroups :: Lens.Lens' ListVoiceConnectorGroupsResponse (Prelude.Maybe [VoiceConnectorGroup])
+listVoiceConnectorGroupsResponse_voiceConnectorGroups = Lens.lens (\ListVoiceConnectorGroupsResponse' {voiceConnectorGroups} -> voiceConnectorGroups) (\s@ListVoiceConnectorGroupsResponse' {} a -> s {voiceConnectorGroups = a} :: ListVoiceConnectorGroupsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listVoiceConnectorGroupsResponse_httpStatus :: Lens.Lens' ListVoiceConnectorGroupsResponse Prelude.Int
+listVoiceConnectorGroupsResponse_httpStatus = Lens.lens (\ListVoiceConnectorGroupsResponse' {httpStatus} -> httpStatus) (\s@ListVoiceConnectorGroupsResponse' {} a -> s {httpStatus = a} :: ListVoiceConnectorGroupsResponse)
+
+instance
+  Prelude.NFData
+    ListVoiceConnectorGroupsResponse
+  where
+  rnf ListVoiceConnectorGroupsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf voiceConnectorGroups
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/ListVoiceConnectorTerminationCredentials.hs b/gen/Amazonka/Chime/ListVoiceConnectorTerminationCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ListVoiceConnectorTerminationCredentials.hs
@@ -0,0 +1,186 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ListVoiceConnectorTerminationCredentials
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the SIP credentials for the specified Amazon Chime Voice
+-- Connector.
+module Amazonka.Chime.ListVoiceConnectorTerminationCredentials
+  ( -- * Creating a Request
+    ListVoiceConnectorTerminationCredentials (..),
+    newListVoiceConnectorTerminationCredentials,
+
+    -- * Request Lenses
+    listVoiceConnectorTerminationCredentials_voiceConnectorId,
+
+    -- * Destructuring the Response
+    ListVoiceConnectorTerminationCredentialsResponse (..),
+    newListVoiceConnectorTerminationCredentialsResponse,
+
+    -- * Response Lenses
+    listVoiceConnectorTerminationCredentialsResponse_usernames,
+    listVoiceConnectorTerminationCredentialsResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListVoiceConnectorTerminationCredentials' smart constructor.
+data ListVoiceConnectorTerminationCredentials = ListVoiceConnectorTerminationCredentials'
+  { -- | The Amazon Chime Voice Connector ID.
+    voiceConnectorId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListVoiceConnectorTerminationCredentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorId', 'listVoiceConnectorTerminationCredentials_voiceConnectorId' - The Amazon Chime Voice Connector ID.
+newListVoiceConnectorTerminationCredentials ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  ListVoiceConnectorTerminationCredentials
+newListVoiceConnectorTerminationCredentials
+  pVoiceConnectorId_ =
+    ListVoiceConnectorTerminationCredentials'
+      { voiceConnectorId =
+          pVoiceConnectorId_
+      }
+
+-- | The Amazon Chime Voice Connector ID.
+listVoiceConnectorTerminationCredentials_voiceConnectorId :: Lens.Lens' ListVoiceConnectorTerminationCredentials Prelude.Text
+listVoiceConnectorTerminationCredentials_voiceConnectorId = Lens.lens (\ListVoiceConnectorTerminationCredentials' {voiceConnectorId} -> voiceConnectorId) (\s@ListVoiceConnectorTerminationCredentials' {} a -> s {voiceConnectorId = a} :: ListVoiceConnectorTerminationCredentials)
+
+instance
+  Core.AWSRequest
+    ListVoiceConnectorTerminationCredentials
+  where
+  type
+    AWSResponse
+      ListVoiceConnectorTerminationCredentials =
+      ListVoiceConnectorTerminationCredentialsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListVoiceConnectorTerminationCredentialsResponse'
+            Prelude.<$> (x Data..?> "Usernames" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    ListVoiceConnectorTerminationCredentials
+  where
+  hashWithSalt
+    _salt
+    ListVoiceConnectorTerminationCredentials' {..} =
+      _salt `Prelude.hashWithSalt` voiceConnectorId
+
+instance
+  Prelude.NFData
+    ListVoiceConnectorTerminationCredentials
+  where
+  rnf ListVoiceConnectorTerminationCredentials' {..} =
+    Prelude.rnf voiceConnectorId
+
+instance
+  Data.ToHeaders
+    ListVoiceConnectorTerminationCredentials
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    ListVoiceConnectorTerminationCredentials
+  where
+  toPath ListVoiceConnectorTerminationCredentials' {..} =
+    Prelude.mconcat
+      [ "/voice-connectors/",
+        Data.toBS voiceConnectorId,
+        "/termination/credentials"
+      ]
+
+instance
+  Data.ToQuery
+    ListVoiceConnectorTerminationCredentials
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListVoiceConnectorTerminationCredentialsResponse' smart constructor.
+data ListVoiceConnectorTerminationCredentialsResponse = ListVoiceConnectorTerminationCredentialsResponse'
+  { -- | A list of user names.
+    usernames :: Prelude.Maybe [Data.Sensitive Prelude.Text],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListVoiceConnectorTerminationCredentialsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'usernames', 'listVoiceConnectorTerminationCredentialsResponse_usernames' - A list of user names.
+--
+-- 'httpStatus', 'listVoiceConnectorTerminationCredentialsResponse_httpStatus' - The response's http status code.
+newListVoiceConnectorTerminationCredentialsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListVoiceConnectorTerminationCredentialsResponse
+newListVoiceConnectorTerminationCredentialsResponse
+  pHttpStatus_ =
+    ListVoiceConnectorTerminationCredentialsResponse'
+      { usernames =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | A list of user names.
+listVoiceConnectorTerminationCredentialsResponse_usernames :: Lens.Lens' ListVoiceConnectorTerminationCredentialsResponse (Prelude.Maybe [Prelude.Text])
+listVoiceConnectorTerminationCredentialsResponse_usernames = Lens.lens (\ListVoiceConnectorTerminationCredentialsResponse' {usernames} -> usernames) (\s@ListVoiceConnectorTerminationCredentialsResponse' {} a -> s {usernames = a} :: ListVoiceConnectorTerminationCredentialsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listVoiceConnectorTerminationCredentialsResponse_httpStatus :: Lens.Lens' ListVoiceConnectorTerminationCredentialsResponse Prelude.Int
+listVoiceConnectorTerminationCredentialsResponse_httpStatus = Lens.lens (\ListVoiceConnectorTerminationCredentialsResponse' {httpStatus} -> httpStatus) (\s@ListVoiceConnectorTerminationCredentialsResponse' {} a -> s {httpStatus = a} :: ListVoiceConnectorTerminationCredentialsResponse)
+
+instance
+  Prelude.NFData
+    ListVoiceConnectorTerminationCredentialsResponse
+  where
+  rnf
+    ListVoiceConnectorTerminationCredentialsResponse' {..} =
+      Prelude.rnf usernames
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/ListVoiceConnectors.hs b/gen/Amazonka/Chime/ListVoiceConnectors.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ListVoiceConnectors.hs
@@ -0,0 +1,183 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ListVoiceConnectors
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the Amazon Chime Voice Connectors for the administrator\'s AWS
+-- account.
+module Amazonka.Chime.ListVoiceConnectors
+  ( -- * Creating a Request
+    ListVoiceConnectors (..),
+    newListVoiceConnectors,
+
+    -- * Request Lenses
+    listVoiceConnectors_maxResults,
+    listVoiceConnectors_nextToken,
+
+    -- * Destructuring the Response
+    ListVoiceConnectorsResponse (..),
+    newListVoiceConnectorsResponse,
+
+    -- * Response Lenses
+    listVoiceConnectorsResponse_nextToken,
+    listVoiceConnectorsResponse_voiceConnectors,
+    listVoiceConnectorsResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListVoiceConnectors' smart constructor.
+data ListVoiceConnectors = ListVoiceConnectors'
+  { -- | The maximum number of results to return in a single call.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token to use to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListVoiceConnectors' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listVoiceConnectors_maxResults' - The maximum number of results to return in a single call.
+--
+-- 'nextToken', 'listVoiceConnectors_nextToken' - The token to use to retrieve the next page of results.
+newListVoiceConnectors ::
+  ListVoiceConnectors
+newListVoiceConnectors =
+  ListVoiceConnectors'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The maximum number of results to return in a single call.
+listVoiceConnectors_maxResults :: Lens.Lens' ListVoiceConnectors (Prelude.Maybe Prelude.Natural)
+listVoiceConnectors_maxResults = Lens.lens (\ListVoiceConnectors' {maxResults} -> maxResults) (\s@ListVoiceConnectors' {} a -> s {maxResults = a} :: ListVoiceConnectors)
+
+-- | The token to use to retrieve the next page of results.
+listVoiceConnectors_nextToken :: Lens.Lens' ListVoiceConnectors (Prelude.Maybe Prelude.Text)
+listVoiceConnectors_nextToken = Lens.lens (\ListVoiceConnectors' {nextToken} -> nextToken) (\s@ListVoiceConnectors' {} a -> s {nextToken = a} :: ListVoiceConnectors)
+
+instance Core.AWSRequest ListVoiceConnectors where
+  type
+    AWSResponse ListVoiceConnectors =
+      ListVoiceConnectorsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListVoiceConnectorsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "VoiceConnectors"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListVoiceConnectors where
+  hashWithSalt _salt ListVoiceConnectors' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListVoiceConnectors where
+  rnf ListVoiceConnectors' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListVoiceConnectors where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ListVoiceConnectors where
+  toPath = Prelude.const "/voice-connectors"
+
+instance Data.ToQuery ListVoiceConnectors where
+  toQuery ListVoiceConnectors' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListVoiceConnectorsResponse' smart constructor.
+data ListVoiceConnectorsResponse = ListVoiceConnectorsResponse'
+  { -- | The token to use to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The details of the Amazon Chime Voice Connectors.
+    voiceConnectors :: Prelude.Maybe [VoiceConnector],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListVoiceConnectorsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'nextToken', 'listVoiceConnectorsResponse_nextToken' - The token to use to retrieve the next page of results.
+--
+-- 'voiceConnectors', 'listVoiceConnectorsResponse_voiceConnectors' - The details of the Amazon Chime Voice Connectors.
+--
+-- 'httpStatus', 'listVoiceConnectorsResponse_httpStatus' - The response's http status code.
+newListVoiceConnectorsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListVoiceConnectorsResponse
+newListVoiceConnectorsResponse pHttpStatus_ =
+  ListVoiceConnectorsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      voiceConnectors = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The token to use to retrieve the next page of results.
+listVoiceConnectorsResponse_nextToken :: Lens.Lens' ListVoiceConnectorsResponse (Prelude.Maybe Prelude.Text)
+listVoiceConnectorsResponse_nextToken = Lens.lens (\ListVoiceConnectorsResponse' {nextToken} -> nextToken) (\s@ListVoiceConnectorsResponse' {} a -> s {nextToken = a} :: ListVoiceConnectorsResponse)
+
+-- | The details of the Amazon Chime Voice Connectors.
+listVoiceConnectorsResponse_voiceConnectors :: Lens.Lens' ListVoiceConnectorsResponse (Prelude.Maybe [VoiceConnector])
+listVoiceConnectorsResponse_voiceConnectors = Lens.lens (\ListVoiceConnectorsResponse' {voiceConnectors} -> voiceConnectors) (\s@ListVoiceConnectorsResponse' {} a -> s {voiceConnectors = a} :: ListVoiceConnectorsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listVoiceConnectorsResponse_httpStatus :: Lens.Lens' ListVoiceConnectorsResponse Prelude.Int
+listVoiceConnectorsResponse_httpStatus = Lens.lens (\ListVoiceConnectorsResponse' {httpStatus} -> httpStatus) (\s@ListVoiceConnectorsResponse' {} a -> s {httpStatus = a} :: ListVoiceConnectorsResponse)
+
+instance Prelude.NFData ListVoiceConnectorsResponse where
+  rnf ListVoiceConnectorsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf voiceConnectors
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/LogoutUser.hs b/gen/Amazonka/Chime/LogoutUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/LogoutUser.hs
@@ -0,0 +1,161 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.LogoutUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Logs out the specified user from all of the devices they are currently
+-- logged into.
+module Amazonka.Chime.LogoutUser
+  ( -- * Creating a Request
+    LogoutUser (..),
+    newLogoutUser,
+
+    -- * Request Lenses
+    logoutUser_accountId,
+    logoutUser_userId,
+
+    -- * Destructuring the Response
+    LogoutUserResponse (..),
+    newLogoutUserResponse,
+
+    -- * Response Lenses
+    logoutUserResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newLogoutUser' smart constructor.
+data LogoutUser = LogoutUser'
+  { -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The user ID.
+    userId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LogoutUser' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'logoutUser_accountId' - The Amazon Chime account ID.
+--
+-- 'userId', 'logoutUser_userId' - The user ID.
+newLogoutUser ::
+  -- | 'accountId'
+  Prelude.Text ->
+  -- | 'userId'
+  Prelude.Text ->
+  LogoutUser
+newLogoutUser pAccountId_ pUserId_ =
+  LogoutUser'
+    { accountId = pAccountId_,
+      userId = pUserId_
+    }
+
+-- | The Amazon Chime account ID.
+logoutUser_accountId :: Lens.Lens' LogoutUser Prelude.Text
+logoutUser_accountId = Lens.lens (\LogoutUser' {accountId} -> accountId) (\s@LogoutUser' {} a -> s {accountId = a} :: LogoutUser)
+
+-- | The user ID.
+logoutUser_userId :: Lens.Lens' LogoutUser Prelude.Text
+logoutUser_userId = Lens.lens (\LogoutUser' {userId} -> userId) (\s@LogoutUser' {} a -> s {userId = a} :: LogoutUser)
+
+instance Core.AWSRequest LogoutUser where
+  type AWSResponse LogoutUser = LogoutUserResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          LogoutUserResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable LogoutUser where
+  hashWithSalt _salt LogoutUser' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` userId
+
+instance Prelude.NFData LogoutUser where
+  rnf LogoutUser' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf userId
+
+instance Data.ToHeaders LogoutUser where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON LogoutUser where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath LogoutUser where
+  toPath LogoutUser' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS accountId,
+        "/users/",
+        Data.toBS userId
+      ]
+
+instance Data.ToQuery LogoutUser where
+  toQuery =
+    Prelude.const
+      (Prelude.mconcat ["operation=logout"])
+
+-- | /See:/ 'newLogoutUserResponse' smart constructor.
+data LogoutUserResponse = LogoutUserResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LogoutUserResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'logoutUserResponse_httpStatus' - The response's http status code.
+newLogoutUserResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  LogoutUserResponse
+newLogoutUserResponse pHttpStatus_ =
+  LogoutUserResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+logoutUserResponse_httpStatus :: Lens.Lens' LogoutUserResponse Prelude.Int
+logoutUserResponse_httpStatus = Lens.lens (\LogoutUserResponse' {httpStatus} -> httpStatus) (\s@LogoutUserResponse' {} a -> s {httpStatus = a} :: LogoutUserResponse)
+
+instance Prelude.NFData LogoutUserResponse where
+  rnf LogoutUserResponse' {..} = Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/PutAppInstanceRetentionSettings.hs b/gen/Amazonka/Chime/PutAppInstanceRetentionSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/PutAppInstanceRetentionSettings.hs
@@ -0,0 +1,218 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.PutAppInstanceRetentionSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets the amount of time in days that a given @AppInstance@ retains data.
+module Amazonka.Chime.PutAppInstanceRetentionSettings
+  ( -- * Creating a Request
+    PutAppInstanceRetentionSettings (..),
+    newPutAppInstanceRetentionSettings,
+
+    -- * Request Lenses
+    putAppInstanceRetentionSettings_appInstanceArn,
+    putAppInstanceRetentionSettings_appInstanceRetentionSettings,
+
+    -- * Destructuring the Response
+    PutAppInstanceRetentionSettingsResponse (..),
+    newPutAppInstanceRetentionSettingsResponse,
+
+    -- * Response Lenses
+    putAppInstanceRetentionSettingsResponse_appInstanceRetentionSettings,
+    putAppInstanceRetentionSettingsResponse_initiateDeletionTimestamp,
+    putAppInstanceRetentionSettingsResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newPutAppInstanceRetentionSettings' smart constructor.
+data PutAppInstanceRetentionSettings = PutAppInstanceRetentionSettings'
+  { -- | The ARN of the @AppInstance@.
+    appInstanceArn :: Prelude.Text,
+    -- | The time in days to retain data. Data type: number.
+    appInstanceRetentionSettings :: AppInstanceRetentionSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutAppInstanceRetentionSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceArn', 'putAppInstanceRetentionSettings_appInstanceArn' - The ARN of the @AppInstance@.
+--
+-- 'appInstanceRetentionSettings', 'putAppInstanceRetentionSettings_appInstanceRetentionSettings' - The time in days to retain data. Data type: number.
+newPutAppInstanceRetentionSettings ::
+  -- | 'appInstanceArn'
+  Prelude.Text ->
+  -- | 'appInstanceRetentionSettings'
+  AppInstanceRetentionSettings ->
+  PutAppInstanceRetentionSettings
+newPutAppInstanceRetentionSettings
+  pAppInstanceArn_
+  pAppInstanceRetentionSettings_ =
+    PutAppInstanceRetentionSettings'
+      { appInstanceArn =
+          pAppInstanceArn_,
+        appInstanceRetentionSettings =
+          pAppInstanceRetentionSettings_
+      }
+
+-- | The ARN of the @AppInstance@.
+putAppInstanceRetentionSettings_appInstanceArn :: Lens.Lens' PutAppInstanceRetentionSettings Prelude.Text
+putAppInstanceRetentionSettings_appInstanceArn = Lens.lens (\PutAppInstanceRetentionSettings' {appInstanceArn} -> appInstanceArn) (\s@PutAppInstanceRetentionSettings' {} a -> s {appInstanceArn = a} :: PutAppInstanceRetentionSettings)
+
+-- | The time in days to retain data. Data type: number.
+putAppInstanceRetentionSettings_appInstanceRetentionSettings :: Lens.Lens' PutAppInstanceRetentionSettings AppInstanceRetentionSettings
+putAppInstanceRetentionSettings_appInstanceRetentionSettings = Lens.lens (\PutAppInstanceRetentionSettings' {appInstanceRetentionSettings} -> appInstanceRetentionSettings) (\s@PutAppInstanceRetentionSettings' {} a -> s {appInstanceRetentionSettings = a} :: PutAppInstanceRetentionSettings)
+
+instance
+  Core.AWSRequest
+    PutAppInstanceRetentionSettings
+  where
+  type
+    AWSResponse PutAppInstanceRetentionSettings =
+      PutAppInstanceRetentionSettingsResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          PutAppInstanceRetentionSettingsResponse'
+            Prelude.<$> (x Data..?> "AppInstanceRetentionSettings")
+            Prelude.<*> (x Data..?> "InitiateDeletionTimestamp")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    PutAppInstanceRetentionSettings
+  where
+  hashWithSalt
+    _salt
+    PutAppInstanceRetentionSettings' {..} =
+      _salt
+        `Prelude.hashWithSalt` appInstanceArn
+        `Prelude.hashWithSalt` appInstanceRetentionSettings
+
+instance
+  Prelude.NFData
+    PutAppInstanceRetentionSettings
+  where
+  rnf PutAppInstanceRetentionSettings' {..} =
+    Prelude.rnf appInstanceArn
+      `Prelude.seq` Prelude.rnf appInstanceRetentionSettings
+
+instance
+  Data.ToHeaders
+    PutAppInstanceRetentionSettings
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON PutAppInstanceRetentionSettings where
+  toJSON PutAppInstanceRetentionSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "AppInstanceRetentionSettings"
+                  Data..= appInstanceRetentionSettings
+              )
+          ]
+      )
+
+instance Data.ToPath PutAppInstanceRetentionSettings where
+  toPath PutAppInstanceRetentionSettings' {..} =
+    Prelude.mconcat
+      [ "/app-instances/",
+        Data.toBS appInstanceArn,
+        "/retention-settings"
+      ]
+
+instance Data.ToQuery PutAppInstanceRetentionSettings where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newPutAppInstanceRetentionSettingsResponse' smart constructor.
+data PutAppInstanceRetentionSettingsResponse = PutAppInstanceRetentionSettingsResponse'
+  { -- | The time in days to retain data. Data type: number.
+    appInstanceRetentionSettings :: Prelude.Maybe AppInstanceRetentionSettings,
+    -- | The time at which the API deletes data.
+    initiateDeletionTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutAppInstanceRetentionSettingsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceRetentionSettings', 'putAppInstanceRetentionSettingsResponse_appInstanceRetentionSettings' - The time in days to retain data. Data type: number.
+--
+-- 'initiateDeletionTimestamp', 'putAppInstanceRetentionSettingsResponse_initiateDeletionTimestamp' - The time at which the API deletes data.
+--
+-- 'httpStatus', 'putAppInstanceRetentionSettingsResponse_httpStatus' - The response's http status code.
+newPutAppInstanceRetentionSettingsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  PutAppInstanceRetentionSettingsResponse
+newPutAppInstanceRetentionSettingsResponse
+  pHttpStatus_ =
+    PutAppInstanceRetentionSettingsResponse'
+      { appInstanceRetentionSettings =
+          Prelude.Nothing,
+        initiateDeletionTimestamp =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The time in days to retain data. Data type: number.
+putAppInstanceRetentionSettingsResponse_appInstanceRetentionSettings :: Lens.Lens' PutAppInstanceRetentionSettingsResponse (Prelude.Maybe AppInstanceRetentionSettings)
+putAppInstanceRetentionSettingsResponse_appInstanceRetentionSettings = Lens.lens (\PutAppInstanceRetentionSettingsResponse' {appInstanceRetentionSettings} -> appInstanceRetentionSettings) (\s@PutAppInstanceRetentionSettingsResponse' {} a -> s {appInstanceRetentionSettings = a} :: PutAppInstanceRetentionSettingsResponse)
+
+-- | The time at which the API deletes data.
+putAppInstanceRetentionSettingsResponse_initiateDeletionTimestamp :: Lens.Lens' PutAppInstanceRetentionSettingsResponse (Prelude.Maybe Prelude.UTCTime)
+putAppInstanceRetentionSettingsResponse_initiateDeletionTimestamp = Lens.lens (\PutAppInstanceRetentionSettingsResponse' {initiateDeletionTimestamp} -> initiateDeletionTimestamp) (\s@PutAppInstanceRetentionSettingsResponse' {} a -> s {initiateDeletionTimestamp = a} :: PutAppInstanceRetentionSettingsResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The response's http status code.
+putAppInstanceRetentionSettingsResponse_httpStatus :: Lens.Lens' PutAppInstanceRetentionSettingsResponse Prelude.Int
+putAppInstanceRetentionSettingsResponse_httpStatus = Lens.lens (\PutAppInstanceRetentionSettingsResponse' {httpStatus} -> httpStatus) (\s@PutAppInstanceRetentionSettingsResponse' {} a -> s {httpStatus = a} :: PutAppInstanceRetentionSettingsResponse)
+
+instance
+  Prelude.NFData
+    PutAppInstanceRetentionSettingsResponse
+  where
+  rnf PutAppInstanceRetentionSettingsResponse' {..} =
+    Prelude.rnf appInstanceRetentionSettings
+      `Prelude.seq` Prelude.rnf initiateDeletionTimestamp
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/PutAppInstanceStreamingConfigurations.hs b/gen/Amazonka/Chime/PutAppInstanceStreamingConfigurations.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/PutAppInstanceStreamingConfigurations.hs
@@ -0,0 +1,217 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.PutAppInstanceStreamingConfigurations
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- The data streaming configurations of an @AppInstance@.
+module Amazonka.Chime.PutAppInstanceStreamingConfigurations
+  ( -- * Creating a Request
+    PutAppInstanceStreamingConfigurations (..),
+    newPutAppInstanceStreamingConfigurations,
+
+    -- * Request Lenses
+    putAppInstanceStreamingConfigurations_appInstanceArn,
+    putAppInstanceStreamingConfigurations_appInstanceStreamingConfigurations,
+
+    -- * Destructuring the Response
+    PutAppInstanceStreamingConfigurationsResponse (..),
+    newPutAppInstanceStreamingConfigurationsResponse,
+
+    -- * Response Lenses
+    putAppInstanceStreamingConfigurationsResponse_appInstanceStreamingConfigurations,
+    putAppInstanceStreamingConfigurationsResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newPutAppInstanceStreamingConfigurations' smart constructor.
+data PutAppInstanceStreamingConfigurations = PutAppInstanceStreamingConfigurations'
+  { -- | The ARN of the @AppInstance@.
+    appInstanceArn :: Prelude.Text,
+    -- | The streaming configurations set for an @AppInstance@.
+    appInstanceStreamingConfigurations :: Prelude.NonEmpty AppInstanceStreamingConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutAppInstanceStreamingConfigurations' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceArn', 'putAppInstanceStreamingConfigurations_appInstanceArn' - The ARN of the @AppInstance@.
+--
+-- 'appInstanceStreamingConfigurations', 'putAppInstanceStreamingConfigurations_appInstanceStreamingConfigurations' - The streaming configurations set for an @AppInstance@.
+newPutAppInstanceStreamingConfigurations ::
+  -- | 'appInstanceArn'
+  Prelude.Text ->
+  -- | 'appInstanceStreamingConfigurations'
+  Prelude.NonEmpty AppInstanceStreamingConfiguration ->
+  PutAppInstanceStreamingConfigurations
+newPutAppInstanceStreamingConfigurations
+  pAppInstanceArn_
+  pAppInstanceStreamingConfigurations_ =
+    PutAppInstanceStreamingConfigurations'
+      { appInstanceArn =
+          pAppInstanceArn_,
+        appInstanceStreamingConfigurations =
+          Lens.coerced
+            Lens.# pAppInstanceStreamingConfigurations_
+      }
+
+-- | The ARN of the @AppInstance@.
+putAppInstanceStreamingConfigurations_appInstanceArn :: Lens.Lens' PutAppInstanceStreamingConfigurations Prelude.Text
+putAppInstanceStreamingConfigurations_appInstanceArn = Lens.lens (\PutAppInstanceStreamingConfigurations' {appInstanceArn} -> appInstanceArn) (\s@PutAppInstanceStreamingConfigurations' {} a -> s {appInstanceArn = a} :: PutAppInstanceStreamingConfigurations)
+
+-- | The streaming configurations set for an @AppInstance@.
+putAppInstanceStreamingConfigurations_appInstanceStreamingConfigurations :: Lens.Lens' PutAppInstanceStreamingConfigurations (Prelude.NonEmpty AppInstanceStreamingConfiguration)
+putAppInstanceStreamingConfigurations_appInstanceStreamingConfigurations = Lens.lens (\PutAppInstanceStreamingConfigurations' {appInstanceStreamingConfigurations} -> appInstanceStreamingConfigurations) (\s@PutAppInstanceStreamingConfigurations' {} a -> s {appInstanceStreamingConfigurations = a} :: PutAppInstanceStreamingConfigurations) Prelude.. Lens.coerced
+
+instance
+  Core.AWSRequest
+    PutAppInstanceStreamingConfigurations
+  where
+  type
+    AWSResponse
+      PutAppInstanceStreamingConfigurations =
+      PutAppInstanceStreamingConfigurationsResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          PutAppInstanceStreamingConfigurationsResponse'
+            Prelude.<$> (x Data..?> "AppInstanceStreamingConfigurations")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    PutAppInstanceStreamingConfigurations
+  where
+  hashWithSalt
+    _salt
+    PutAppInstanceStreamingConfigurations' {..} =
+      _salt
+        `Prelude.hashWithSalt` appInstanceArn
+        `Prelude.hashWithSalt` appInstanceStreamingConfigurations
+
+instance
+  Prelude.NFData
+    PutAppInstanceStreamingConfigurations
+  where
+  rnf PutAppInstanceStreamingConfigurations' {..} =
+    Prelude.rnf appInstanceArn
+      `Prelude.seq` Prelude.rnf appInstanceStreamingConfigurations
+
+instance
+  Data.ToHeaders
+    PutAppInstanceStreamingConfigurations
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToJSON
+    PutAppInstanceStreamingConfigurations
+  where
+  toJSON PutAppInstanceStreamingConfigurations' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "AppInstanceStreamingConfigurations"
+                  Data..= appInstanceStreamingConfigurations
+              )
+          ]
+      )
+
+instance
+  Data.ToPath
+    PutAppInstanceStreamingConfigurations
+  where
+  toPath PutAppInstanceStreamingConfigurations' {..} =
+    Prelude.mconcat
+      [ "/app-instances/",
+        Data.toBS appInstanceArn,
+        "/streaming-configurations"
+      ]
+
+instance
+  Data.ToQuery
+    PutAppInstanceStreamingConfigurations
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newPutAppInstanceStreamingConfigurationsResponse' smart constructor.
+data PutAppInstanceStreamingConfigurationsResponse = PutAppInstanceStreamingConfigurationsResponse'
+  { -- | The streaming configurations of an @AppInstance@.
+    appInstanceStreamingConfigurations :: Prelude.Maybe (Prelude.NonEmpty AppInstanceStreamingConfiguration),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutAppInstanceStreamingConfigurationsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceStreamingConfigurations', 'putAppInstanceStreamingConfigurationsResponse_appInstanceStreamingConfigurations' - The streaming configurations of an @AppInstance@.
+--
+-- 'httpStatus', 'putAppInstanceStreamingConfigurationsResponse_httpStatus' - The response's http status code.
+newPutAppInstanceStreamingConfigurationsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  PutAppInstanceStreamingConfigurationsResponse
+newPutAppInstanceStreamingConfigurationsResponse
+  pHttpStatus_ =
+    PutAppInstanceStreamingConfigurationsResponse'
+      { appInstanceStreamingConfigurations =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The streaming configurations of an @AppInstance@.
+putAppInstanceStreamingConfigurationsResponse_appInstanceStreamingConfigurations :: Lens.Lens' PutAppInstanceStreamingConfigurationsResponse (Prelude.Maybe (Prelude.NonEmpty AppInstanceStreamingConfiguration))
+putAppInstanceStreamingConfigurationsResponse_appInstanceStreamingConfigurations = Lens.lens (\PutAppInstanceStreamingConfigurationsResponse' {appInstanceStreamingConfigurations} -> appInstanceStreamingConfigurations) (\s@PutAppInstanceStreamingConfigurationsResponse' {} a -> s {appInstanceStreamingConfigurations = a} :: PutAppInstanceStreamingConfigurationsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+putAppInstanceStreamingConfigurationsResponse_httpStatus :: Lens.Lens' PutAppInstanceStreamingConfigurationsResponse Prelude.Int
+putAppInstanceStreamingConfigurationsResponse_httpStatus = Lens.lens (\PutAppInstanceStreamingConfigurationsResponse' {httpStatus} -> httpStatus) (\s@PutAppInstanceStreamingConfigurationsResponse' {} a -> s {httpStatus = a} :: PutAppInstanceStreamingConfigurationsResponse)
+
+instance
+  Prelude.NFData
+    PutAppInstanceStreamingConfigurationsResponse
+  where
+  rnf
+    PutAppInstanceStreamingConfigurationsResponse' {..} =
+      Prelude.rnf appInstanceStreamingConfigurations
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/PutEventsConfiguration.hs b/gen/Amazonka/Chime/PutEventsConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/PutEventsConfiguration.hs
@@ -0,0 +1,214 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.PutEventsConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an events configuration that allows a bot to receive outgoing
+-- events sent by Amazon Chime. Choose either an HTTPS endpoint or a Lambda
+-- function ARN. For more information, see Bot.
+module Amazonka.Chime.PutEventsConfiguration
+  ( -- * Creating a Request
+    PutEventsConfiguration (..),
+    newPutEventsConfiguration,
+
+    -- * Request Lenses
+    putEventsConfiguration_lambdaFunctionArn,
+    putEventsConfiguration_outboundEventsHTTPSEndpoint,
+    putEventsConfiguration_accountId,
+    putEventsConfiguration_botId,
+
+    -- * Destructuring the Response
+    PutEventsConfigurationResponse (..),
+    newPutEventsConfigurationResponse,
+
+    -- * Response Lenses
+    putEventsConfigurationResponse_eventsConfiguration,
+    putEventsConfigurationResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newPutEventsConfiguration' smart constructor.
+data PutEventsConfiguration = PutEventsConfiguration'
+  { -- | Lambda function ARN that allows the bot to receive outgoing events.
+    lambdaFunctionArn :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | HTTPS endpoint that allows the bot to receive outgoing events.
+    outboundEventsHTTPSEndpoint :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The bot ID.
+    botId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutEventsConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lambdaFunctionArn', 'putEventsConfiguration_lambdaFunctionArn' - Lambda function ARN that allows the bot to receive outgoing events.
+--
+-- 'outboundEventsHTTPSEndpoint', 'putEventsConfiguration_outboundEventsHTTPSEndpoint' - HTTPS endpoint that allows the bot to receive outgoing events.
+--
+-- 'accountId', 'putEventsConfiguration_accountId' - The Amazon Chime account ID.
+--
+-- 'botId', 'putEventsConfiguration_botId' - The bot ID.
+newPutEventsConfiguration ::
+  -- | 'accountId'
+  Prelude.Text ->
+  -- | 'botId'
+  Prelude.Text ->
+  PutEventsConfiguration
+newPutEventsConfiguration pAccountId_ pBotId_ =
+  PutEventsConfiguration'
+    { lambdaFunctionArn =
+        Prelude.Nothing,
+      outboundEventsHTTPSEndpoint = Prelude.Nothing,
+      accountId = pAccountId_,
+      botId = pBotId_
+    }
+
+-- | Lambda function ARN that allows the bot to receive outgoing events.
+putEventsConfiguration_lambdaFunctionArn :: Lens.Lens' PutEventsConfiguration (Prelude.Maybe Prelude.Text)
+putEventsConfiguration_lambdaFunctionArn = Lens.lens (\PutEventsConfiguration' {lambdaFunctionArn} -> lambdaFunctionArn) (\s@PutEventsConfiguration' {} a -> s {lambdaFunctionArn = a} :: PutEventsConfiguration) Prelude.. Lens.mapping Data._Sensitive
+
+-- | HTTPS endpoint that allows the bot to receive outgoing events.
+putEventsConfiguration_outboundEventsHTTPSEndpoint :: Lens.Lens' PutEventsConfiguration (Prelude.Maybe Prelude.Text)
+putEventsConfiguration_outboundEventsHTTPSEndpoint = Lens.lens (\PutEventsConfiguration' {outboundEventsHTTPSEndpoint} -> outboundEventsHTTPSEndpoint) (\s@PutEventsConfiguration' {} a -> s {outboundEventsHTTPSEndpoint = a} :: PutEventsConfiguration) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The Amazon Chime account ID.
+putEventsConfiguration_accountId :: Lens.Lens' PutEventsConfiguration Prelude.Text
+putEventsConfiguration_accountId = Lens.lens (\PutEventsConfiguration' {accountId} -> accountId) (\s@PutEventsConfiguration' {} a -> s {accountId = a} :: PutEventsConfiguration)
+
+-- | The bot ID.
+putEventsConfiguration_botId :: Lens.Lens' PutEventsConfiguration Prelude.Text
+putEventsConfiguration_botId = Lens.lens (\PutEventsConfiguration' {botId} -> botId) (\s@PutEventsConfiguration' {} a -> s {botId = a} :: PutEventsConfiguration)
+
+instance Core.AWSRequest PutEventsConfiguration where
+  type
+    AWSResponse PutEventsConfiguration =
+      PutEventsConfigurationResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          PutEventsConfigurationResponse'
+            Prelude.<$> (x Data..?> "EventsConfiguration")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable PutEventsConfiguration where
+  hashWithSalt _salt PutEventsConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` lambdaFunctionArn
+      `Prelude.hashWithSalt` outboundEventsHTTPSEndpoint
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` botId
+
+instance Prelude.NFData PutEventsConfiguration where
+  rnf PutEventsConfiguration' {..} =
+    Prelude.rnf lambdaFunctionArn
+      `Prelude.seq` Prelude.rnf outboundEventsHTTPSEndpoint
+      `Prelude.seq` Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf botId
+
+instance Data.ToHeaders PutEventsConfiguration where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON PutEventsConfiguration where
+  toJSON PutEventsConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("LambdaFunctionArn" Data..=)
+              Prelude.<$> lambdaFunctionArn,
+            ("OutboundEventsHTTPSEndpoint" Data..=)
+              Prelude.<$> outboundEventsHTTPSEndpoint
+          ]
+      )
+
+instance Data.ToPath PutEventsConfiguration where
+  toPath PutEventsConfiguration' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS accountId,
+        "/bots/",
+        Data.toBS botId,
+        "/events-configuration"
+      ]
+
+instance Data.ToQuery PutEventsConfiguration where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newPutEventsConfigurationResponse' smart constructor.
+data PutEventsConfigurationResponse = PutEventsConfigurationResponse'
+  { eventsConfiguration :: Prelude.Maybe EventsConfiguration,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutEventsConfigurationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'eventsConfiguration', 'putEventsConfigurationResponse_eventsConfiguration' - Undocumented member.
+--
+-- 'httpStatus', 'putEventsConfigurationResponse_httpStatus' - The response's http status code.
+newPutEventsConfigurationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  PutEventsConfigurationResponse
+newPutEventsConfigurationResponse pHttpStatus_ =
+  PutEventsConfigurationResponse'
+    { eventsConfiguration =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+putEventsConfigurationResponse_eventsConfiguration :: Lens.Lens' PutEventsConfigurationResponse (Prelude.Maybe EventsConfiguration)
+putEventsConfigurationResponse_eventsConfiguration = Lens.lens (\PutEventsConfigurationResponse' {eventsConfiguration} -> eventsConfiguration) (\s@PutEventsConfigurationResponse' {} a -> s {eventsConfiguration = a} :: PutEventsConfigurationResponse)
+
+-- | The response's http status code.
+putEventsConfigurationResponse_httpStatus :: Lens.Lens' PutEventsConfigurationResponse Prelude.Int
+putEventsConfigurationResponse_httpStatus = Lens.lens (\PutEventsConfigurationResponse' {httpStatus} -> httpStatus) (\s@PutEventsConfigurationResponse' {} a -> s {httpStatus = a} :: PutEventsConfigurationResponse)
+
+instance
+  Prelude.NFData
+    PutEventsConfigurationResponse
+  where
+  rnf PutEventsConfigurationResponse' {..} =
+    Prelude.rnf eventsConfiguration
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/PutRetentionSettings.hs b/gen/Amazonka/Chime/PutRetentionSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/PutRetentionSettings.hs
@@ -0,0 +1,208 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.PutRetentionSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Puts retention settings for the specified Amazon Chime Enterprise
+-- account. We recommend using AWS CloudTrail to monitor usage of this API
+-- for your account. For more information, see
+-- <https://docs.aws.amazon.com/chime/latest/ag/cloudtrail.html Logging Amazon Chime API Calls with AWS CloudTrail>
+-- in the /Amazon Chime Administration Guide/.
+--
+-- To turn off existing retention settings, remove the number of days from
+-- the corresponding __RetentionDays__ field in the __RetentionSettings__
+-- object. For more information about retention settings, see
+-- <https://docs.aws.amazon.com/chime/latest/ag/chat-retention.html Managing Chat Retention Policies>
+-- in the /Amazon Chime Administration Guide/.
+module Amazonka.Chime.PutRetentionSettings
+  ( -- * Creating a Request
+    PutRetentionSettings (..),
+    newPutRetentionSettings,
+
+    -- * Request Lenses
+    putRetentionSettings_accountId,
+    putRetentionSettings_retentionSettings,
+
+    -- * Destructuring the Response
+    PutRetentionSettingsResponse (..),
+    newPutRetentionSettingsResponse,
+
+    -- * Response Lenses
+    putRetentionSettingsResponse_initiateDeletionTimestamp,
+    putRetentionSettingsResponse_retentionSettings,
+    putRetentionSettingsResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newPutRetentionSettings' smart constructor.
+data PutRetentionSettings = PutRetentionSettings'
+  { -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The retention settings.
+    retentionSettings :: RetentionSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutRetentionSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'putRetentionSettings_accountId' - The Amazon Chime account ID.
+--
+-- 'retentionSettings', 'putRetentionSettings_retentionSettings' - The retention settings.
+newPutRetentionSettings ::
+  -- | 'accountId'
+  Prelude.Text ->
+  -- | 'retentionSettings'
+  RetentionSettings ->
+  PutRetentionSettings
+newPutRetentionSettings
+  pAccountId_
+  pRetentionSettings_ =
+    PutRetentionSettings'
+      { accountId = pAccountId_,
+        retentionSettings = pRetentionSettings_
+      }
+
+-- | The Amazon Chime account ID.
+putRetentionSettings_accountId :: Lens.Lens' PutRetentionSettings Prelude.Text
+putRetentionSettings_accountId = Lens.lens (\PutRetentionSettings' {accountId} -> accountId) (\s@PutRetentionSettings' {} a -> s {accountId = a} :: PutRetentionSettings)
+
+-- | The retention settings.
+putRetentionSettings_retentionSettings :: Lens.Lens' PutRetentionSettings RetentionSettings
+putRetentionSettings_retentionSettings = Lens.lens (\PutRetentionSettings' {retentionSettings} -> retentionSettings) (\s@PutRetentionSettings' {} a -> s {retentionSettings = a} :: PutRetentionSettings)
+
+instance Core.AWSRequest PutRetentionSettings where
+  type
+    AWSResponse PutRetentionSettings =
+      PutRetentionSettingsResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          PutRetentionSettingsResponse'
+            Prelude.<$> (x Data..?> "InitiateDeletionTimestamp")
+            Prelude.<*> (x Data..?> "RetentionSettings")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable PutRetentionSettings where
+  hashWithSalt _salt PutRetentionSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` retentionSettings
+
+instance Prelude.NFData PutRetentionSettings where
+  rnf PutRetentionSettings' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf retentionSettings
+
+instance Data.ToHeaders PutRetentionSettings where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON PutRetentionSettings where
+  toJSON PutRetentionSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("RetentionSettings" Data..= retentionSettings)
+          ]
+      )
+
+instance Data.ToPath PutRetentionSettings where
+  toPath PutRetentionSettings' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS accountId,
+        "/retention-settings"
+      ]
+
+instance Data.ToQuery PutRetentionSettings where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newPutRetentionSettingsResponse' smart constructor.
+data PutRetentionSettingsResponse = PutRetentionSettingsResponse'
+  { -- | The timestamp representing the time at which the specified items are
+    -- permanently deleted, in ISO 8601 format.
+    initiateDeletionTimestamp :: Prelude.Maybe Data.ISO8601,
+    -- | The retention settings.
+    retentionSettings :: Prelude.Maybe RetentionSettings,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutRetentionSettingsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'initiateDeletionTimestamp', 'putRetentionSettingsResponse_initiateDeletionTimestamp' - The timestamp representing the time at which the specified items are
+-- permanently deleted, in ISO 8601 format.
+--
+-- 'retentionSettings', 'putRetentionSettingsResponse_retentionSettings' - The retention settings.
+--
+-- 'httpStatus', 'putRetentionSettingsResponse_httpStatus' - The response's http status code.
+newPutRetentionSettingsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  PutRetentionSettingsResponse
+newPutRetentionSettingsResponse pHttpStatus_ =
+  PutRetentionSettingsResponse'
+    { initiateDeletionTimestamp =
+        Prelude.Nothing,
+      retentionSettings = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The timestamp representing the time at which the specified items are
+-- permanently deleted, in ISO 8601 format.
+putRetentionSettingsResponse_initiateDeletionTimestamp :: Lens.Lens' PutRetentionSettingsResponse (Prelude.Maybe Prelude.UTCTime)
+putRetentionSettingsResponse_initiateDeletionTimestamp = Lens.lens (\PutRetentionSettingsResponse' {initiateDeletionTimestamp} -> initiateDeletionTimestamp) (\s@PutRetentionSettingsResponse' {} a -> s {initiateDeletionTimestamp = a} :: PutRetentionSettingsResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The retention settings.
+putRetentionSettingsResponse_retentionSettings :: Lens.Lens' PutRetentionSettingsResponse (Prelude.Maybe RetentionSettings)
+putRetentionSettingsResponse_retentionSettings = Lens.lens (\PutRetentionSettingsResponse' {retentionSettings} -> retentionSettings) (\s@PutRetentionSettingsResponse' {} a -> s {retentionSettings = a} :: PutRetentionSettingsResponse)
+
+-- | The response's http status code.
+putRetentionSettingsResponse_httpStatus :: Lens.Lens' PutRetentionSettingsResponse Prelude.Int
+putRetentionSettingsResponse_httpStatus = Lens.lens (\PutRetentionSettingsResponse' {httpStatus} -> httpStatus) (\s@PutRetentionSettingsResponse' {} a -> s {httpStatus = a} :: PutRetentionSettingsResponse)
+
+instance Prelude.NFData PutRetentionSettingsResponse where
+  rnf PutRetentionSettingsResponse' {..} =
+    Prelude.rnf initiateDeletionTimestamp
+      `Prelude.seq` Prelude.rnf retentionSettings
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/PutSipMediaApplicationLoggingConfiguration.hs b/gen/Amazonka/Chime/PutSipMediaApplicationLoggingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/PutSipMediaApplicationLoggingConfiguration.hs
@@ -0,0 +1,216 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.PutSipMediaApplicationLoggingConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the logging configuration for the specified SIP media
+-- application.
+module Amazonka.Chime.PutSipMediaApplicationLoggingConfiguration
+  ( -- * Creating a Request
+    PutSipMediaApplicationLoggingConfiguration (..),
+    newPutSipMediaApplicationLoggingConfiguration,
+
+    -- * Request Lenses
+    putSipMediaApplicationLoggingConfiguration_sipMediaApplicationLoggingConfiguration,
+    putSipMediaApplicationLoggingConfiguration_sipMediaApplicationId,
+
+    -- * Destructuring the Response
+    PutSipMediaApplicationLoggingConfigurationResponse (..),
+    newPutSipMediaApplicationLoggingConfigurationResponse,
+
+    -- * Response Lenses
+    putSipMediaApplicationLoggingConfigurationResponse_sipMediaApplicationLoggingConfiguration,
+    putSipMediaApplicationLoggingConfigurationResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newPutSipMediaApplicationLoggingConfiguration' smart constructor.
+data PutSipMediaApplicationLoggingConfiguration = PutSipMediaApplicationLoggingConfiguration'
+  { -- | The actual logging configuration.
+    sipMediaApplicationLoggingConfiguration :: Prelude.Maybe SipMediaApplicationLoggingConfiguration,
+    -- | The SIP media application ID.
+    sipMediaApplicationId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutSipMediaApplicationLoggingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sipMediaApplicationLoggingConfiguration', 'putSipMediaApplicationLoggingConfiguration_sipMediaApplicationLoggingConfiguration' - The actual logging configuration.
+--
+-- 'sipMediaApplicationId', 'putSipMediaApplicationLoggingConfiguration_sipMediaApplicationId' - The SIP media application ID.
+newPutSipMediaApplicationLoggingConfiguration ::
+  -- | 'sipMediaApplicationId'
+  Prelude.Text ->
+  PutSipMediaApplicationLoggingConfiguration
+newPutSipMediaApplicationLoggingConfiguration
+  pSipMediaApplicationId_ =
+    PutSipMediaApplicationLoggingConfiguration'
+      { sipMediaApplicationLoggingConfiguration =
+          Prelude.Nothing,
+        sipMediaApplicationId =
+          pSipMediaApplicationId_
+      }
+
+-- | The actual logging configuration.
+putSipMediaApplicationLoggingConfiguration_sipMediaApplicationLoggingConfiguration :: Lens.Lens' PutSipMediaApplicationLoggingConfiguration (Prelude.Maybe SipMediaApplicationLoggingConfiguration)
+putSipMediaApplicationLoggingConfiguration_sipMediaApplicationLoggingConfiguration = Lens.lens (\PutSipMediaApplicationLoggingConfiguration' {sipMediaApplicationLoggingConfiguration} -> sipMediaApplicationLoggingConfiguration) (\s@PutSipMediaApplicationLoggingConfiguration' {} a -> s {sipMediaApplicationLoggingConfiguration = a} :: PutSipMediaApplicationLoggingConfiguration)
+
+-- | The SIP media application ID.
+putSipMediaApplicationLoggingConfiguration_sipMediaApplicationId :: Lens.Lens' PutSipMediaApplicationLoggingConfiguration Prelude.Text
+putSipMediaApplicationLoggingConfiguration_sipMediaApplicationId = Lens.lens (\PutSipMediaApplicationLoggingConfiguration' {sipMediaApplicationId} -> sipMediaApplicationId) (\s@PutSipMediaApplicationLoggingConfiguration' {} a -> s {sipMediaApplicationId = a} :: PutSipMediaApplicationLoggingConfiguration)
+
+instance
+  Core.AWSRequest
+    PutSipMediaApplicationLoggingConfiguration
+  where
+  type
+    AWSResponse
+      PutSipMediaApplicationLoggingConfiguration =
+      PutSipMediaApplicationLoggingConfigurationResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          PutSipMediaApplicationLoggingConfigurationResponse'
+            Prelude.<$> ( x
+                            Data..?> "SipMediaApplicationLoggingConfiguration"
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    PutSipMediaApplicationLoggingConfiguration
+  where
+  hashWithSalt
+    _salt
+    PutSipMediaApplicationLoggingConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` sipMediaApplicationLoggingConfiguration
+        `Prelude.hashWithSalt` sipMediaApplicationId
+
+instance
+  Prelude.NFData
+    PutSipMediaApplicationLoggingConfiguration
+  where
+  rnf PutSipMediaApplicationLoggingConfiguration' {..} =
+    Prelude.rnf sipMediaApplicationLoggingConfiguration
+      `Prelude.seq` Prelude.rnf sipMediaApplicationId
+
+instance
+  Data.ToHeaders
+    PutSipMediaApplicationLoggingConfiguration
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToJSON
+    PutSipMediaApplicationLoggingConfiguration
+  where
+  toJSON
+    PutSipMediaApplicationLoggingConfiguration' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ ("SipMediaApplicationLoggingConfiguration" Data..=)
+                Prelude.<$> sipMediaApplicationLoggingConfiguration
+            ]
+        )
+
+instance
+  Data.ToPath
+    PutSipMediaApplicationLoggingConfiguration
+  where
+  toPath
+    PutSipMediaApplicationLoggingConfiguration' {..} =
+      Prelude.mconcat
+        [ "/sip-media-applications/",
+          Data.toBS sipMediaApplicationId,
+          "/logging-configuration"
+        ]
+
+instance
+  Data.ToQuery
+    PutSipMediaApplicationLoggingConfiguration
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newPutSipMediaApplicationLoggingConfigurationResponse' smart constructor.
+data PutSipMediaApplicationLoggingConfigurationResponse = PutSipMediaApplicationLoggingConfigurationResponse'
+  { sipMediaApplicationLoggingConfiguration :: Prelude.Maybe SipMediaApplicationLoggingConfiguration,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutSipMediaApplicationLoggingConfigurationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sipMediaApplicationLoggingConfiguration', 'putSipMediaApplicationLoggingConfigurationResponse_sipMediaApplicationLoggingConfiguration' - Undocumented member.
+--
+-- 'httpStatus', 'putSipMediaApplicationLoggingConfigurationResponse_httpStatus' - The response's http status code.
+newPutSipMediaApplicationLoggingConfigurationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  PutSipMediaApplicationLoggingConfigurationResponse
+newPutSipMediaApplicationLoggingConfigurationResponse
+  pHttpStatus_ =
+    PutSipMediaApplicationLoggingConfigurationResponse'
+      { sipMediaApplicationLoggingConfiguration =
+          Prelude.Nothing,
+        httpStatus =
+          pHttpStatus_
+      }
+
+-- | Undocumented member.
+putSipMediaApplicationLoggingConfigurationResponse_sipMediaApplicationLoggingConfiguration :: Lens.Lens' PutSipMediaApplicationLoggingConfigurationResponse (Prelude.Maybe SipMediaApplicationLoggingConfiguration)
+putSipMediaApplicationLoggingConfigurationResponse_sipMediaApplicationLoggingConfiguration = Lens.lens (\PutSipMediaApplicationLoggingConfigurationResponse' {sipMediaApplicationLoggingConfiguration} -> sipMediaApplicationLoggingConfiguration) (\s@PutSipMediaApplicationLoggingConfigurationResponse' {} a -> s {sipMediaApplicationLoggingConfiguration = a} :: PutSipMediaApplicationLoggingConfigurationResponse)
+
+-- | The response's http status code.
+putSipMediaApplicationLoggingConfigurationResponse_httpStatus :: Lens.Lens' PutSipMediaApplicationLoggingConfigurationResponse Prelude.Int
+putSipMediaApplicationLoggingConfigurationResponse_httpStatus = Lens.lens (\PutSipMediaApplicationLoggingConfigurationResponse' {httpStatus} -> httpStatus) (\s@PutSipMediaApplicationLoggingConfigurationResponse' {} a -> s {httpStatus = a} :: PutSipMediaApplicationLoggingConfigurationResponse)
+
+instance
+  Prelude.NFData
+    PutSipMediaApplicationLoggingConfigurationResponse
+  where
+  rnf
+    PutSipMediaApplicationLoggingConfigurationResponse' {..} =
+      Prelude.rnf sipMediaApplicationLoggingConfiguration
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/PutVoiceConnectorEmergencyCallingConfiguration.hs b/gen/Amazonka/Chime/PutVoiceConnectorEmergencyCallingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/PutVoiceConnectorEmergencyCallingConfiguration.hs
@@ -0,0 +1,223 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.PutVoiceConnectorEmergencyCallingConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Puts emergency calling configuration details to the specified Amazon
+-- Chime Voice Connector, such as emergency phone numbers and calling
+-- countries. Origination and termination settings must be enabled for the
+-- Amazon Chime Voice Connector before emergency calling can be configured.
+module Amazonka.Chime.PutVoiceConnectorEmergencyCallingConfiguration
+  ( -- * Creating a Request
+    PutVoiceConnectorEmergencyCallingConfiguration (..),
+    newPutVoiceConnectorEmergencyCallingConfiguration,
+
+    -- * Request Lenses
+    putVoiceConnectorEmergencyCallingConfiguration_voiceConnectorId,
+    putVoiceConnectorEmergencyCallingConfiguration_emergencyCallingConfiguration,
+
+    -- * Destructuring the Response
+    PutVoiceConnectorEmergencyCallingConfigurationResponse (..),
+    newPutVoiceConnectorEmergencyCallingConfigurationResponse,
+
+    -- * Response Lenses
+    putVoiceConnectorEmergencyCallingConfigurationResponse_emergencyCallingConfiguration,
+    putVoiceConnectorEmergencyCallingConfigurationResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newPutVoiceConnectorEmergencyCallingConfiguration' smart constructor.
+data PutVoiceConnectorEmergencyCallingConfiguration = PutVoiceConnectorEmergencyCallingConfiguration'
+  { -- | The Amazon Chime Voice Connector ID.
+    voiceConnectorId :: Prelude.Text,
+    -- | The emergency calling configuration details.
+    emergencyCallingConfiguration :: EmergencyCallingConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutVoiceConnectorEmergencyCallingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorId', 'putVoiceConnectorEmergencyCallingConfiguration_voiceConnectorId' - The Amazon Chime Voice Connector ID.
+--
+-- 'emergencyCallingConfiguration', 'putVoiceConnectorEmergencyCallingConfiguration_emergencyCallingConfiguration' - The emergency calling configuration details.
+newPutVoiceConnectorEmergencyCallingConfiguration ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  -- | 'emergencyCallingConfiguration'
+  EmergencyCallingConfiguration ->
+  PutVoiceConnectorEmergencyCallingConfiguration
+newPutVoiceConnectorEmergencyCallingConfiguration
+  pVoiceConnectorId_
+  pEmergencyCallingConfiguration_ =
+    PutVoiceConnectorEmergencyCallingConfiguration'
+      { voiceConnectorId =
+          pVoiceConnectorId_,
+        emergencyCallingConfiguration =
+          pEmergencyCallingConfiguration_
+      }
+
+-- | The Amazon Chime Voice Connector ID.
+putVoiceConnectorEmergencyCallingConfiguration_voiceConnectorId :: Lens.Lens' PutVoiceConnectorEmergencyCallingConfiguration Prelude.Text
+putVoiceConnectorEmergencyCallingConfiguration_voiceConnectorId = Lens.lens (\PutVoiceConnectorEmergencyCallingConfiguration' {voiceConnectorId} -> voiceConnectorId) (\s@PutVoiceConnectorEmergencyCallingConfiguration' {} a -> s {voiceConnectorId = a} :: PutVoiceConnectorEmergencyCallingConfiguration)
+
+-- | The emergency calling configuration details.
+putVoiceConnectorEmergencyCallingConfiguration_emergencyCallingConfiguration :: Lens.Lens' PutVoiceConnectorEmergencyCallingConfiguration EmergencyCallingConfiguration
+putVoiceConnectorEmergencyCallingConfiguration_emergencyCallingConfiguration = Lens.lens (\PutVoiceConnectorEmergencyCallingConfiguration' {emergencyCallingConfiguration} -> emergencyCallingConfiguration) (\s@PutVoiceConnectorEmergencyCallingConfiguration' {} a -> s {emergencyCallingConfiguration = a} :: PutVoiceConnectorEmergencyCallingConfiguration)
+
+instance
+  Core.AWSRequest
+    PutVoiceConnectorEmergencyCallingConfiguration
+  where
+  type
+    AWSResponse
+      PutVoiceConnectorEmergencyCallingConfiguration =
+      PutVoiceConnectorEmergencyCallingConfigurationResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          PutVoiceConnectorEmergencyCallingConfigurationResponse'
+            Prelude.<$> (x Data..?> "EmergencyCallingConfiguration")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    PutVoiceConnectorEmergencyCallingConfiguration
+  where
+  hashWithSalt
+    _salt
+    PutVoiceConnectorEmergencyCallingConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` voiceConnectorId
+        `Prelude.hashWithSalt` emergencyCallingConfiguration
+
+instance
+  Prelude.NFData
+    PutVoiceConnectorEmergencyCallingConfiguration
+  where
+  rnf
+    PutVoiceConnectorEmergencyCallingConfiguration' {..} =
+      Prelude.rnf voiceConnectorId
+        `Prelude.seq` Prelude.rnf emergencyCallingConfiguration
+
+instance
+  Data.ToHeaders
+    PutVoiceConnectorEmergencyCallingConfiguration
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToJSON
+    PutVoiceConnectorEmergencyCallingConfiguration
+  where
+  toJSON
+    PutVoiceConnectorEmergencyCallingConfiguration' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ Prelude.Just
+                ( "EmergencyCallingConfiguration"
+                    Data..= emergencyCallingConfiguration
+                )
+            ]
+        )
+
+instance
+  Data.ToPath
+    PutVoiceConnectorEmergencyCallingConfiguration
+  where
+  toPath
+    PutVoiceConnectorEmergencyCallingConfiguration' {..} =
+      Prelude.mconcat
+        [ "/voice-connectors/",
+          Data.toBS voiceConnectorId,
+          "/emergency-calling-configuration"
+        ]
+
+instance
+  Data.ToQuery
+    PutVoiceConnectorEmergencyCallingConfiguration
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newPutVoiceConnectorEmergencyCallingConfigurationResponse' smart constructor.
+data PutVoiceConnectorEmergencyCallingConfigurationResponse = PutVoiceConnectorEmergencyCallingConfigurationResponse'
+  { -- | The emergency calling configuration details.
+    emergencyCallingConfiguration :: Prelude.Maybe EmergencyCallingConfiguration,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutVoiceConnectorEmergencyCallingConfigurationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'emergencyCallingConfiguration', 'putVoiceConnectorEmergencyCallingConfigurationResponse_emergencyCallingConfiguration' - The emergency calling configuration details.
+--
+-- 'httpStatus', 'putVoiceConnectorEmergencyCallingConfigurationResponse_httpStatus' - The response's http status code.
+newPutVoiceConnectorEmergencyCallingConfigurationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  PutVoiceConnectorEmergencyCallingConfigurationResponse
+newPutVoiceConnectorEmergencyCallingConfigurationResponse
+  pHttpStatus_ =
+    PutVoiceConnectorEmergencyCallingConfigurationResponse'
+      { emergencyCallingConfiguration =
+          Prelude.Nothing,
+        httpStatus =
+          pHttpStatus_
+      }
+
+-- | The emergency calling configuration details.
+putVoiceConnectorEmergencyCallingConfigurationResponse_emergencyCallingConfiguration :: Lens.Lens' PutVoiceConnectorEmergencyCallingConfigurationResponse (Prelude.Maybe EmergencyCallingConfiguration)
+putVoiceConnectorEmergencyCallingConfigurationResponse_emergencyCallingConfiguration = Lens.lens (\PutVoiceConnectorEmergencyCallingConfigurationResponse' {emergencyCallingConfiguration} -> emergencyCallingConfiguration) (\s@PutVoiceConnectorEmergencyCallingConfigurationResponse' {} a -> s {emergencyCallingConfiguration = a} :: PutVoiceConnectorEmergencyCallingConfigurationResponse)
+
+-- | The response's http status code.
+putVoiceConnectorEmergencyCallingConfigurationResponse_httpStatus :: Lens.Lens' PutVoiceConnectorEmergencyCallingConfigurationResponse Prelude.Int
+putVoiceConnectorEmergencyCallingConfigurationResponse_httpStatus = Lens.lens (\PutVoiceConnectorEmergencyCallingConfigurationResponse' {httpStatus} -> httpStatus) (\s@PutVoiceConnectorEmergencyCallingConfigurationResponse' {} a -> s {httpStatus = a} :: PutVoiceConnectorEmergencyCallingConfigurationResponse)
+
+instance
+  Prelude.NFData
+    PutVoiceConnectorEmergencyCallingConfigurationResponse
+  where
+  rnf
+    PutVoiceConnectorEmergencyCallingConfigurationResponse' {..} =
+      Prelude.rnf emergencyCallingConfiguration
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/PutVoiceConnectorLoggingConfiguration.hs b/gen/Amazonka/Chime/PutVoiceConnectorLoggingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/PutVoiceConnectorLoggingConfiguration.hs
@@ -0,0 +1,218 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.PutVoiceConnectorLoggingConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds a logging configuration for the specified Amazon Chime Voice
+-- Connector. The logging configuration specifies whether SIP message logs
+-- are enabled for sending to Amazon CloudWatch Logs.
+module Amazonka.Chime.PutVoiceConnectorLoggingConfiguration
+  ( -- * Creating a Request
+    PutVoiceConnectorLoggingConfiguration (..),
+    newPutVoiceConnectorLoggingConfiguration,
+
+    -- * Request Lenses
+    putVoiceConnectorLoggingConfiguration_voiceConnectorId,
+    putVoiceConnectorLoggingConfiguration_loggingConfiguration,
+
+    -- * Destructuring the Response
+    PutVoiceConnectorLoggingConfigurationResponse (..),
+    newPutVoiceConnectorLoggingConfigurationResponse,
+
+    -- * Response Lenses
+    putVoiceConnectorLoggingConfigurationResponse_loggingConfiguration,
+    putVoiceConnectorLoggingConfigurationResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newPutVoiceConnectorLoggingConfiguration' smart constructor.
+data PutVoiceConnectorLoggingConfiguration = PutVoiceConnectorLoggingConfiguration'
+  { -- | The Amazon Chime Voice Connector ID.
+    voiceConnectorId :: Prelude.Text,
+    -- | The logging configuration details to add.
+    loggingConfiguration :: LoggingConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutVoiceConnectorLoggingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorId', 'putVoiceConnectorLoggingConfiguration_voiceConnectorId' - The Amazon Chime Voice Connector ID.
+--
+-- 'loggingConfiguration', 'putVoiceConnectorLoggingConfiguration_loggingConfiguration' - The logging configuration details to add.
+newPutVoiceConnectorLoggingConfiguration ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  -- | 'loggingConfiguration'
+  LoggingConfiguration ->
+  PutVoiceConnectorLoggingConfiguration
+newPutVoiceConnectorLoggingConfiguration
+  pVoiceConnectorId_
+  pLoggingConfiguration_ =
+    PutVoiceConnectorLoggingConfiguration'
+      { voiceConnectorId =
+          pVoiceConnectorId_,
+        loggingConfiguration =
+          pLoggingConfiguration_
+      }
+
+-- | The Amazon Chime Voice Connector ID.
+putVoiceConnectorLoggingConfiguration_voiceConnectorId :: Lens.Lens' PutVoiceConnectorLoggingConfiguration Prelude.Text
+putVoiceConnectorLoggingConfiguration_voiceConnectorId = Lens.lens (\PutVoiceConnectorLoggingConfiguration' {voiceConnectorId} -> voiceConnectorId) (\s@PutVoiceConnectorLoggingConfiguration' {} a -> s {voiceConnectorId = a} :: PutVoiceConnectorLoggingConfiguration)
+
+-- | The logging configuration details to add.
+putVoiceConnectorLoggingConfiguration_loggingConfiguration :: Lens.Lens' PutVoiceConnectorLoggingConfiguration LoggingConfiguration
+putVoiceConnectorLoggingConfiguration_loggingConfiguration = Lens.lens (\PutVoiceConnectorLoggingConfiguration' {loggingConfiguration} -> loggingConfiguration) (\s@PutVoiceConnectorLoggingConfiguration' {} a -> s {loggingConfiguration = a} :: PutVoiceConnectorLoggingConfiguration)
+
+instance
+  Core.AWSRequest
+    PutVoiceConnectorLoggingConfiguration
+  where
+  type
+    AWSResponse
+      PutVoiceConnectorLoggingConfiguration =
+      PutVoiceConnectorLoggingConfigurationResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          PutVoiceConnectorLoggingConfigurationResponse'
+            Prelude.<$> (x Data..?> "LoggingConfiguration")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    PutVoiceConnectorLoggingConfiguration
+  where
+  hashWithSalt
+    _salt
+    PutVoiceConnectorLoggingConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` voiceConnectorId
+        `Prelude.hashWithSalt` loggingConfiguration
+
+instance
+  Prelude.NFData
+    PutVoiceConnectorLoggingConfiguration
+  where
+  rnf PutVoiceConnectorLoggingConfiguration' {..} =
+    Prelude.rnf voiceConnectorId
+      `Prelude.seq` Prelude.rnf loggingConfiguration
+
+instance
+  Data.ToHeaders
+    PutVoiceConnectorLoggingConfiguration
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToJSON
+    PutVoiceConnectorLoggingConfiguration
+  where
+  toJSON PutVoiceConnectorLoggingConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "LoggingConfiguration"
+                  Data..= loggingConfiguration
+              )
+          ]
+      )
+
+instance
+  Data.ToPath
+    PutVoiceConnectorLoggingConfiguration
+  where
+  toPath PutVoiceConnectorLoggingConfiguration' {..} =
+    Prelude.mconcat
+      [ "/voice-connectors/",
+        Data.toBS voiceConnectorId,
+        "/logging-configuration"
+      ]
+
+instance
+  Data.ToQuery
+    PutVoiceConnectorLoggingConfiguration
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newPutVoiceConnectorLoggingConfigurationResponse' smart constructor.
+data PutVoiceConnectorLoggingConfigurationResponse = PutVoiceConnectorLoggingConfigurationResponse'
+  { -- | The updated logging configuration details.
+    loggingConfiguration :: Prelude.Maybe LoggingConfiguration,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutVoiceConnectorLoggingConfigurationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'loggingConfiguration', 'putVoiceConnectorLoggingConfigurationResponse_loggingConfiguration' - The updated logging configuration details.
+--
+-- 'httpStatus', 'putVoiceConnectorLoggingConfigurationResponse_httpStatus' - The response's http status code.
+newPutVoiceConnectorLoggingConfigurationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  PutVoiceConnectorLoggingConfigurationResponse
+newPutVoiceConnectorLoggingConfigurationResponse
+  pHttpStatus_ =
+    PutVoiceConnectorLoggingConfigurationResponse'
+      { loggingConfiguration =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The updated logging configuration details.
+putVoiceConnectorLoggingConfigurationResponse_loggingConfiguration :: Lens.Lens' PutVoiceConnectorLoggingConfigurationResponse (Prelude.Maybe LoggingConfiguration)
+putVoiceConnectorLoggingConfigurationResponse_loggingConfiguration = Lens.lens (\PutVoiceConnectorLoggingConfigurationResponse' {loggingConfiguration} -> loggingConfiguration) (\s@PutVoiceConnectorLoggingConfigurationResponse' {} a -> s {loggingConfiguration = a} :: PutVoiceConnectorLoggingConfigurationResponse)
+
+-- | The response's http status code.
+putVoiceConnectorLoggingConfigurationResponse_httpStatus :: Lens.Lens' PutVoiceConnectorLoggingConfigurationResponse Prelude.Int
+putVoiceConnectorLoggingConfigurationResponse_httpStatus = Lens.lens (\PutVoiceConnectorLoggingConfigurationResponse' {httpStatus} -> httpStatus) (\s@PutVoiceConnectorLoggingConfigurationResponse' {} a -> s {httpStatus = a} :: PutVoiceConnectorLoggingConfigurationResponse)
+
+instance
+  Prelude.NFData
+    PutVoiceConnectorLoggingConfigurationResponse
+  where
+  rnf
+    PutVoiceConnectorLoggingConfigurationResponse' {..} =
+      Prelude.rnf loggingConfiguration
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/PutVoiceConnectorOrigination.hs b/gen/Amazonka/Chime/PutVoiceConnectorOrigination.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/PutVoiceConnectorOrigination.hs
@@ -0,0 +1,192 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.PutVoiceConnectorOrigination
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds origination settings for the specified Amazon Chime Voice
+-- Connector.
+--
+-- If emergency calling is configured for the Amazon Chime Voice Connector,
+-- it must be deleted prior to turning off origination settings.
+module Amazonka.Chime.PutVoiceConnectorOrigination
+  ( -- * Creating a Request
+    PutVoiceConnectorOrigination (..),
+    newPutVoiceConnectorOrigination,
+
+    -- * Request Lenses
+    putVoiceConnectorOrigination_voiceConnectorId,
+    putVoiceConnectorOrigination_origination,
+
+    -- * Destructuring the Response
+    PutVoiceConnectorOriginationResponse (..),
+    newPutVoiceConnectorOriginationResponse,
+
+    -- * Response Lenses
+    putVoiceConnectorOriginationResponse_origination,
+    putVoiceConnectorOriginationResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newPutVoiceConnectorOrigination' smart constructor.
+data PutVoiceConnectorOrigination = PutVoiceConnectorOrigination'
+  { -- | The Amazon Chime Voice Connector ID.
+    voiceConnectorId :: Prelude.Text,
+    -- | The origination setting details to add.
+    origination :: Origination
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutVoiceConnectorOrigination' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorId', 'putVoiceConnectorOrigination_voiceConnectorId' - The Amazon Chime Voice Connector ID.
+--
+-- 'origination', 'putVoiceConnectorOrigination_origination' - The origination setting details to add.
+newPutVoiceConnectorOrigination ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  -- | 'origination'
+  Origination ->
+  PutVoiceConnectorOrigination
+newPutVoiceConnectorOrigination
+  pVoiceConnectorId_
+  pOrigination_ =
+    PutVoiceConnectorOrigination'
+      { voiceConnectorId =
+          pVoiceConnectorId_,
+        origination = pOrigination_
+      }
+
+-- | The Amazon Chime Voice Connector ID.
+putVoiceConnectorOrigination_voiceConnectorId :: Lens.Lens' PutVoiceConnectorOrigination Prelude.Text
+putVoiceConnectorOrigination_voiceConnectorId = Lens.lens (\PutVoiceConnectorOrigination' {voiceConnectorId} -> voiceConnectorId) (\s@PutVoiceConnectorOrigination' {} a -> s {voiceConnectorId = a} :: PutVoiceConnectorOrigination)
+
+-- | The origination setting details to add.
+putVoiceConnectorOrigination_origination :: Lens.Lens' PutVoiceConnectorOrigination Origination
+putVoiceConnectorOrigination_origination = Lens.lens (\PutVoiceConnectorOrigination' {origination} -> origination) (\s@PutVoiceConnectorOrigination' {} a -> s {origination = a} :: PutVoiceConnectorOrigination)
+
+instance Core.AWSRequest PutVoiceConnectorOrigination where
+  type
+    AWSResponse PutVoiceConnectorOrigination =
+      PutVoiceConnectorOriginationResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          PutVoiceConnectorOriginationResponse'
+            Prelude.<$> (x Data..?> "Origination")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    PutVoiceConnectorOrigination
+  where
+  hashWithSalt _salt PutVoiceConnectorOrigination' {..} =
+    _salt
+      `Prelude.hashWithSalt` voiceConnectorId
+      `Prelude.hashWithSalt` origination
+
+instance Prelude.NFData PutVoiceConnectorOrigination where
+  rnf PutVoiceConnectorOrigination' {..} =
+    Prelude.rnf voiceConnectorId
+      `Prelude.seq` Prelude.rnf origination
+
+instance Data.ToHeaders PutVoiceConnectorOrigination where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON PutVoiceConnectorOrigination where
+  toJSON PutVoiceConnectorOrigination' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Origination" Data..= origination)]
+      )
+
+instance Data.ToPath PutVoiceConnectorOrigination where
+  toPath PutVoiceConnectorOrigination' {..} =
+    Prelude.mconcat
+      [ "/voice-connectors/",
+        Data.toBS voiceConnectorId,
+        "/origination"
+      ]
+
+instance Data.ToQuery PutVoiceConnectorOrigination where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newPutVoiceConnectorOriginationResponse' smart constructor.
+data PutVoiceConnectorOriginationResponse = PutVoiceConnectorOriginationResponse'
+  { -- | The updated origination setting details.
+    origination :: Prelude.Maybe Origination,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutVoiceConnectorOriginationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'origination', 'putVoiceConnectorOriginationResponse_origination' - The updated origination setting details.
+--
+-- 'httpStatus', 'putVoiceConnectorOriginationResponse_httpStatus' - The response's http status code.
+newPutVoiceConnectorOriginationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  PutVoiceConnectorOriginationResponse
+newPutVoiceConnectorOriginationResponse pHttpStatus_ =
+  PutVoiceConnectorOriginationResponse'
+    { origination =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The updated origination setting details.
+putVoiceConnectorOriginationResponse_origination :: Lens.Lens' PutVoiceConnectorOriginationResponse (Prelude.Maybe Origination)
+putVoiceConnectorOriginationResponse_origination = Lens.lens (\PutVoiceConnectorOriginationResponse' {origination} -> origination) (\s@PutVoiceConnectorOriginationResponse' {} a -> s {origination = a} :: PutVoiceConnectorOriginationResponse)
+
+-- | The response's http status code.
+putVoiceConnectorOriginationResponse_httpStatus :: Lens.Lens' PutVoiceConnectorOriginationResponse Prelude.Int
+putVoiceConnectorOriginationResponse_httpStatus = Lens.lens (\PutVoiceConnectorOriginationResponse' {httpStatus} -> httpStatus) (\s@PutVoiceConnectorOriginationResponse' {} a -> s {httpStatus = a} :: PutVoiceConnectorOriginationResponse)
+
+instance
+  Prelude.NFData
+    PutVoiceConnectorOriginationResponse
+  where
+  rnf PutVoiceConnectorOriginationResponse' {..} =
+    Prelude.rnf origination
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/PutVoiceConnectorProxy.hs b/gen/Amazonka/Chime/PutVoiceConnectorProxy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/PutVoiceConnectorProxy.hs
@@ -0,0 +1,240 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.PutVoiceConnectorProxy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Puts the specified proxy configuration to the specified Amazon Chime
+-- Voice Connector.
+module Amazonka.Chime.PutVoiceConnectorProxy
+  ( -- * Creating a Request
+    PutVoiceConnectorProxy (..),
+    newPutVoiceConnectorProxy,
+
+    -- * Request Lenses
+    putVoiceConnectorProxy_disabled,
+    putVoiceConnectorProxy_fallBackPhoneNumber,
+    putVoiceConnectorProxy_defaultSessionExpiryMinutes,
+    putVoiceConnectorProxy_phoneNumberPoolCountries,
+    putVoiceConnectorProxy_voiceConnectorId,
+
+    -- * Destructuring the Response
+    PutVoiceConnectorProxyResponse (..),
+    newPutVoiceConnectorProxyResponse,
+
+    -- * Response Lenses
+    putVoiceConnectorProxyResponse_proxy,
+    putVoiceConnectorProxyResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newPutVoiceConnectorProxy' smart constructor.
+data PutVoiceConnectorProxy = PutVoiceConnectorProxy'
+  { -- | When true, stops proxy sessions from being created on the specified
+    -- Amazon Chime Voice Connector.
+    disabled :: Prelude.Maybe Prelude.Bool,
+    -- | The phone number to route calls to after a proxy session expires.
+    fallBackPhoneNumber :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The default number of minutes allowed for proxy sessions.
+    defaultSessionExpiryMinutes :: Prelude.Int,
+    -- | The countries for proxy phone numbers to be selected from.
+    phoneNumberPoolCountries :: Prelude.NonEmpty Prelude.Text,
+    -- | The Amazon Chime voice connector ID.
+    voiceConnectorId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutVoiceConnectorProxy' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'disabled', 'putVoiceConnectorProxy_disabled' - When true, stops proxy sessions from being created on the specified
+-- Amazon Chime Voice Connector.
+--
+-- 'fallBackPhoneNumber', 'putVoiceConnectorProxy_fallBackPhoneNumber' - The phone number to route calls to after a proxy session expires.
+--
+-- 'defaultSessionExpiryMinutes', 'putVoiceConnectorProxy_defaultSessionExpiryMinutes' - The default number of minutes allowed for proxy sessions.
+--
+-- 'phoneNumberPoolCountries', 'putVoiceConnectorProxy_phoneNumberPoolCountries' - The countries for proxy phone numbers to be selected from.
+--
+-- 'voiceConnectorId', 'putVoiceConnectorProxy_voiceConnectorId' - The Amazon Chime voice connector ID.
+newPutVoiceConnectorProxy ::
+  -- | 'defaultSessionExpiryMinutes'
+  Prelude.Int ->
+  -- | 'phoneNumberPoolCountries'
+  Prelude.NonEmpty Prelude.Text ->
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  PutVoiceConnectorProxy
+newPutVoiceConnectorProxy
+  pDefaultSessionExpiryMinutes_
+  pPhoneNumberPoolCountries_
+  pVoiceConnectorId_ =
+    PutVoiceConnectorProxy'
+      { disabled = Prelude.Nothing,
+        fallBackPhoneNumber = Prelude.Nothing,
+        defaultSessionExpiryMinutes =
+          pDefaultSessionExpiryMinutes_,
+        phoneNumberPoolCountries =
+          Lens.coerced Lens.# pPhoneNumberPoolCountries_,
+        voiceConnectorId = pVoiceConnectorId_
+      }
+
+-- | When true, stops proxy sessions from being created on the specified
+-- Amazon Chime Voice Connector.
+putVoiceConnectorProxy_disabled :: Lens.Lens' PutVoiceConnectorProxy (Prelude.Maybe Prelude.Bool)
+putVoiceConnectorProxy_disabled = Lens.lens (\PutVoiceConnectorProxy' {disabled} -> disabled) (\s@PutVoiceConnectorProxy' {} a -> s {disabled = a} :: PutVoiceConnectorProxy)
+
+-- | The phone number to route calls to after a proxy session expires.
+putVoiceConnectorProxy_fallBackPhoneNumber :: Lens.Lens' PutVoiceConnectorProxy (Prelude.Maybe Prelude.Text)
+putVoiceConnectorProxy_fallBackPhoneNumber = Lens.lens (\PutVoiceConnectorProxy' {fallBackPhoneNumber} -> fallBackPhoneNumber) (\s@PutVoiceConnectorProxy' {} a -> s {fallBackPhoneNumber = a} :: PutVoiceConnectorProxy) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The default number of minutes allowed for proxy sessions.
+putVoiceConnectorProxy_defaultSessionExpiryMinutes :: Lens.Lens' PutVoiceConnectorProxy Prelude.Int
+putVoiceConnectorProxy_defaultSessionExpiryMinutes = Lens.lens (\PutVoiceConnectorProxy' {defaultSessionExpiryMinutes} -> defaultSessionExpiryMinutes) (\s@PutVoiceConnectorProxy' {} a -> s {defaultSessionExpiryMinutes = a} :: PutVoiceConnectorProxy)
+
+-- | The countries for proxy phone numbers to be selected from.
+putVoiceConnectorProxy_phoneNumberPoolCountries :: Lens.Lens' PutVoiceConnectorProxy (Prelude.NonEmpty Prelude.Text)
+putVoiceConnectorProxy_phoneNumberPoolCountries = Lens.lens (\PutVoiceConnectorProxy' {phoneNumberPoolCountries} -> phoneNumberPoolCountries) (\s@PutVoiceConnectorProxy' {} a -> s {phoneNumberPoolCountries = a} :: PutVoiceConnectorProxy) Prelude.. Lens.coerced
+
+-- | The Amazon Chime voice connector ID.
+putVoiceConnectorProxy_voiceConnectorId :: Lens.Lens' PutVoiceConnectorProxy Prelude.Text
+putVoiceConnectorProxy_voiceConnectorId = Lens.lens (\PutVoiceConnectorProxy' {voiceConnectorId} -> voiceConnectorId) (\s@PutVoiceConnectorProxy' {} a -> s {voiceConnectorId = a} :: PutVoiceConnectorProxy)
+
+instance Core.AWSRequest PutVoiceConnectorProxy where
+  type
+    AWSResponse PutVoiceConnectorProxy =
+      PutVoiceConnectorProxyResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          PutVoiceConnectorProxyResponse'
+            Prelude.<$> (x Data..?> "Proxy")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable PutVoiceConnectorProxy where
+  hashWithSalt _salt PutVoiceConnectorProxy' {..} =
+    _salt
+      `Prelude.hashWithSalt` disabled
+      `Prelude.hashWithSalt` fallBackPhoneNumber
+      `Prelude.hashWithSalt` defaultSessionExpiryMinutes
+      `Prelude.hashWithSalt` phoneNumberPoolCountries
+      `Prelude.hashWithSalt` voiceConnectorId
+
+instance Prelude.NFData PutVoiceConnectorProxy where
+  rnf PutVoiceConnectorProxy' {..} =
+    Prelude.rnf disabled
+      `Prelude.seq` Prelude.rnf fallBackPhoneNumber
+      `Prelude.seq` Prelude.rnf defaultSessionExpiryMinutes
+      `Prelude.seq` Prelude.rnf phoneNumberPoolCountries
+      `Prelude.seq` Prelude.rnf voiceConnectorId
+
+instance Data.ToHeaders PutVoiceConnectorProxy where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON PutVoiceConnectorProxy where
+  toJSON PutVoiceConnectorProxy' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Disabled" Data..=) Prelude.<$> disabled,
+            ("FallBackPhoneNumber" Data..=)
+              Prelude.<$> fallBackPhoneNumber,
+            Prelude.Just
+              ( "DefaultSessionExpiryMinutes"
+                  Data..= defaultSessionExpiryMinutes
+              ),
+            Prelude.Just
+              ( "PhoneNumberPoolCountries"
+                  Data..= phoneNumberPoolCountries
+              )
+          ]
+      )
+
+instance Data.ToPath PutVoiceConnectorProxy where
+  toPath PutVoiceConnectorProxy' {..} =
+    Prelude.mconcat
+      [ "/voice-connectors/",
+        Data.toBS voiceConnectorId,
+        "/programmable-numbers/proxy"
+      ]
+
+instance Data.ToQuery PutVoiceConnectorProxy where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newPutVoiceConnectorProxyResponse' smart constructor.
+data PutVoiceConnectorProxyResponse = PutVoiceConnectorProxyResponse'
+  { -- | The proxy configuration details.
+    proxy :: Prelude.Maybe Proxy,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutVoiceConnectorProxyResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'proxy', 'putVoiceConnectorProxyResponse_proxy' - The proxy configuration details.
+--
+-- 'httpStatus', 'putVoiceConnectorProxyResponse_httpStatus' - The response's http status code.
+newPutVoiceConnectorProxyResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  PutVoiceConnectorProxyResponse
+newPutVoiceConnectorProxyResponse pHttpStatus_ =
+  PutVoiceConnectorProxyResponse'
+    { proxy =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The proxy configuration details.
+putVoiceConnectorProxyResponse_proxy :: Lens.Lens' PutVoiceConnectorProxyResponse (Prelude.Maybe Proxy)
+putVoiceConnectorProxyResponse_proxy = Lens.lens (\PutVoiceConnectorProxyResponse' {proxy} -> proxy) (\s@PutVoiceConnectorProxyResponse' {} a -> s {proxy = a} :: PutVoiceConnectorProxyResponse)
+
+-- | The response's http status code.
+putVoiceConnectorProxyResponse_httpStatus :: Lens.Lens' PutVoiceConnectorProxyResponse Prelude.Int
+putVoiceConnectorProxyResponse_httpStatus = Lens.lens (\PutVoiceConnectorProxyResponse' {httpStatus} -> httpStatus) (\s@PutVoiceConnectorProxyResponse' {} a -> s {httpStatus = a} :: PutVoiceConnectorProxyResponse)
+
+instance
+  Prelude.NFData
+    PutVoiceConnectorProxyResponse
+  where
+  rnf PutVoiceConnectorProxyResponse' {..} =
+    Prelude.rnf proxy
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/PutVoiceConnectorStreamingConfiguration.hs b/gen/Amazonka/Chime/PutVoiceConnectorStreamingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/PutVoiceConnectorStreamingConfiguration.hs
@@ -0,0 +1,219 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.PutVoiceConnectorStreamingConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds a streaming configuration for the specified Amazon Chime Voice
+-- Connector. The streaming configuration specifies whether media streaming
+-- is enabled for sending to Kinesis. It also sets the retention period, in
+-- hours, for the Amazon Kinesis data.
+module Amazonka.Chime.PutVoiceConnectorStreamingConfiguration
+  ( -- * Creating a Request
+    PutVoiceConnectorStreamingConfiguration (..),
+    newPutVoiceConnectorStreamingConfiguration,
+
+    -- * Request Lenses
+    putVoiceConnectorStreamingConfiguration_voiceConnectorId,
+    putVoiceConnectorStreamingConfiguration_streamingConfiguration,
+
+    -- * Destructuring the Response
+    PutVoiceConnectorStreamingConfigurationResponse (..),
+    newPutVoiceConnectorStreamingConfigurationResponse,
+
+    -- * Response Lenses
+    putVoiceConnectorStreamingConfigurationResponse_streamingConfiguration,
+    putVoiceConnectorStreamingConfigurationResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newPutVoiceConnectorStreamingConfiguration' smart constructor.
+data PutVoiceConnectorStreamingConfiguration = PutVoiceConnectorStreamingConfiguration'
+  { -- | The Amazon Chime Voice Connector ID.
+    voiceConnectorId :: Prelude.Text,
+    -- | The streaming configuration details to add.
+    streamingConfiguration :: StreamingConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutVoiceConnectorStreamingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorId', 'putVoiceConnectorStreamingConfiguration_voiceConnectorId' - The Amazon Chime Voice Connector ID.
+--
+-- 'streamingConfiguration', 'putVoiceConnectorStreamingConfiguration_streamingConfiguration' - The streaming configuration details to add.
+newPutVoiceConnectorStreamingConfiguration ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  -- | 'streamingConfiguration'
+  StreamingConfiguration ->
+  PutVoiceConnectorStreamingConfiguration
+newPutVoiceConnectorStreamingConfiguration
+  pVoiceConnectorId_
+  pStreamingConfiguration_ =
+    PutVoiceConnectorStreamingConfiguration'
+      { voiceConnectorId =
+          pVoiceConnectorId_,
+        streamingConfiguration =
+          pStreamingConfiguration_
+      }
+
+-- | The Amazon Chime Voice Connector ID.
+putVoiceConnectorStreamingConfiguration_voiceConnectorId :: Lens.Lens' PutVoiceConnectorStreamingConfiguration Prelude.Text
+putVoiceConnectorStreamingConfiguration_voiceConnectorId = Lens.lens (\PutVoiceConnectorStreamingConfiguration' {voiceConnectorId} -> voiceConnectorId) (\s@PutVoiceConnectorStreamingConfiguration' {} a -> s {voiceConnectorId = a} :: PutVoiceConnectorStreamingConfiguration)
+
+-- | The streaming configuration details to add.
+putVoiceConnectorStreamingConfiguration_streamingConfiguration :: Lens.Lens' PutVoiceConnectorStreamingConfiguration StreamingConfiguration
+putVoiceConnectorStreamingConfiguration_streamingConfiguration = Lens.lens (\PutVoiceConnectorStreamingConfiguration' {streamingConfiguration} -> streamingConfiguration) (\s@PutVoiceConnectorStreamingConfiguration' {} a -> s {streamingConfiguration = a} :: PutVoiceConnectorStreamingConfiguration)
+
+instance
+  Core.AWSRequest
+    PutVoiceConnectorStreamingConfiguration
+  where
+  type
+    AWSResponse
+      PutVoiceConnectorStreamingConfiguration =
+      PutVoiceConnectorStreamingConfigurationResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          PutVoiceConnectorStreamingConfigurationResponse'
+            Prelude.<$> (x Data..?> "StreamingConfiguration")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    PutVoiceConnectorStreamingConfiguration
+  where
+  hashWithSalt
+    _salt
+    PutVoiceConnectorStreamingConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` voiceConnectorId
+        `Prelude.hashWithSalt` streamingConfiguration
+
+instance
+  Prelude.NFData
+    PutVoiceConnectorStreamingConfiguration
+  where
+  rnf PutVoiceConnectorStreamingConfiguration' {..} =
+    Prelude.rnf voiceConnectorId
+      `Prelude.seq` Prelude.rnf streamingConfiguration
+
+instance
+  Data.ToHeaders
+    PutVoiceConnectorStreamingConfiguration
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToJSON
+    PutVoiceConnectorStreamingConfiguration
+  where
+  toJSON PutVoiceConnectorStreamingConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "StreamingConfiguration"
+                  Data..= streamingConfiguration
+              )
+          ]
+      )
+
+instance
+  Data.ToPath
+    PutVoiceConnectorStreamingConfiguration
+  where
+  toPath PutVoiceConnectorStreamingConfiguration' {..} =
+    Prelude.mconcat
+      [ "/voice-connectors/",
+        Data.toBS voiceConnectorId,
+        "/streaming-configuration"
+      ]
+
+instance
+  Data.ToQuery
+    PutVoiceConnectorStreamingConfiguration
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newPutVoiceConnectorStreamingConfigurationResponse' smart constructor.
+data PutVoiceConnectorStreamingConfigurationResponse = PutVoiceConnectorStreamingConfigurationResponse'
+  { -- | The updated streaming configuration details.
+    streamingConfiguration :: Prelude.Maybe StreamingConfiguration,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutVoiceConnectorStreamingConfigurationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'streamingConfiguration', 'putVoiceConnectorStreamingConfigurationResponse_streamingConfiguration' - The updated streaming configuration details.
+--
+-- 'httpStatus', 'putVoiceConnectorStreamingConfigurationResponse_httpStatus' - The response's http status code.
+newPutVoiceConnectorStreamingConfigurationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  PutVoiceConnectorStreamingConfigurationResponse
+newPutVoiceConnectorStreamingConfigurationResponse
+  pHttpStatus_ =
+    PutVoiceConnectorStreamingConfigurationResponse'
+      { streamingConfiguration =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The updated streaming configuration details.
+putVoiceConnectorStreamingConfigurationResponse_streamingConfiguration :: Lens.Lens' PutVoiceConnectorStreamingConfigurationResponse (Prelude.Maybe StreamingConfiguration)
+putVoiceConnectorStreamingConfigurationResponse_streamingConfiguration = Lens.lens (\PutVoiceConnectorStreamingConfigurationResponse' {streamingConfiguration} -> streamingConfiguration) (\s@PutVoiceConnectorStreamingConfigurationResponse' {} a -> s {streamingConfiguration = a} :: PutVoiceConnectorStreamingConfigurationResponse)
+
+-- | The response's http status code.
+putVoiceConnectorStreamingConfigurationResponse_httpStatus :: Lens.Lens' PutVoiceConnectorStreamingConfigurationResponse Prelude.Int
+putVoiceConnectorStreamingConfigurationResponse_httpStatus = Lens.lens (\PutVoiceConnectorStreamingConfigurationResponse' {httpStatus} -> httpStatus) (\s@PutVoiceConnectorStreamingConfigurationResponse' {} a -> s {httpStatus = a} :: PutVoiceConnectorStreamingConfigurationResponse)
+
+instance
+  Prelude.NFData
+    PutVoiceConnectorStreamingConfigurationResponse
+  where
+  rnf
+    PutVoiceConnectorStreamingConfigurationResponse' {..} =
+      Prelude.rnf streamingConfiguration
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/PutVoiceConnectorTermination.hs b/gen/Amazonka/Chime/PutVoiceConnectorTermination.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/PutVoiceConnectorTermination.hs
@@ -0,0 +1,192 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.PutVoiceConnectorTermination
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds termination settings for the specified Amazon Chime Voice
+-- Connector.
+--
+-- If emergency calling is configured for the Amazon Chime Voice Connector,
+-- it must be deleted prior to turning off termination settings.
+module Amazonka.Chime.PutVoiceConnectorTermination
+  ( -- * Creating a Request
+    PutVoiceConnectorTermination (..),
+    newPutVoiceConnectorTermination,
+
+    -- * Request Lenses
+    putVoiceConnectorTermination_voiceConnectorId,
+    putVoiceConnectorTermination_termination,
+
+    -- * Destructuring the Response
+    PutVoiceConnectorTerminationResponse (..),
+    newPutVoiceConnectorTerminationResponse,
+
+    -- * Response Lenses
+    putVoiceConnectorTerminationResponse_termination,
+    putVoiceConnectorTerminationResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newPutVoiceConnectorTermination' smart constructor.
+data PutVoiceConnectorTermination = PutVoiceConnectorTermination'
+  { -- | The Amazon Chime Voice Connector ID.
+    voiceConnectorId :: Prelude.Text,
+    -- | The termination setting details to add.
+    termination :: Termination
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutVoiceConnectorTermination' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorId', 'putVoiceConnectorTermination_voiceConnectorId' - The Amazon Chime Voice Connector ID.
+--
+-- 'termination', 'putVoiceConnectorTermination_termination' - The termination setting details to add.
+newPutVoiceConnectorTermination ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  -- | 'termination'
+  Termination ->
+  PutVoiceConnectorTermination
+newPutVoiceConnectorTermination
+  pVoiceConnectorId_
+  pTermination_ =
+    PutVoiceConnectorTermination'
+      { voiceConnectorId =
+          pVoiceConnectorId_,
+        termination = pTermination_
+      }
+
+-- | The Amazon Chime Voice Connector ID.
+putVoiceConnectorTermination_voiceConnectorId :: Lens.Lens' PutVoiceConnectorTermination Prelude.Text
+putVoiceConnectorTermination_voiceConnectorId = Lens.lens (\PutVoiceConnectorTermination' {voiceConnectorId} -> voiceConnectorId) (\s@PutVoiceConnectorTermination' {} a -> s {voiceConnectorId = a} :: PutVoiceConnectorTermination)
+
+-- | The termination setting details to add.
+putVoiceConnectorTermination_termination :: Lens.Lens' PutVoiceConnectorTermination Termination
+putVoiceConnectorTermination_termination = Lens.lens (\PutVoiceConnectorTermination' {termination} -> termination) (\s@PutVoiceConnectorTermination' {} a -> s {termination = a} :: PutVoiceConnectorTermination)
+
+instance Core.AWSRequest PutVoiceConnectorTermination where
+  type
+    AWSResponse PutVoiceConnectorTermination =
+      PutVoiceConnectorTerminationResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          PutVoiceConnectorTerminationResponse'
+            Prelude.<$> (x Data..?> "Termination")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    PutVoiceConnectorTermination
+  where
+  hashWithSalt _salt PutVoiceConnectorTermination' {..} =
+    _salt
+      `Prelude.hashWithSalt` voiceConnectorId
+      `Prelude.hashWithSalt` termination
+
+instance Prelude.NFData PutVoiceConnectorTermination where
+  rnf PutVoiceConnectorTermination' {..} =
+    Prelude.rnf voiceConnectorId
+      `Prelude.seq` Prelude.rnf termination
+
+instance Data.ToHeaders PutVoiceConnectorTermination where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON PutVoiceConnectorTermination where
+  toJSON PutVoiceConnectorTermination' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Termination" Data..= termination)]
+      )
+
+instance Data.ToPath PutVoiceConnectorTermination where
+  toPath PutVoiceConnectorTermination' {..} =
+    Prelude.mconcat
+      [ "/voice-connectors/",
+        Data.toBS voiceConnectorId,
+        "/termination"
+      ]
+
+instance Data.ToQuery PutVoiceConnectorTermination where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newPutVoiceConnectorTerminationResponse' smart constructor.
+data PutVoiceConnectorTerminationResponse = PutVoiceConnectorTerminationResponse'
+  { -- | The updated termination setting details.
+    termination :: Prelude.Maybe Termination,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutVoiceConnectorTerminationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'termination', 'putVoiceConnectorTerminationResponse_termination' - The updated termination setting details.
+--
+-- 'httpStatus', 'putVoiceConnectorTerminationResponse_httpStatus' - The response's http status code.
+newPutVoiceConnectorTerminationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  PutVoiceConnectorTerminationResponse
+newPutVoiceConnectorTerminationResponse pHttpStatus_ =
+  PutVoiceConnectorTerminationResponse'
+    { termination =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The updated termination setting details.
+putVoiceConnectorTerminationResponse_termination :: Lens.Lens' PutVoiceConnectorTerminationResponse (Prelude.Maybe Termination)
+putVoiceConnectorTerminationResponse_termination = Lens.lens (\PutVoiceConnectorTerminationResponse' {termination} -> termination) (\s@PutVoiceConnectorTerminationResponse' {} a -> s {termination = a} :: PutVoiceConnectorTerminationResponse)
+
+-- | The response's http status code.
+putVoiceConnectorTerminationResponse_httpStatus :: Lens.Lens' PutVoiceConnectorTerminationResponse Prelude.Int
+putVoiceConnectorTerminationResponse_httpStatus = Lens.lens (\PutVoiceConnectorTerminationResponse' {httpStatus} -> httpStatus) (\s@PutVoiceConnectorTerminationResponse' {} a -> s {httpStatus = a} :: PutVoiceConnectorTerminationResponse)
+
+instance
+  Prelude.NFData
+    PutVoiceConnectorTerminationResponse
+  where
+  rnf PutVoiceConnectorTerminationResponse' {..} =
+    Prelude.rnf termination
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/PutVoiceConnectorTerminationCredentials.hs b/gen/Amazonka/Chime/PutVoiceConnectorTerminationCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/PutVoiceConnectorTerminationCredentials.hs
@@ -0,0 +1,175 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.PutVoiceConnectorTerminationCredentials
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds termination SIP credentials for the specified Amazon Chime Voice
+-- Connector.
+module Amazonka.Chime.PutVoiceConnectorTerminationCredentials
+  ( -- * Creating a Request
+    PutVoiceConnectorTerminationCredentials (..),
+    newPutVoiceConnectorTerminationCredentials,
+
+    -- * Request Lenses
+    putVoiceConnectorTerminationCredentials_credentials,
+    putVoiceConnectorTerminationCredentials_voiceConnectorId,
+
+    -- * Destructuring the Response
+    PutVoiceConnectorTerminationCredentialsResponse (..),
+    newPutVoiceConnectorTerminationCredentialsResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newPutVoiceConnectorTerminationCredentials' smart constructor.
+data PutVoiceConnectorTerminationCredentials = PutVoiceConnectorTerminationCredentials'
+  { -- | The termination SIP credentials.
+    credentials :: Prelude.Maybe [Credential],
+    -- | The Amazon Chime Voice Connector ID.
+    voiceConnectorId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutVoiceConnectorTerminationCredentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'credentials', 'putVoiceConnectorTerminationCredentials_credentials' - The termination SIP credentials.
+--
+-- 'voiceConnectorId', 'putVoiceConnectorTerminationCredentials_voiceConnectorId' - The Amazon Chime Voice Connector ID.
+newPutVoiceConnectorTerminationCredentials ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  PutVoiceConnectorTerminationCredentials
+newPutVoiceConnectorTerminationCredentials
+  pVoiceConnectorId_ =
+    PutVoiceConnectorTerminationCredentials'
+      { credentials =
+          Prelude.Nothing,
+        voiceConnectorId =
+          pVoiceConnectorId_
+      }
+
+-- | The termination SIP credentials.
+putVoiceConnectorTerminationCredentials_credentials :: Lens.Lens' PutVoiceConnectorTerminationCredentials (Prelude.Maybe [Credential])
+putVoiceConnectorTerminationCredentials_credentials = Lens.lens (\PutVoiceConnectorTerminationCredentials' {credentials} -> credentials) (\s@PutVoiceConnectorTerminationCredentials' {} a -> s {credentials = a} :: PutVoiceConnectorTerminationCredentials) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Chime Voice Connector ID.
+putVoiceConnectorTerminationCredentials_voiceConnectorId :: Lens.Lens' PutVoiceConnectorTerminationCredentials Prelude.Text
+putVoiceConnectorTerminationCredentials_voiceConnectorId = Lens.lens (\PutVoiceConnectorTerminationCredentials' {voiceConnectorId} -> voiceConnectorId) (\s@PutVoiceConnectorTerminationCredentials' {} a -> s {voiceConnectorId = a} :: PutVoiceConnectorTerminationCredentials)
+
+instance
+  Core.AWSRequest
+    PutVoiceConnectorTerminationCredentials
+  where
+  type
+    AWSResponse
+      PutVoiceConnectorTerminationCredentials =
+      PutVoiceConnectorTerminationCredentialsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull
+      PutVoiceConnectorTerminationCredentialsResponse'
+
+instance
+  Prelude.Hashable
+    PutVoiceConnectorTerminationCredentials
+  where
+  hashWithSalt
+    _salt
+    PutVoiceConnectorTerminationCredentials' {..} =
+      _salt
+        `Prelude.hashWithSalt` credentials
+        `Prelude.hashWithSalt` voiceConnectorId
+
+instance
+  Prelude.NFData
+    PutVoiceConnectorTerminationCredentials
+  where
+  rnf PutVoiceConnectorTerminationCredentials' {..} =
+    Prelude.rnf credentials
+      `Prelude.seq` Prelude.rnf voiceConnectorId
+
+instance
+  Data.ToHeaders
+    PutVoiceConnectorTerminationCredentials
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToJSON
+    PutVoiceConnectorTerminationCredentials
+  where
+  toJSON PutVoiceConnectorTerminationCredentials' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Credentials" Data..=) Prelude.<$> credentials]
+      )
+
+instance
+  Data.ToPath
+    PutVoiceConnectorTerminationCredentials
+  where
+  toPath PutVoiceConnectorTerminationCredentials' {..} =
+    Prelude.mconcat
+      [ "/voice-connectors/",
+        Data.toBS voiceConnectorId,
+        "/termination/credentials"
+      ]
+
+instance
+  Data.ToQuery
+    PutVoiceConnectorTerminationCredentials
+  where
+  toQuery =
+    Prelude.const (Prelude.mconcat ["operation=put"])
+
+-- | /See:/ 'newPutVoiceConnectorTerminationCredentialsResponse' smart constructor.
+data PutVoiceConnectorTerminationCredentialsResponse = PutVoiceConnectorTerminationCredentialsResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutVoiceConnectorTerminationCredentialsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newPutVoiceConnectorTerminationCredentialsResponse ::
+  PutVoiceConnectorTerminationCredentialsResponse
+newPutVoiceConnectorTerminationCredentialsResponse =
+  PutVoiceConnectorTerminationCredentialsResponse'
+
+instance
+  Prelude.NFData
+    PutVoiceConnectorTerminationCredentialsResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/RedactChannelMessage.hs b/gen/Amazonka/Chime/RedactChannelMessage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/RedactChannelMessage.hs
@@ -0,0 +1,211 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.RedactChannelMessage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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.
+module Amazonka.Chime.RedactChannelMessage
+  ( -- * Creating a Request
+    RedactChannelMessage (..),
+    newRedactChannelMessage,
+
+    -- * Request Lenses
+    redactChannelMessage_chimeBearer,
+    redactChannelMessage_channelArn,
+    redactChannelMessage_messageId,
+
+    -- * Destructuring the Response
+    RedactChannelMessageResponse (..),
+    newRedactChannelMessageResponse,
+
+    -- * Response Lenses
+    redactChannelMessageResponse_channelArn,
+    redactChannelMessageResponse_messageId,
+    redactChannelMessageResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newRedactChannelMessage' smart constructor.
+data RedactChannelMessage = RedactChannelMessage'
+  { -- | The @AppInstanceUserArn@ of the user that makes the API call.
+    chimeBearer :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the channel containing the messages that you want to redact.
+    channelArn :: Prelude.Text,
+    -- | The ID of the message being redacted.
+    messageId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RedactChannelMessage' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chimeBearer', 'redactChannelMessage_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
+--
+-- 'channelArn', 'redactChannelMessage_channelArn' - The ARN of the channel containing the messages that you want to redact.
+--
+-- 'messageId', 'redactChannelMessage_messageId' - The ID of the message being redacted.
+newRedactChannelMessage ::
+  -- | 'channelArn'
+  Prelude.Text ->
+  -- | 'messageId'
+  Prelude.Text ->
+  RedactChannelMessage
+newRedactChannelMessage pChannelArn_ pMessageId_ =
+  RedactChannelMessage'
+    { chimeBearer =
+        Prelude.Nothing,
+      channelArn = pChannelArn_,
+      messageId = pMessageId_
+    }
+
+-- | The @AppInstanceUserArn@ of the user that makes the API call.
+redactChannelMessage_chimeBearer :: Lens.Lens' RedactChannelMessage (Prelude.Maybe Prelude.Text)
+redactChannelMessage_chimeBearer = Lens.lens (\RedactChannelMessage' {chimeBearer} -> chimeBearer) (\s@RedactChannelMessage' {} a -> s {chimeBearer = a} :: RedactChannelMessage)
+
+-- | The ARN of the channel containing the messages that you want to redact.
+redactChannelMessage_channelArn :: Lens.Lens' RedactChannelMessage Prelude.Text
+redactChannelMessage_channelArn = Lens.lens (\RedactChannelMessage' {channelArn} -> channelArn) (\s@RedactChannelMessage' {} a -> s {channelArn = a} :: RedactChannelMessage)
+
+-- | The ID of the message being redacted.
+redactChannelMessage_messageId :: Lens.Lens' RedactChannelMessage Prelude.Text
+redactChannelMessage_messageId = Lens.lens (\RedactChannelMessage' {messageId} -> messageId) (\s@RedactChannelMessage' {} a -> s {messageId = a} :: RedactChannelMessage)
+
+instance Core.AWSRequest RedactChannelMessage where
+  type
+    AWSResponse RedactChannelMessage =
+      RedactChannelMessageResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          RedactChannelMessageResponse'
+            Prelude.<$> (x Data..?> "ChannelArn")
+            Prelude.<*> (x Data..?> "MessageId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable RedactChannelMessage where
+  hashWithSalt _salt RedactChannelMessage' {..} =
+    _salt
+      `Prelude.hashWithSalt` chimeBearer
+      `Prelude.hashWithSalt` channelArn
+      `Prelude.hashWithSalt` messageId
+
+instance Prelude.NFData RedactChannelMessage where
+  rnf RedactChannelMessage' {..} =
+    Prelude.rnf chimeBearer
+      `Prelude.seq` Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf messageId
+
+instance Data.ToHeaders RedactChannelMessage where
+  toHeaders RedactChannelMessage' {..} =
+    Prelude.mconcat
+      ["x-amz-chime-bearer" Data.=# chimeBearer]
+
+instance Data.ToJSON RedactChannelMessage where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath RedactChannelMessage where
+  toPath RedactChannelMessage' {..} =
+    Prelude.mconcat
+      [ "/channels/",
+        Data.toBS channelArn,
+        "/messages/",
+        Data.toBS messageId
+      ]
+
+instance Data.ToQuery RedactChannelMessage where
+  toQuery =
+    Prelude.const
+      (Prelude.mconcat ["operation=redact"])
+
+-- | /See:/ 'newRedactChannelMessageResponse' smart constructor.
+data RedactChannelMessageResponse = RedactChannelMessageResponse'
+  { -- | The ARN of the channel containing the messages that you want to redact.
+    channelArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the message being redacted.
+    messageId :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RedactChannelMessageResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channelArn', 'redactChannelMessageResponse_channelArn' - The ARN of the channel containing the messages that you want to redact.
+--
+-- 'messageId', 'redactChannelMessageResponse_messageId' - The ID of the message being redacted.
+--
+-- 'httpStatus', 'redactChannelMessageResponse_httpStatus' - The response's http status code.
+newRedactChannelMessageResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  RedactChannelMessageResponse
+newRedactChannelMessageResponse pHttpStatus_ =
+  RedactChannelMessageResponse'
+    { channelArn =
+        Prelude.Nothing,
+      messageId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of the channel containing the messages that you want to redact.
+redactChannelMessageResponse_channelArn :: Lens.Lens' RedactChannelMessageResponse (Prelude.Maybe Prelude.Text)
+redactChannelMessageResponse_channelArn = Lens.lens (\RedactChannelMessageResponse' {channelArn} -> channelArn) (\s@RedactChannelMessageResponse' {} a -> s {channelArn = a} :: RedactChannelMessageResponse)
+
+-- | The ID of the message being redacted.
+redactChannelMessageResponse_messageId :: Lens.Lens' RedactChannelMessageResponse (Prelude.Maybe Prelude.Text)
+redactChannelMessageResponse_messageId = Lens.lens (\RedactChannelMessageResponse' {messageId} -> messageId) (\s@RedactChannelMessageResponse' {} a -> s {messageId = a} :: RedactChannelMessageResponse)
+
+-- | The response's http status code.
+redactChannelMessageResponse_httpStatus :: Lens.Lens' RedactChannelMessageResponse Prelude.Int
+redactChannelMessageResponse_httpStatus = Lens.lens (\RedactChannelMessageResponse' {httpStatus} -> httpStatus) (\s@RedactChannelMessageResponse' {} a -> s {httpStatus = a} :: RedactChannelMessageResponse)
+
+instance Prelude.NFData RedactChannelMessageResponse where
+  rnf RedactChannelMessageResponse' {..} =
+    Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf messageId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/RedactConversationMessage.hs b/gen/Amazonka/Chime/RedactConversationMessage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/RedactConversationMessage.hs
@@ -0,0 +1,189 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.RedactConversationMessage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Redacts the specified message from the specified Amazon Chime
+-- conversation.
+module Amazonka.Chime.RedactConversationMessage
+  ( -- * Creating a Request
+    RedactConversationMessage (..),
+    newRedactConversationMessage,
+
+    -- * Request Lenses
+    redactConversationMessage_accountId,
+    redactConversationMessage_conversationId,
+    redactConversationMessage_messageId,
+
+    -- * Destructuring the Response
+    RedactConversationMessageResponse (..),
+    newRedactConversationMessageResponse,
+
+    -- * Response Lenses
+    redactConversationMessageResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newRedactConversationMessage' smart constructor.
+data RedactConversationMessage = RedactConversationMessage'
+  { -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The conversation ID.
+    conversationId :: Prelude.Text,
+    -- | The message ID.
+    messageId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RedactConversationMessage' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'redactConversationMessage_accountId' - The Amazon Chime account ID.
+--
+-- 'conversationId', 'redactConversationMessage_conversationId' - The conversation ID.
+--
+-- 'messageId', 'redactConversationMessage_messageId' - The message ID.
+newRedactConversationMessage ::
+  -- | 'accountId'
+  Prelude.Text ->
+  -- | 'conversationId'
+  Prelude.Text ->
+  -- | 'messageId'
+  Prelude.Text ->
+  RedactConversationMessage
+newRedactConversationMessage
+  pAccountId_
+  pConversationId_
+  pMessageId_ =
+    RedactConversationMessage'
+      { accountId = pAccountId_,
+        conversationId = pConversationId_,
+        messageId = pMessageId_
+      }
+
+-- | The Amazon Chime account ID.
+redactConversationMessage_accountId :: Lens.Lens' RedactConversationMessage Prelude.Text
+redactConversationMessage_accountId = Lens.lens (\RedactConversationMessage' {accountId} -> accountId) (\s@RedactConversationMessage' {} a -> s {accountId = a} :: RedactConversationMessage)
+
+-- | The conversation ID.
+redactConversationMessage_conversationId :: Lens.Lens' RedactConversationMessage Prelude.Text
+redactConversationMessage_conversationId = Lens.lens (\RedactConversationMessage' {conversationId} -> conversationId) (\s@RedactConversationMessage' {} a -> s {conversationId = a} :: RedactConversationMessage)
+
+-- | The message ID.
+redactConversationMessage_messageId :: Lens.Lens' RedactConversationMessage Prelude.Text
+redactConversationMessage_messageId = Lens.lens (\RedactConversationMessage' {messageId} -> messageId) (\s@RedactConversationMessage' {} a -> s {messageId = a} :: RedactConversationMessage)
+
+instance Core.AWSRequest RedactConversationMessage where
+  type
+    AWSResponse RedactConversationMessage =
+      RedactConversationMessageResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          RedactConversationMessageResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable RedactConversationMessage where
+  hashWithSalt _salt RedactConversationMessage' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` conversationId
+      `Prelude.hashWithSalt` messageId
+
+instance Prelude.NFData RedactConversationMessage where
+  rnf RedactConversationMessage' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf conversationId
+      `Prelude.seq` Prelude.rnf messageId
+
+instance Data.ToHeaders RedactConversationMessage where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON RedactConversationMessage where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath RedactConversationMessage where
+  toPath RedactConversationMessage' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS accountId,
+        "/conversations/",
+        Data.toBS conversationId,
+        "/messages/",
+        Data.toBS messageId
+      ]
+
+instance Data.ToQuery RedactConversationMessage where
+  toQuery =
+    Prelude.const
+      (Prelude.mconcat ["operation=redact"])
+
+-- | /See:/ 'newRedactConversationMessageResponse' smart constructor.
+data RedactConversationMessageResponse = RedactConversationMessageResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RedactConversationMessageResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'redactConversationMessageResponse_httpStatus' - The response's http status code.
+newRedactConversationMessageResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  RedactConversationMessageResponse
+newRedactConversationMessageResponse pHttpStatus_ =
+  RedactConversationMessageResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+redactConversationMessageResponse_httpStatus :: Lens.Lens' RedactConversationMessageResponse Prelude.Int
+redactConversationMessageResponse_httpStatus = Lens.lens (\RedactConversationMessageResponse' {httpStatus} -> httpStatus) (\s@RedactConversationMessageResponse' {} a -> s {httpStatus = a} :: RedactConversationMessageResponse)
+
+instance
+  Prelude.NFData
+    RedactConversationMessageResponse
+  where
+  rnf RedactConversationMessageResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/RedactRoomMessage.hs b/gen/Amazonka/Chime/RedactRoomMessage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/RedactRoomMessage.hs
@@ -0,0 +1,182 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.RedactRoomMessage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Redacts the specified message from the specified Amazon Chime channel.
+module Amazonka.Chime.RedactRoomMessage
+  ( -- * Creating a Request
+    RedactRoomMessage (..),
+    newRedactRoomMessage,
+
+    -- * Request Lenses
+    redactRoomMessage_accountId,
+    redactRoomMessage_roomId,
+    redactRoomMessage_messageId,
+
+    -- * Destructuring the Response
+    RedactRoomMessageResponse (..),
+    newRedactRoomMessageResponse,
+
+    -- * Response Lenses
+    redactRoomMessageResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newRedactRoomMessage' smart constructor.
+data RedactRoomMessage = RedactRoomMessage'
+  { -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The room ID.
+    roomId :: Prelude.Text,
+    -- | The message ID.
+    messageId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RedactRoomMessage' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'redactRoomMessage_accountId' - The Amazon Chime account ID.
+--
+-- 'roomId', 'redactRoomMessage_roomId' - The room ID.
+--
+-- 'messageId', 'redactRoomMessage_messageId' - The message ID.
+newRedactRoomMessage ::
+  -- | 'accountId'
+  Prelude.Text ->
+  -- | 'roomId'
+  Prelude.Text ->
+  -- | 'messageId'
+  Prelude.Text ->
+  RedactRoomMessage
+newRedactRoomMessage pAccountId_ pRoomId_ pMessageId_ =
+  RedactRoomMessage'
+    { accountId = pAccountId_,
+      roomId = pRoomId_,
+      messageId = pMessageId_
+    }
+
+-- | The Amazon Chime account ID.
+redactRoomMessage_accountId :: Lens.Lens' RedactRoomMessage Prelude.Text
+redactRoomMessage_accountId = Lens.lens (\RedactRoomMessage' {accountId} -> accountId) (\s@RedactRoomMessage' {} a -> s {accountId = a} :: RedactRoomMessage)
+
+-- | The room ID.
+redactRoomMessage_roomId :: Lens.Lens' RedactRoomMessage Prelude.Text
+redactRoomMessage_roomId = Lens.lens (\RedactRoomMessage' {roomId} -> roomId) (\s@RedactRoomMessage' {} a -> s {roomId = a} :: RedactRoomMessage)
+
+-- | The message ID.
+redactRoomMessage_messageId :: Lens.Lens' RedactRoomMessage Prelude.Text
+redactRoomMessage_messageId = Lens.lens (\RedactRoomMessage' {messageId} -> messageId) (\s@RedactRoomMessage' {} a -> s {messageId = a} :: RedactRoomMessage)
+
+instance Core.AWSRequest RedactRoomMessage where
+  type
+    AWSResponse RedactRoomMessage =
+      RedactRoomMessageResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          RedactRoomMessageResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable RedactRoomMessage where
+  hashWithSalt _salt RedactRoomMessage' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` roomId
+      `Prelude.hashWithSalt` messageId
+
+instance Prelude.NFData RedactRoomMessage where
+  rnf RedactRoomMessage' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf roomId
+      `Prelude.seq` Prelude.rnf messageId
+
+instance Data.ToHeaders RedactRoomMessage where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON RedactRoomMessage where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath RedactRoomMessage where
+  toPath RedactRoomMessage' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS accountId,
+        "/rooms/",
+        Data.toBS roomId,
+        "/messages/",
+        Data.toBS messageId
+      ]
+
+instance Data.ToQuery RedactRoomMessage where
+  toQuery =
+    Prelude.const
+      (Prelude.mconcat ["operation=redact"])
+
+-- | /See:/ 'newRedactRoomMessageResponse' smart constructor.
+data RedactRoomMessageResponse = RedactRoomMessageResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RedactRoomMessageResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'redactRoomMessageResponse_httpStatus' - The response's http status code.
+newRedactRoomMessageResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  RedactRoomMessageResponse
+newRedactRoomMessageResponse pHttpStatus_ =
+  RedactRoomMessageResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+redactRoomMessageResponse_httpStatus :: Lens.Lens' RedactRoomMessageResponse Prelude.Int
+redactRoomMessageResponse_httpStatus = Lens.lens (\RedactRoomMessageResponse' {httpStatus} -> httpStatus) (\s@RedactRoomMessageResponse' {} a -> s {httpStatus = a} :: RedactRoomMessageResponse)
+
+instance Prelude.NFData RedactRoomMessageResponse where
+  rnf RedactRoomMessageResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/RegenerateSecurityToken.hs b/gen/Amazonka/Chime/RegenerateSecurityToken.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/RegenerateSecurityToken.hs
@@ -0,0 +1,182 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.RegenerateSecurityToken
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Regenerates the security token for a bot.
+module Amazonka.Chime.RegenerateSecurityToken
+  ( -- * Creating a Request
+    RegenerateSecurityToken (..),
+    newRegenerateSecurityToken,
+
+    -- * Request Lenses
+    regenerateSecurityToken_accountId,
+    regenerateSecurityToken_botId,
+
+    -- * Destructuring the Response
+    RegenerateSecurityTokenResponse (..),
+    newRegenerateSecurityTokenResponse,
+
+    -- * Response Lenses
+    regenerateSecurityTokenResponse_bot,
+    regenerateSecurityTokenResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newRegenerateSecurityToken' smart constructor.
+data RegenerateSecurityToken = RegenerateSecurityToken'
+  { -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The bot ID.
+    botId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RegenerateSecurityToken' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'regenerateSecurityToken_accountId' - The Amazon Chime account ID.
+--
+-- 'botId', 'regenerateSecurityToken_botId' - The bot ID.
+newRegenerateSecurityToken ::
+  -- | 'accountId'
+  Prelude.Text ->
+  -- | 'botId'
+  Prelude.Text ->
+  RegenerateSecurityToken
+newRegenerateSecurityToken pAccountId_ pBotId_ =
+  RegenerateSecurityToken'
+    { accountId = pAccountId_,
+      botId = pBotId_
+    }
+
+-- | The Amazon Chime account ID.
+regenerateSecurityToken_accountId :: Lens.Lens' RegenerateSecurityToken Prelude.Text
+regenerateSecurityToken_accountId = Lens.lens (\RegenerateSecurityToken' {accountId} -> accountId) (\s@RegenerateSecurityToken' {} a -> s {accountId = a} :: RegenerateSecurityToken)
+
+-- | The bot ID.
+regenerateSecurityToken_botId :: Lens.Lens' RegenerateSecurityToken Prelude.Text
+regenerateSecurityToken_botId = Lens.lens (\RegenerateSecurityToken' {botId} -> botId) (\s@RegenerateSecurityToken' {} a -> s {botId = a} :: RegenerateSecurityToken)
+
+instance Core.AWSRequest RegenerateSecurityToken where
+  type
+    AWSResponse RegenerateSecurityToken =
+      RegenerateSecurityTokenResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          RegenerateSecurityTokenResponse'
+            Prelude.<$> (x Data..?> "Bot")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable RegenerateSecurityToken where
+  hashWithSalt _salt RegenerateSecurityToken' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` botId
+
+instance Prelude.NFData RegenerateSecurityToken where
+  rnf RegenerateSecurityToken' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf botId
+
+instance Data.ToHeaders RegenerateSecurityToken where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON RegenerateSecurityToken where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath RegenerateSecurityToken where
+  toPath RegenerateSecurityToken' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS accountId,
+        "/bots/",
+        Data.toBS botId
+      ]
+
+instance Data.ToQuery RegenerateSecurityToken where
+  toQuery =
+    Prelude.const
+      ( Prelude.mconcat
+          ["operation=regenerate-security-token"]
+      )
+
+-- | /See:/ 'newRegenerateSecurityTokenResponse' smart constructor.
+data RegenerateSecurityTokenResponse = RegenerateSecurityTokenResponse'
+  { bot :: Prelude.Maybe Bot,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RegenerateSecurityTokenResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bot', 'regenerateSecurityTokenResponse_bot' - Undocumented member.
+--
+-- 'httpStatus', 'regenerateSecurityTokenResponse_httpStatus' - The response's http status code.
+newRegenerateSecurityTokenResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  RegenerateSecurityTokenResponse
+newRegenerateSecurityTokenResponse pHttpStatus_ =
+  RegenerateSecurityTokenResponse'
+    { bot =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+regenerateSecurityTokenResponse_bot :: Lens.Lens' RegenerateSecurityTokenResponse (Prelude.Maybe Bot)
+regenerateSecurityTokenResponse_bot = Lens.lens (\RegenerateSecurityTokenResponse' {bot} -> bot) (\s@RegenerateSecurityTokenResponse' {} a -> s {bot = a} :: RegenerateSecurityTokenResponse)
+
+-- | The response's http status code.
+regenerateSecurityTokenResponse_httpStatus :: Lens.Lens' RegenerateSecurityTokenResponse Prelude.Int
+regenerateSecurityTokenResponse_httpStatus = Lens.lens (\RegenerateSecurityTokenResponse' {httpStatus} -> httpStatus) (\s@RegenerateSecurityTokenResponse' {} a -> s {httpStatus = a} :: RegenerateSecurityTokenResponse)
+
+instance
+  Prelude.NFData
+    RegenerateSecurityTokenResponse
+  where
+  rnf RegenerateSecurityTokenResponse' {..} =
+    Prelude.rnf bot
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/ResetPersonalPIN.hs b/gen/Amazonka/Chime/ResetPersonalPIN.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ResetPersonalPIN.hs
@@ -0,0 +1,179 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ResetPersonalPIN
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Resets the personal meeting PIN for the specified user on an Amazon
+-- Chime account. Returns the User object with the updated personal meeting
+-- PIN.
+module Amazonka.Chime.ResetPersonalPIN
+  ( -- * Creating a Request
+    ResetPersonalPIN (..),
+    newResetPersonalPIN,
+
+    -- * Request Lenses
+    resetPersonalPIN_accountId,
+    resetPersonalPIN_userId,
+
+    -- * Destructuring the Response
+    ResetPersonalPINResponse (..),
+    newResetPersonalPINResponse,
+
+    -- * Response Lenses
+    resetPersonalPINResponse_user,
+    resetPersonalPINResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newResetPersonalPIN' smart constructor.
+data ResetPersonalPIN = ResetPersonalPIN'
+  { -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The user ID.
+    userId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ResetPersonalPIN' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'resetPersonalPIN_accountId' - The Amazon Chime account ID.
+--
+-- 'userId', 'resetPersonalPIN_userId' - The user ID.
+newResetPersonalPIN ::
+  -- | 'accountId'
+  Prelude.Text ->
+  -- | 'userId'
+  Prelude.Text ->
+  ResetPersonalPIN
+newResetPersonalPIN pAccountId_ pUserId_ =
+  ResetPersonalPIN'
+    { accountId = pAccountId_,
+      userId = pUserId_
+    }
+
+-- | The Amazon Chime account ID.
+resetPersonalPIN_accountId :: Lens.Lens' ResetPersonalPIN Prelude.Text
+resetPersonalPIN_accountId = Lens.lens (\ResetPersonalPIN' {accountId} -> accountId) (\s@ResetPersonalPIN' {} a -> s {accountId = a} :: ResetPersonalPIN)
+
+-- | The user ID.
+resetPersonalPIN_userId :: Lens.Lens' ResetPersonalPIN Prelude.Text
+resetPersonalPIN_userId = Lens.lens (\ResetPersonalPIN' {userId} -> userId) (\s@ResetPersonalPIN' {} a -> s {userId = a} :: ResetPersonalPIN)
+
+instance Core.AWSRequest ResetPersonalPIN where
+  type
+    AWSResponse ResetPersonalPIN =
+      ResetPersonalPINResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ResetPersonalPINResponse'
+            Prelude.<$> (x Data..?> "User")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ResetPersonalPIN where
+  hashWithSalt _salt ResetPersonalPIN' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` userId
+
+instance Prelude.NFData ResetPersonalPIN where
+  rnf ResetPersonalPIN' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf userId
+
+instance Data.ToHeaders ResetPersonalPIN where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON ResetPersonalPIN where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath ResetPersonalPIN where
+  toPath ResetPersonalPIN' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS accountId,
+        "/users/",
+        Data.toBS userId
+      ]
+
+instance Data.ToQuery ResetPersonalPIN where
+  toQuery =
+    Prelude.const
+      (Prelude.mconcat ["operation=reset-personal-pin"])
+
+-- | /See:/ 'newResetPersonalPINResponse' smart constructor.
+data ResetPersonalPINResponse = ResetPersonalPINResponse'
+  { -- | The user details and new personal meeting PIN.
+    user :: Prelude.Maybe User,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ResetPersonalPINResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'user', 'resetPersonalPINResponse_user' - The user details and new personal meeting PIN.
+--
+-- 'httpStatus', 'resetPersonalPINResponse_httpStatus' - The response's http status code.
+newResetPersonalPINResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ResetPersonalPINResponse
+newResetPersonalPINResponse pHttpStatus_ =
+  ResetPersonalPINResponse'
+    { user = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The user details and new personal meeting PIN.
+resetPersonalPINResponse_user :: Lens.Lens' ResetPersonalPINResponse (Prelude.Maybe User)
+resetPersonalPINResponse_user = Lens.lens (\ResetPersonalPINResponse' {user} -> user) (\s@ResetPersonalPINResponse' {} a -> s {user = a} :: ResetPersonalPINResponse)
+
+-- | The response's http status code.
+resetPersonalPINResponse_httpStatus :: Lens.Lens' ResetPersonalPINResponse Prelude.Int
+resetPersonalPINResponse_httpStatus = Lens.lens (\ResetPersonalPINResponse' {httpStatus} -> httpStatus) (\s@ResetPersonalPINResponse' {} a -> s {httpStatus = a} :: ResetPersonalPINResponse)
+
+instance Prelude.NFData ResetPersonalPINResponse where
+  rnf ResetPersonalPINResponse' {..} =
+    Prelude.rnf user
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/RestorePhoneNumber.hs b/gen/Amazonka/Chime/RestorePhoneNumber.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/RestorePhoneNumber.hs
@@ -0,0 +1,161 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.RestorePhoneNumber
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Moves a phone number from the __Deletion queue__ back into the phone
+-- number __Inventory__.
+module Amazonka.Chime.RestorePhoneNumber
+  ( -- * Creating a Request
+    RestorePhoneNumber (..),
+    newRestorePhoneNumber,
+
+    -- * Request Lenses
+    restorePhoneNumber_phoneNumberId,
+
+    -- * Destructuring the Response
+    RestorePhoneNumberResponse (..),
+    newRestorePhoneNumberResponse,
+
+    -- * Response Lenses
+    restorePhoneNumberResponse_phoneNumber,
+    restorePhoneNumberResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newRestorePhoneNumber' smart constructor.
+data RestorePhoneNumber = RestorePhoneNumber'
+  { -- | The phone number.
+    phoneNumberId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RestorePhoneNumber' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'phoneNumberId', 'restorePhoneNumber_phoneNumberId' - The phone number.
+newRestorePhoneNumber ::
+  -- | 'phoneNumberId'
+  Prelude.Text ->
+  RestorePhoneNumber
+newRestorePhoneNumber pPhoneNumberId_ =
+  RestorePhoneNumber'
+    { phoneNumberId =
+        pPhoneNumberId_
+    }
+
+-- | The phone number.
+restorePhoneNumber_phoneNumberId :: Lens.Lens' RestorePhoneNumber Prelude.Text
+restorePhoneNumber_phoneNumberId = Lens.lens (\RestorePhoneNumber' {phoneNumberId} -> phoneNumberId) (\s@RestorePhoneNumber' {} a -> s {phoneNumberId = a} :: RestorePhoneNumber)
+
+instance Core.AWSRequest RestorePhoneNumber where
+  type
+    AWSResponse RestorePhoneNumber =
+      RestorePhoneNumberResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          RestorePhoneNumberResponse'
+            Prelude.<$> (x Data..?> "PhoneNumber")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable RestorePhoneNumber where
+  hashWithSalt _salt RestorePhoneNumber' {..} =
+    _salt `Prelude.hashWithSalt` phoneNumberId
+
+instance Prelude.NFData RestorePhoneNumber where
+  rnf RestorePhoneNumber' {..} =
+    Prelude.rnf phoneNumberId
+
+instance Data.ToHeaders RestorePhoneNumber where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON RestorePhoneNumber where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath RestorePhoneNumber where
+  toPath RestorePhoneNumber' {..} =
+    Prelude.mconcat
+      ["/phone-numbers/", Data.toBS phoneNumberId]
+
+instance Data.ToQuery RestorePhoneNumber where
+  toQuery =
+    Prelude.const
+      (Prelude.mconcat ["operation=restore"])
+
+-- | /See:/ 'newRestorePhoneNumberResponse' smart constructor.
+data RestorePhoneNumberResponse = RestorePhoneNumberResponse'
+  { -- | The phone number details.
+    phoneNumber :: Prelude.Maybe PhoneNumber,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RestorePhoneNumberResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'phoneNumber', 'restorePhoneNumberResponse_phoneNumber' - The phone number details.
+--
+-- 'httpStatus', 'restorePhoneNumberResponse_httpStatus' - The response's http status code.
+newRestorePhoneNumberResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  RestorePhoneNumberResponse
+newRestorePhoneNumberResponse pHttpStatus_ =
+  RestorePhoneNumberResponse'
+    { phoneNumber =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The phone number details.
+restorePhoneNumberResponse_phoneNumber :: Lens.Lens' RestorePhoneNumberResponse (Prelude.Maybe PhoneNumber)
+restorePhoneNumberResponse_phoneNumber = Lens.lens (\RestorePhoneNumberResponse' {phoneNumber} -> phoneNumber) (\s@RestorePhoneNumberResponse' {} a -> s {phoneNumber = a} :: RestorePhoneNumberResponse)
+
+-- | The response's http status code.
+restorePhoneNumberResponse_httpStatus :: Lens.Lens' RestorePhoneNumberResponse Prelude.Int
+restorePhoneNumberResponse_httpStatus = Lens.lens (\RestorePhoneNumberResponse' {httpStatus} -> httpStatus) (\s@RestorePhoneNumberResponse' {} a -> s {httpStatus = a} :: RestorePhoneNumberResponse)
+
+instance Prelude.NFData RestorePhoneNumberResponse where
+  rnf RestorePhoneNumberResponse' {..} =
+    Prelude.rnf phoneNumber
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/SearchAvailablePhoneNumbers.hs b/gen/Amazonka/Chime/SearchAvailablePhoneNumbers.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/SearchAvailablePhoneNumbers.hs
@@ -0,0 +1,281 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.SearchAvailablePhoneNumbers
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Searches for phone numbers that can be ordered. For US numbers, provide
+-- at least one of the following search filters: @AreaCode@, @City@,
+-- @State@, or @TollFreePrefix@. If you provide @City@, you must also
+-- provide @State@. Numbers outside the US only support the
+-- @PhoneNumberType@ filter, which you must use.
+module Amazonka.Chime.SearchAvailablePhoneNumbers
+  ( -- * Creating a Request
+    SearchAvailablePhoneNumbers (..),
+    newSearchAvailablePhoneNumbers,
+
+    -- * Request Lenses
+    searchAvailablePhoneNumbers_areaCode,
+    searchAvailablePhoneNumbers_city,
+    searchAvailablePhoneNumbers_country,
+    searchAvailablePhoneNumbers_maxResults,
+    searchAvailablePhoneNumbers_nextToken,
+    searchAvailablePhoneNumbers_phoneNumberType,
+    searchAvailablePhoneNumbers_state,
+    searchAvailablePhoneNumbers_tollFreePrefix,
+
+    -- * Destructuring the Response
+    SearchAvailablePhoneNumbersResponse (..),
+    newSearchAvailablePhoneNumbersResponse,
+
+    -- * Response Lenses
+    searchAvailablePhoneNumbersResponse_e164PhoneNumbers,
+    searchAvailablePhoneNumbersResponse_nextToken,
+    searchAvailablePhoneNumbersResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newSearchAvailablePhoneNumbers' smart constructor.
+data SearchAvailablePhoneNumbers = SearchAvailablePhoneNumbers'
+  { -- | The area code used to filter results. Only applies to the US.
+    areaCode :: Prelude.Maybe Prelude.Text,
+    -- | The city used to filter results. Only applies to the US.
+    city :: Prelude.Maybe Prelude.Text,
+    -- | The country used to filter results. Defaults to the US Format: ISO
+    -- 3166-1 alpha-2.
+    country :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of results to return in a single call.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token used to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The phone number type used to filter results. Required for non-US
+    -- numbers.
+    phoneNumberType :: Prelude.Maybe PhoneNumberType,
+    -- | The state used to filter results. Required only if you provide @City@.
+    -- Only applies to the US.
+    state :: Prelude.Maybe Prelude.Text,
+    -- | The toll-free prefix that you use to filter results. Only applies to the
+    -- US.
+    tollFreePrefix :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchAvailablePhoneNumbers' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'areaCode', 'searchAvailablePhoneNumbers_areaCode' - The area code used to filter results. Only applies to the US.
+--
+-- 'city', 'searchAvailablePhoneNumbers_city' - The city used to filter results. Only applies to the US.
+--
+-- 'country', 'searchAvailablePhoneNumbers_country' - The country used to filter results. Defaults to the US Format: ISO
+-- 3166-1 alpha-2.
+--
+-- 'maxResults', 'searchAvailablePhoneNumbers_maxResults' - The maximum number of results to return in a single call.
+--
+-- 'nextToken', 'searchAvailablePhoneNumbers_nextToken' - The token used to retrieve the next page of results.
+--
+-- 'phoneNumberType', 'searchAvailablePhoneNumbers_phoneNumberType' - The phone number type used to filter results. Required for non-US
+-- numbers.
+--
+-- 'state', 'searchAvailablePhoneNumbers_state' - The state used to filter results. Required only if you provide @City@.
+-- Only applies to the US.
+--
+-- 'tollFreePrefix', 'searchAvailablePhoneNumbers_tollFreePrefix' - The toll-free prefix that you use to filter results. Only applies to the
+-- US.
+newSearchAvailablePhoneNumbers ::
+  SearchAvailablePhoneNumbers
+newSearchAvailablePhoneNumbers =
+  SearchAvailablePhoneNumbers'
+    { areaCode =
+        Prelude.Nothing,
+      city = Prelude.Nothing,
+      country = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      phoneNumberType = Prelude.Nothing,
+      state = Prelude.Nothing,
+      tollFreePrefix = Prelude.Nothing
+    }
+
+-- | The area code used to filter results. Only applies to the US.
+searchAvailablePhoneNumbers_areaCode :: Lens.Lens' SearchAvailablePhoneNumbers (Prelude.Maybe Prelude.Text)
+searchAvailablePhoneNumbers_areaCode = Lens.lens (\SearchAvailablePhoneNumbers' {areaCode} -> areaCode) (\s@SearchAvailablePhoneNumbers' {} a -> s {areaCode = a} :: SearchAvailablePhoneNumbers)
+
+-- | The city used to filter results. Only applies to the US.
+searchAvailablePhoneNumbers_city :: Lens.Lens' SearchAvailablePhoneNumbers (Prelude.Maybe Prelude.Text)
+searchAvailablePhoneNumbers_city = Lens.lens (\SearchAvailablePhoneNumbers' {city} -> city) (\s@SearchAvailablePhoneNumbers' {} a -> s {city = a} :: SearchAvailablePhoneNumbers)
+
+-- | The country used to filter results. Defaults to the US Format: ISO
+-- 3166-1 alpha-2.
+searchAvailablePhoneNumbers_country :: Lens.Lens' SearchAvailablePhoneNumbers (Prelude.Maybe Prelude.Text)
+searchAvailablePhoneNumbers_country = Lens.lens (\SearchAvailablePhoneNumbers' {country} -> country) (\s@SearchAvailablePhoneNumbers' {} a -> s {country = a} :: SearchAvailablePhoneNumbers)
+
+-- | The maximum number of results to return in a single call.
+searchAvailablePhoneNumbers_maxResults :: Lens.Lens' SearchAvailablePhoneNumbers (Prelude.Maybe Prelude.Natural)
+searchAvailablePhoneNumbers_maxResults = Lens.lens (\SearchAvailablePhoneNumbers' {maxResults} -> maxResults) (\s@SearchAvailablePhoneNumbers' {} a -> s {maxResults = a} :: SearchAvailablePhoneNumbers)
+
+-- | The token used to retrieve the next page of results.
+searchAvailablePhoneNumbers_nextToken :: Lens.Lens' SearchAvailablePhoneNumbers (Prelude.Maybe Prelude.Text)
+searchAvailablePhoneNumbers_nextToken = Lens.lens (\SearchAvailablePhoneNumbers' {nextToken} -> nextToken) (\s@SearchAvailablePhoneNumbers' {} a -> s {nextToken = a} :: SearchAvailablePhoneNumbers)
+
+-- | The phone number type used to filter results. Required for non-US
+-- numbers.
+searchAvailablePhoneNumbers_phoneNumberType :: Lens.Lens' SearchAvailablePhoneNumbers (Prelude.Maybe PhoneNumberType)
+searchAvailablePhoneNumbers_phoneNumberType = Lens.lens (\SearchAvailablePhoneNumbers' {phoneNumberType} -> phoneNumberType) (\s@SearchAvailablePhoneNumbers' {} a -> s {phoneNumberType = a} :: SearchAvailablePhoneNumbers)
+
+-- | The state used to filter results. Required only if you provide @City@.
+-- Only applies to the US.
+searchAvailablePhoneNumbers_state :: Lens.Lens' SearchAvailablePhoneNumbers (Prelude.Maybe Prelude.Text)
+searchAvailablePhoneNumbers_state = Lens.lens (\SearchAvailablePhoneNumbers' {state} -> state) (\s@SearchAvailablePhoneNumbers' {} a -> s {state = a} :: SearchAvailablePhoneNumbers)
+
+-- | The toll-free prefix that you use to filter results. Only applies to the
+-- US.
+searchAvailablePhoneNumbers_tollFreePrefix :: Lens.Lens' SearchAvailablePhoneNumbers (Prelude.Maybe Prelude.Text)
+searchAvailablePhoneNumbers_tollFreePrefix = Lens.lens (\SearchAvailablePhoneNumbers' {tollFreePrefix} -> tollFreePrefix) (\s@SearchAvailablePhoneNumbers' {} a -> s {tollFreePrefix = a} :: SearchAvailablePhoneNumbers)
+
+instance Core.AWSRequest SearchAvailablePhoneNumbers where
+  type
+    AWSResponse SearchAvailablePhoneNumbers =
+      SearchAvailablePhoneNumbersResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          SearchAvailablePhoneNumbersResponse'
+            Prelude.<$> ( x
+                            Data..?> "E164PhoneNumbers"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable SearchAvailablePhoneNumbers where
+  hashWithSalt _salt SearchAvailablePhoneNumbers' {..} =
+    _salt
+      `Prelude.hashWithSalt` areaCode
+      `Prelude.hashWithSalt` city
+      `Prelude.hashWithSalt` country
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` phoneNumberType
+      `Prelude.hashWithSalt` state
+      `Prelude.hashWithSalt` tollFreePrefix
+
+instance Prelude.NFData SearchAvailablePhoneNumbers where
+  rnf SearchAvailablePhoneNumbers' {..} =
+    Prelude.rnf areaCode
+      `Prelude.seq` Prelude.rnf city
+      `Prelude.seq` Prelude.rnf country
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf phoneNumberType
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf tollFreePrefix
+
+instance Data.ToHeaders SearchAvailablePhoneNumbers where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath SearchAvailablePhoneNumbers where
+  toPath = Prelude.const "/search"
+
+instance Data.ToQuery SearchAvailablePhoneNumbers where
+  toQuery SearchAvailablePhoneNumbers' {..} =
+    Prelude.mconcat
+      [ "area-code" Data.=: areaCode,
+        "city" Data.=: city,
+        "country" Data.=: country,
+        "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken,
+        "phone-number-type" Data.=: phoneNumberType,
+        "state" Data.=: state,
+        "toll-free-prefix" Data.=: tollFreePrefix,
+        "type=phone-numbers"
+      ]
+
+-- | /See:/ 'newSearchAvailablePhoneNumbersResponse' smart constructor.
+data SearchAvailablePhoneNumbersResponse = SearchAvailablePhoneNumbersResponse'
+  { -- | List of phone numbers, in E.164 format.
+    e164PhoneNumbers :: Prelude.Maybe [Data.Sensitive Prelude.Text],
+    -- | The token used to retrieve the next page of search results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchAvailablePhoneNumbersResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'e164PhoneNumbers', 'searchAvailablePhoneNumbersResponse_e164PhoneNumbers' - List of phone numbers, in E.164 format.
+--
+-- 'nextToken', 'searchAvailablePhoneNumbersResponse_nextToken' - The token used to retrieve the next page of search results.
+--
+-- 'httpStatus', 'searchAvailablePhoneNumbersResponse_httpStatus' - The response's http status code.
+newSearchAvailablePhoneNumbersResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  SearchAvailablePhoneNumbersResponse
+newSearchAvailablePhoneNumbersResponse pHttpStatus_ =
+  SearchAvailablePhoneNumbersResponse'
+    { e164PhoneNumbers =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | List of phone numbers, in E.164 format.
+searchAvailablePhoneNumbersResponse_e164PhoneNumbers :: Lens.Lens' SearchAvailablePhoneNumbersResponse (Prelude.Maybe [Prelude.Text])
+searchAvailablePhoneNumbersResponse_e164PhoneNumbers = Lens.lens (\SearchAvailablePhoneNumbersResponse' {e164PhoneNumbers} -> e164PhoneNumbers) (\s@SearchAvailablePhoneNumbersResponse' {} a -> s {e164PhoneNumbers = a} :: SearchAvailablePhoneNumbersResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token used to retrieve the next page of search results.
+searchAvailablePhoneNumbersResponse_nextToken :: Lens.Lens' SearchAvailablePhoneNumbersResponse (Prelude.Maybe Prelude.Text)
+searchAvailablePhoneNumbersResponse_nextToken = Lens.lens (\SearchAvailablePhoneNumbersResponse' {nextToken} -> nextToken) (\s@SearchAvailablePhoneNumbersResponse' {} a -> s {nextToken = a} :: SearchAvailablePhoneNumbersResponse)
+
+-- | The response's http status code.
+searchAvailablePhoneNumbersResponse_httpStatus :: Lens.Lens' SearchAvailablePhoneNumbersResponse Prelude.Int
+searchAvailablePhoneNumbersResponse_httpStatus = Lens.lens (\SearchAvailablePhoneNumbersResponse' {httpStatus} -> httpStatus) (\s@SearchAvailablePhoneNumbersResponse' {} a -> s {httpStatus = a} :: SearchAvailablePhoneNumbersResponse)
+
+instance
+  Prelude.NFData
+    SearchAvailablePhoneNumbersResponse
+  where
+  rnf SearchAvailablePhoneNumbersResponse' {..} =
+    Prelude.rnf e164PhoneNumbers
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/SendChannelMessage.hs b/gen/Amazonka/Chime/SendChannelMessage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/SendChannelMessage.hs
@@ -0,0 +1,279 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.SendChannelMessage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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.
+module Amazonka.Chime.SendChannelMessage
+  ( -- * Creating a Request
+    SendChannelMessage (..),
+    newSendChannelMessage,
+
+    -- * Request Lenses
+    sendChannelMessage_chimeBearer,
+    sendChannelMessage_metadata,
+    sendChannelMessage_channelArn,
+    sendChannelMessage_content,
+    sendChannelMessage_type,
+    sendChannelMessage_persistence,
+    sendChannelMessage_clientRequestToken,
+
+    -- * Destructuring the Response
+    SendChannelMessageResponse (..),
+    newSendChannelMessageResponse,
+
+    -- * Response Lenses
+    sendChannelMessageResponse_channelArn,
+    sendChannelMessageResponse_messageId,
+    sendChannelMessageResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newSendChannelMessage' smart constructor.
+data SendChannelMessage = SendChannelMessage'
+  { -- | The @AppInstanceUserArn@ of the user that makes the API call.
+    chimeBearer :: Prelude.Maybe Prelude.Text,
+    -- | The optional metadata for each message.
+    metadata :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The ARN of the channel.
+    channelArn :: Prelude.Text,
+    -- | The content of the message.
+    content :: Data.Sensitive Prelude.Text,
+    -- | The type of message, @STANDARD@ or @CONTROL@.
+    type' :: ChannelMessageType,
+    -- | Boolean that controls whether the message is persisted on the back end.
+    -- Required.
+    persistence :: ChannelMessagePersistenceType,
+    -- | The @Idempotency@ token for each client request.
+    clientRequestToken :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SendChannelMessage' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chimeBearer', 'sendChannelMessage_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
+--
+-- 'metadata', 'sendChannelMessage_metadata' - The optional metadata for each message.
+--
+-- 'channelArn', 'sendChannelMessage_channelArn' - The ARN of the channel.
+--
+-- 'content', 'sendChannelMessage_content' - The content of the message.
+--
+-- 'type'', 'sendChannelMessage_type' - The type of message, @STANDARD@ or @CONTROL@.
+--
+-- 'persistence', 'sendChannelMessage_persistence' - Boolean that controls whether the message is persisted on the back end.
+-- Required.
+--
+-- 'clientRequestToken', 'sendChannelMessage_clientRequestToken' - The @Idempotency@ token for each client request.
+newSendChannelMessage ::
+  -- | 'channelArn'
+  Prelude.Text ->
+  -- | 'content'
+  Prelude.Text ->
+  -- | 'type''
+  ChannelMessageType ->
+  -- | 'persistence'
+  ChannelMessagePersistenceType ->
+  -- | 'clientRequestToken'
+  Prelude.Text ->
+  SendChannelMessage
+newSendChannelMessage
+  pChannelArn_
+  pContent_
+  pType_
+  pPersistence_
+  pClientRequestToken_ =
+    SendChannelMessage'
+      { chimeBearer = Prelude.Nothing,
+        metadata = Prelude.Nothing,
+        channelArn = pChannelArn_,
+        content = Data._Sensitive Lens.# pContent_,
+        type' = pType_,
+        persistence = pPersistence_,
+        clientRequestToken =
+          Data._Sensitive Lens.# pClientRequestToken_
+      }
+
+-- | The @AppInstanceUserArn@ of the user that makes the API call.
+sendChannelMessage_chimeBearer :: Lens.Lens' SendChannelMessage (Prelude.Maybe Prelude.Text)
+sendChannelMessage_chimeBearer = Lens.lens (\SendChannelMessage' {chimeBearer} -> chimeBearer) (\s@SendChannelMessage' {} a -> s {chimeBearer = a} :: SendChannelMessage)
+
+-- | The optional metadata for each message.
+sendChannelMessage_metadata :: Lens.Lens' SendChannelMessage (Prelude.Maybe Prelude.Text)
+sendChannelMessage_metadata = Lens.lens (\SendChannelMessage' {metadata} -> metadata) (\s@SendChannelMessage' {} a -> s {metadata = a} :: SendChannelMessage) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The ARN of the channel.
+sendChannelMessage_channelArn :: Lens.Lens' SendChannelMessage Prelude.Text
+sendChannelMessage_channelArn = Lens.lens (\SendChannelMessage' {channelArn} -> channelArn) (\s@SendChannelMessage' {} a -> s {channelArn = a} :: SendChannelMessage)
+
+-- | The content of the message.
+sendChannelMessage_content :: Lens.Lens' SendChannelMessage Prelude.Text
+sendChannelMessage_content = Lens.lens (\SendChannelMessage' {content} -> content) (\s@SendChannelMessage' {} a -> s {content = a} :: SendChannelMessage) Prelude.. Data._Sensitive
+
+-- | The type of message, @STANDARD@ or @CONTROL@.
+sendChannelMessage_type :: Lens.Lens' SendChannelMessage ChannelMessageType
+sendChannelMessage_type = Lens.lens (\SendChannelMessage' {type'} -> type') (\s@SendChannelMessage' {} a -> s {type' = a} :: SendChannelMessage)
+
+-- | Boolean that controls whether the message is persisted on the back end.
+-- Required.
+sendChannelMessage_persistence :: Lens.Lens' SendChannelMessage ChannelMessagePersistenceType
+sendChannelMessage_persistence = Lens.lens (\SendChannelMessage' {persistence} -> persistence) (\s@SendChannelMessage' {} a -> s {persistence = a} :: SendChannelMessage)
+
+-- | The @Idempotency@ token for each client request.
+sendChannelMessage_clientRequestToken :: Lens.Lens' SendChannelMessage Prelude.Text
+sendChannelMessage_clientRequestToken = Lens.lens (\SendChannelMessage' {clientRequestToken} -> clientRequestToken) (\s@SendChannelMessage' {} a -> s {clientRequestToken = a} :: SendChannelMessage) Prelude.. Data._Sensitive
+
+instance Core.AWSRequest SendChannelMessage where
+  type
+    AWSResponse SendChannelMessage =
+      SendChannelMessageResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          SendChannelMessageResponse'
+            Prelude.<$> (x Data..?> "ChannelArn")
+            Prelude.<*> (x Data..?> "MessageId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable SendChannelMessage where
+  hashWithSalt _salt SendChannelMessage' {..} =
+    _salt
+      `Prelude.hashWithSalt` chimeBearer
+      `Prelude.hashWithSalt` metadata
+      `Prelude.hashWithSalt` channelArn
+      `Prelude.hashWithSalt` content
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` persistence
+      `Prelude.hashWithSalt` clientRequestToken
+
+instance Prelude.NFData SendChannelMessage where
+  rnf SendChannelMessage' {..} =
+    Prelude.rnf chimeBearer
+      `Prelude.seq` Prelude.rnf metadata
+      `Prelude.seq` Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf content
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf persistence
+      `Prelude.seq` Prelude.rnf clientRequestToken
+
+instance Data.ToHeaders SendChannelMessage where
+  toHeaders SendChannelMessage' {..} =
+    Prelude.mconcat
+      ["x-amz-chime-bearer" Data.=# chimeBearer]
+
+instance Data.ToJSON SendChannelMessage where
+  toJSON SendChannelMessage' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Metadata" Data..=) Prelude.<$> metadata,
+            Prelude.Just ("Content" Data..= content),
+            Prelude.Just ("Type" Data..= type'),
+            Prelude.Just ("Persistence" Data..= persistence),
+            Prelude.Just
+              ("ClientRequestToken" Data..= clientRequestToken)
+          ]
+      )
+
+instance Data.ToPath SendChannelMessage where
+  toPath SendChannelMessage' {..} =
+    Prelude.mconcat
+      ["/channels/", Data.toBS channelArn, "/messages"]
+
+instance Data.ToQuery SendChannelMessage where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newSendChannelMessageResponse' smart constructor.
+data SendChannelMessageResponse = SendChannelMessageResponse'
+  { -- | The ARN of the channel.
+    channelArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID string assigned to each message.
+    messageId :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SendChannelMessageResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channelArn', 'sendChannelMessageResponse_channelArn' - The ARN of the channel.
+--
+-- 'messageId', 'sendChannelMessageResponse_messageId' - The ID string assigned to each message.
+--
+-- 'httpStatus', 'sendChannelMessageResponse_httpStatus' - The response's http status code.
+newSendChannelMessageResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  SendChannelMessageResponse
+newSendChannelMessageResponse pHttpStatus_ =
+  SendChannelMessageResponse'
+    { channelArn =
+        Prelude.Nothing,
+      messageId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of the channel.
+sendChannelMessageResponse_channelArn :: Lens.Lens' SendChannelMessageResponse (Prelude.Maybe Prelude.Text)
+sendChannelMessageResponse_channelArn = Lens.lens (\SendChannelMessageResponse' {channelArn} -> channelArn) (\s@SendChannelMessageResponse' {} a -> s {channelArn = a} :: SendChannelMessageResponse)
+
+-- | The ID string assigned to each message.
+sendChannelMessageResponse_messageId :: Lens.Lens' SendChannelMessageResponse (Prelude.Maybe Prelude.Text)
+sendChannelMessageResponse_messageId = Lens.lens (\SendChannelMessageResponse' {messageId} -> messageId) (\s@SendChannelMessageResponse' {} a -> s {messageId = a} :: SendChannelMessageResponse)
+
+-- | The response's http status code.
+sendChannelMessageResponse_httpStatus :: Lens.Lens' SendChannelMessageResponse Prelude.Int
+sendChannelMessageResponse_httpStatus = Lens.lens (\SendChannelMessageResponse' {httpStatus} -> httpStatus) (\s@SendChannelMessageResponse' {} a -> s {httpStatus = a} :: SendChannelMessageResponse)
+
+instance Prelude.NFData SendChannelMessageResponse where
+  rnf SendChannelMessageResponse' {..} =
+    Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf messageId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/StartMeetingTranscription.hs b/gen/Amazonka/Chime/StartMeetingTranscription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/StartMeetingTranscription.hs
@@ -0,0 +1,178 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.StartMeetingTranscription
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Starts transcription for the specified @meetingId@.
+module Amazonka.Chime.StartMeetingTranscription
+  ( -- * Creating a Request
+    StartMeetingTranscription (..),
+    newStartMeetingTranscription,
+
+    -- * Request Lenses
+    startMeetingTranscription_meetingId,
+    startMeetingTranscription_transcriptionConfiguration,
+
+    -- * Destructuring the Response
+    StartMeetingTranscriptionResponse (..),
+    newStartMeetingTranscriptionResponse,
+
+    -- * Response Lenses
+    startMeetingTranscriptionResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newStartMeetingTranscription' smart constructor.
+data StartMeetingTranscription = StartMeetingTranscription'
+  { -- | The unique ID of the meeting being transcribed.
+    meetingId :: Prelude.Text,
+    -- | The configuration for the current transcription operation. Must contain
+    -- @EngineTranscribeSettings@ or @EngineTranscribeMedicalSettings@.
+    transcriptionConfiguration :: TranscriptionConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartMeetingTranscription' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'meetingId', 'startMeetingTranscription_meetingId' - The unique ID of the meeting being transcribed.
+--
+-- 'transcriptionConfiguration', 'startMeetingTranscription_transcriptionConfiguration' - The configuration for the current transcription operation. Must contain
+-- @EngineTranscribeSettings@ or @EngineTranscribeMedicalSettings@.
+newStartMeetingTranscription ::
+  -- | 'meetingId'
+  Prelude.Text ->
+  -- | 'transcriptionConfiguration'
+  TranscriptionConfiguration ->
+  StartMeetingTranscription
+newStartMeetingTranscription
+  pMeetingId_
+  pTranscriptionConfiguration_ =
+    StartMeetingTranscription'
+      { meetingId = pMeetingId_,
+        transcriptionConfiguration =
+          pTranscriptionConfiguration_
+      }
+
+-- | The unique ID of the meeting being transcribed.
+startMeetingTranscription_meetingId :: Lens.Lens' StartMeetingTranscription Prelude.Text
+startMeetingTranscription_meetingId = Lens.lens (\StartMeetingTranscription' {meetingId} -> meetingId) (\s@StartMeetingTranscription' {} a -> s {meetingId = a} :: StartMeetingTranscription)
+
+-- | The configuration for the current transcription operation. Must contain
+-- @EngineTranscribeSettings@ or @EngineTranscribeMedicalSettings@.
+startMeetingTranscription_transcriptionConfiguration :: Lens.Lens' StartMeetingTranscription TranscriptionConfiguration
+startMeetingTranscription_transcriptionConfiguration = Lens.lens (\StartMeetingTranscription' {transcriptionConfiguration} -> transcriptionConfiguration) (\s@StartMeetingTranscription' {} a -> s {transcriptionConfiguration = a} :: StartMeetingTranscription)
+
+instance Core.AWSRequest StartMeetingTranscription where
+  type
+    AWSResponse StartMeetingTranscription =
+      StartMeetingTranscriptionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          StartMeetingTranscriptionResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable StartMeetingTranscription where
+  hashWithSalt _salt StartMeetingTranscription' {..} =
+    _salt
+      `Prelude.hashWithSalt` meetingId
+      `Prelude.hashWithSalt` transcriptionConfiguration
+
+instance Prelude.NFData StartMeetingTranscription where
+  rnf StartMeetingTranscription' {..} =
+    Prelude.rnf meetingId
+      `Prelude.seq` Prelude.rnf transcriptionConfiguration
+
+instance Data.ToHeaders StartMeetingTranscription where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON StartMeetingTranscription where
+  toJSON StartMeetingTranscription' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "TranscriptionConfiguration"
+                  Data..= transcriptionConfiguration
+              )
+          ]
+      )
+
+instance Data.ToPath StartMeetingTranscription where
+  toPath StartMeetingTranscription' {..} =
+    Prelude.mconcat
+      ["/meetings/", Data.toBS meetingId, "/transcription"]
+
+instance Data.ToQuery StartMeetingTranscription where
+  toQuery =
+    Prelude.const (Prelude.mconcat ["operation=start"])
+
+-- | /See:/ 'newStartMeetingTranscriptionResponse' smart constructor.
+data StartMeetingTranscriptionResponse = StartMeetingTranscriptionResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartMeetingTranscriptionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'startMeetingTranscriptionResponse_httpStatus' - The response's http status code.
+newStartMeetingTranscriptionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StartMeetingTranscriptionResponse
+newStartMeetingTranscriptionResponse pHttpStatus_ =
+  StartMeetingTranscriptionResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+startMeetingTranscriptionResponse_httpStatus :: Lens.Lens' StartMeetingTranscriptionResponse Prelude.Int
+startMeetingTranscriptionResponse_httpStatus = Lens.lens (\StartMeetingTranscriptionResponse' {httpStatus} -> httpStatus) (\s@StartMeetingTranscriptionResponse' {} a -> s {httpStatus = a} :: StartMeetingTranscriptionResponse)
+
+instance
+  Prelude.NFData
+    StartMeetingTranscriptionResponse
+  where
+  rnf StartMeetingTranscriptionResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/StopMeetingTranscription.hs b/gen/Amazonka/Chime/StopMeetingTranscription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/StopMeetingTranscription.hs
@@ -0,0 +1,147 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.StopMeetingTranscription
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Stops transcription for the specified @meetingId@.
+module Amazonka.Chime.StopMeetingTranscription
+  ( -- * Creating a Request
+    StopMeetingTranscription (..),
+    newStopMeetingTranscription,
+
+    -- * Request Lenses
+    stopMeetingTranscription_meetingId,
+
+    -- * Destructuring the Response
+    StopMeetingTranscriptionResponse (..),
+    newStopMeetingTranscriptionResponse,
+
+    -- * Response Lenses
+    stopMeetingTranscriptionResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newStopMeetingTranscription' smart constructor.
+data StopMeetingTranscription = StopMeetingTranscription'
+  { -- | The unique ID of the meeting for which you stop transcription.
+    meetingId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopMeetingTranscription' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'meetingId', 'stopMeetingTranscription_meetingId' - The unique ID of the meeting for which you stop transcription.
+newStopMeetingTranscription ::
+  -- | 'meetingId'
+  Prelude.Text ->
+  StopMeetingTranscription
+newStopMeetingTranscription pMeetingId_ =
+  StopMeetingTranscription' {meetingId = pMeetingId_}
+
+-- | The unique ID of the meeting for which you stop transcription.
+stopMeetingTranscription_meetingId :: Lens.Lens' StopMeetingTranscription Prelude.Text
+stopMeetingTranscription_meetingId = Lens.lens (\StopMeetingTranscription' {meetingId} -> meetingId) (\s@StopMeetingTranscription' {} a -> s {meetingId = a} :: StopMeetingTranscription)
+
+instance Core.AWSRequest StopMeetingTranscription where
+  type
+    AWSResponse StopMeetingTranscription =
+      StopMeetingTranscriptionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          StopMeetingTranscriptionResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable StopMeetingTranscription where
+  hashWithSalt _salt StopMeetingTranscription' {..} =
+    _salt `Prelude.hashWithSalt` meetingId
+
+instance Prelude.NFData StopMeetingTranscription where
+  rnf StopMeetingTranscription' {..} =
+    Prelude.rnf meetingId
+
+instance Data.ToHeaders StopMeetingTranscription where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON StopMeetingTranscription where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath StopMeetingTranscription where
+  toPath StopMeetingTranscription' {..} =
+    Prelude.mconcat
+      ["/meetings/", Data.toBS meetingId, "/transcription"]
+
+instance Data.ToQuery StopMeetingTranscription where
+  toQuery =
+    Prelude.const (Prelude.mconcat ["operation=stop"])
+
+-- | /See:/ 'newStopMeetingTranscriptionResponse' smart constructor.
+data StopMeetingTranscriptionResponse = StopMeetingTranscriptionResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopMeetingTranscriptionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'stopMeetingTranscriptionResponse_httpStatus' - The response's http status code.
+newStopMeetingTranscriptionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StopMeetingTranscriptionResponse
+newStopMeetingTranscriptionResponse pHttpStatus_ =
+  StopMeetingTranscriptionResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+stopMeetingTranscriptionResponse_httpStatus :: Lens.Lens' StopMeetingTranscriptionResponse Prelude.Int
+stopMeetingTranscriptionResponse_httpStatus = Lens.lens (\StopMeetingTranscriptionResponse' {httpStatus} -> httpStatus) (\s@StopMeetingTranscriptionResponse' {} a -> s {httpStatus = a} :: StopMeetingTranscriptionResponse)
+
+instance
+  Prelude.NFData
+    StopMeetingTranscriptionResponse
+  where
+  rnf StopMeetingTranscriptionResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/TagAttendee.hs b/gen/Amazonka/Chime/TagAttendee.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/TagAttendee.hs
@@ -0,0 +1,157 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.TagAttendee
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Applies the specified tags to the specified Amazon Chime SDK attendee.
+module Amazonka.Chime.TagAttendee
+  ( -- * Creating a Request
+    TagAttendee (..),
+    newTagAttendee,
+
+    -- * Request Lenses
+    tagAttendee_meetingId,
+    tagAttendee_attendeeId,
+    tagAttendee_tags,
+
+    -- * Destructuring the Response
+    TagAttendeeResponse (..),
+    newTagAttendeeResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newTagAttendee' smart constructor.
+data TagAttendee = TagAttendee'
+  { -- | The Amazon Chime SDK meeting ID.
+    meetingId :: Prelude.Text,
+    -- | The Amazon Chime SDK attendee ID.
+    attendeeId :: Prelude.Text,
+    -- | The tag key-value pairs.
+    tags :: Prelude.NonEmpty Tag
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagAttendee' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'meetingId', 'tagAttendee_meetingId' - The Amazon Chime SDK meeting ID.
+--
+-- 'attendeeId', 'tagAttendee_attendeeId' - The Amazon Chime SDK attendee ID.
+--
+-- 'tags', 'tagAttendee_tags' - The tag key-value pairs.
+newTagAttendee ::
+  -- | 'meetingId'
+  Prelude.Text ->
+  -- | 'attendeeId'
+  Prelude.Text ->
+  -- | 'tags'
+  Prelude.NonEmpty Tag ->
+  TagAttendee
+newTagAttendee pMeetingId_ pAttendeeId_ pTags_ =
+  TagAttendee'
+    { meetingId = pMeetingId_,
+      attendeeId = pAttendeeId_,
+      tags = Lens.coerced Lens.# pTags_
+    }
+
+-- | The Amazon Chime SDK meeting ID.
+tagAttendee_meetingId :: Lens.Lens' TagAttendee Prelude.Text
+tagAttendee_meetingId = Lens.lens (\TagAttendee' {meetingId} -> meetingId) (\s@TagAttendee' {} a -> s {meetingId = a} :: TagAttendee)
+
+-- | The Amazon Chime SDK attendee ID.
+tagAttendee_attendeeId :: Lens.Lens' TagAttendee Prelude.Text
+tagAttendee_attendeeId = Lens.lens (\TagAttendee' {attendeeId} -> attendeeId) (\s@TagAttendee' {} a -> s {attendeeId = a} :: TagAttendee)
+
+-- | The tag key-value pairs.
+tagAttendee_tags :: Lens.Lens' TagAttendee (Prelude.NonEmpty Tag)
+tagAttendee_tags = Lens.lens (\TagAttendee' {tags} -> tags) (\s@TagAttendee' {} a -> s {tags = a} :: TagAttendee) Prelude.. Lens.coerced
+
+instance Core.AWSRequest TagAttendee where
+  type AWSResponse TagAttendee = TagAttendeeResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response = Response.receiveNull TagAttendeeResponse'
+
+instance Prelude.Hashable TagAttendee where
+  hashWithSalt _salt TagAttendee' {..} =
+    _salt
+      `Prelude.hashWithSalt` meetingId
+      `Prelude.hashWithSalt` attendeeId
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData TagAttendee where
+  rnf TagAttendee' {..} =
+    Prelude.rnf meetingId
+      `Prelude.seq` Prelude.rnf attendeeId
+      `Prelude.seq` Prelude.rnf tags
+
+instance Data.ToHeaders TagAttendee where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON TagAttendee where
+  toJSON TagAttendee' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Tags" Data..= tags)]
+      )
+
+instance Data.ToPath TagAttendee where
+  toPath TagAttendee' {..} =
+    Prelude.mconcat
+      [ "/meetings/",
+        Data.toBS meetingId,
+        "/attendees/",
+        Data.toBS attendeeId,
+        "/tags"
+      ]
+
+instance Data.ToQuery TagAttendee where
+  toQuery =
+    Prelude.const (Prelude.mconcat ["operation=add"])
+
+-- | /See:/ 'newTagAttendeeResponse' smart constructor.
+data TagAttendeeResponse = TagAttendeeResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagAttendeeResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newTagAttendeeResponse ::
+  TagAttendeeResponse
+newTagAttendeeResponse = TagAttendeeResponse'
+
+instance Prelude.NFData TagAttendeeResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/TagMeeting.hs b/gen/Amazonka/Chime/TagMeeting.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/TagMeeting.hs
@@ -0,0 +1,138 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.TagMeeting
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Applies the specified tags to the specified Amazon Chime SDK meeting.
+module Amazonka.Chime.TagMeeting
+  ( -- * Creating a Request
+    TagMeeting (..),
+    newTagMeeting,
+
+    -- * Request Lenses
+    tagMeeting_meetingId,
+    tagMeeting_tags,
+
+    -- * Destructuring the Response
+    TagMeetingResponse (..),
+    newTagMeetingResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newTagMeeting' smart constructor.
+data TagMeeting = TagMeeting'
+  { -- | The Amazon Chime SDK meeting ID.
+    meetingId :: Prelude.Text,
+    -- | The tag key-value pairs.
+    tags :: Prelude.NonEmpty Tag
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagMeeting' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'meetingId', 'tagMeeting_meetingId' - The Amazon Chime SDK meeting ID.
+--
+-- 'tags', 'tagMeeting_tags' - The tag key-value pairs.
+newTagMeeting ::
+  -- | 'meetingId'
+  Prelude.Text ->
+  -- | 'tags'
+  Prelude.NonEmpty Tag ->
+  TagMeeting
+newTagMeeting pMeetingId_ pTags_ =
+  TagMeeting'
+    { meetingId = pMeetingId_,
+      tags = Lens.coerced Lens.# pTags_
+    }
+
+-- | The Amazon Chime SDK meeting ID.
+tagMeeting_meetingId :: Lens.Lens' TagMeeting Prelude.Text
+tagMeeting_meetingId = Lens.lens (\TagMeeting' {meetingId} -> meetingId) (\s@TagMeeting' {} a -> s {meetingId = a} :: TagMeeting)
+
+-- | The tag key-value pairs.
+tagMeeting_tags :: Lens.Lens' TagMeeting (Prelude.NonEmpty Tag)
+tagMeeting_tags = Lens.lens (\TagMeeting' {tags} -> tags) (\s@TagMeeting' {} a -> s {tags = a} :: TagMeeting) Prelude.. Lens.coerced
+
+instance Core.AWSRequest TagMeeting where
+  type AWSResponse TagMeeting = TagMeetingResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response = Response.receiveNull TagMeetingResponse'
+
+instance Prelude.Hashable TagMeeting where
+  hashWithSalt _salt TagMeeting' {..} =
+    _salt
+      `Prelude.hashWithSalt` meetingId
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData TagMeeting where
+  rnf TagMeeting' {..} =
+    Prelude.rnf meetingId
+      `Prelude.seq` Prelude.rnf tags
+
+instance Data.ToHeaders TagMeeting where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON TagMeeting where
+  toJSON TagMeeting' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Tags" Data..= tags)]
+      )
+
+instance Data.ToPath TagMeeting where
+  toPath TagMeeting' {..} =
+    Prelude.mconcat
+      ["/meetings/", Data.toBS meetingId, "/tags"]
+
+instance Data.ToQuery TagMeeting where
+  toQuery =
+    Prelude.const (Prelude.mconcat ["operation=add"])
+
+-- | /See:/ 'newTagMeetingResponse' smart constructor.
+data TagMeetingResponse = TagMeetingResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagMeetingResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newTagMeetingResponse ::
+  TagMeetingResponse
+newTagMeetingResponse = TagMeetingResponse'
+
+instance Prelude.NFData TagMeetingResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/TagResource.hs b/gen/Amazonka/Chime/TagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/TagResource.hs
@@ -0,0 +1,141 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.TagResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Applies the specified tags to the specified Amazon Chime SDK meeting
+-- resource.
+module Amazonka.Chime.TagResource
+  ( -- * Creating a Request
+    TagResource (..),
+    newTagResource,
+
+    -- * Request Lenses
+    tagResource_resourceARN,
+    tagResource_tags,
+
+    -- * Destructuring the Response
+    TagResourceResponse (..),
+    newTagResourceResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newTagResource' smart constructor.
+data TagResource = TagResource'
+  { -- | The resource ARN.
+    resourceARN :: Data.Sensitive Prelude.Text,
+    -- | The tag key-value pairs.
+    tags :: Prelude.NonEmpty Tag
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceARN', 'tagResource_resourceARN' - The resource ARN.
+--
+-- 'tags', 'tagResource_tags' - The tag key-value pairs.
+newTagResource ::
+  -- | 'resourceARN'
+  Prelude.Text ->
+  -- | 'tags'
+  Prelude.NonEmpty Tag ->
+  TagResource
+newTagResource pResourceARN_ pTags_ =
+  TagResource'
+    { resourceARN =
+        Data._Sensitive Lens.# pResourceARN_,
+      tags = Lens.coerced Lens.# pTags_
+    }
+
+-- | The resource ARN.
+tagResource_resourceARN :: Lens.Lens' TagResource Prelude.Text
+tagResource_resourceARN = Lens.lens (\TagResource' {resourceARN} -> resourceARN) (\s@TagResource' {} a -> s {resourceARN = a} :: TagResource) Prelude.. Data._Sensitive
+
+-- | The tag key-value pairs.
+tagResource_tags :: Lens.Lens' TagResource (Prelude.NonEmpty Tag)
+tagResource_tags = Lens.lens (\TagResource' {tags} -> tags) (\s@TagResource' {} a -> s {tags = a} :: TagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest TagResource where
+  type AWSResponse TagResource = TagResourceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response = Response.receiveNull TagResourceResponse'
+
+instance Prelude.Hashable TagResource where
+  hashWithSalt _salt TagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceARN
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData TagResource where
+  rnf TagResource' {..} =
+    Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf tags
+
+instance Data.ToHeaders TagResource where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON TagResource where
+  toJSON TagResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ResourceARN" Data..= resourceARN),
+            Prelude.Just ("Tags" Data..= tags)
+          ]
+      )
+
+instance Data.ToPath TagResource where
+  toPath = Prelude.const "/tags"
+
+instance Data.ToQuery TagResource where
+  toQuery =
+    Prelude.const
+      (Prelude.mconcat ["operation=tag-resource"])
+
+-- | /See:/ 'newTagResourceResponse' smart constructor.
+data TagResourceResponse = TagResourceResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newTagResourceResponse ::
+  TagResourceResponse
+newTagResourceResponse = TagResourceResponse'
+
+instance Prelude.NFData TagResourceResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/Types.hs b/gen/Amazonka/Chime/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types.hs
@@ -0,0 +1,1273 @@
+{-# LANGUAGE DisambiguateRecordFields #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _AccessDeniedException,
+    _BadRequestException,
+    _ConflictException,
+    _ForbiddenException,
+    _NotFoundException,
+    _ResourceLimitExceededException,
+    _ServiceFailureException,
+    _ServiceUnavailableException,
+    _ThrottledClientException,
+    _UnauthorizedClientException,
+    _UnprocessableEntityException,
+
+    -- * AccountStatus
+    AccountStatus (..),
+
+    -- * AccountType
+    AccountType (..),
+
+    -- * AppInstanceDataType
+    AppInstanceDataType (..),
+
+    -- * ArtifactsState
+    ArtifactsState (..),
+
+    -- * AudioMuxType
+    AudioMuxType (..),
+
+    -- * BotType
+    BotType (..),
+
+    -- * CallingNameStatus
+    CallingNameStatus (..),
+
+    -- * Capability
+    Capability (..),
+
+    -- * ChannelMembershipType
+    ChannelMembershipType (..),
+
+    -- * ChannelMessagePersistenceType
+    ChannelMessagePersistenceType (..),
+
+    -- * ChannelMessageType
+    ChannelMessageType (..),
+
+    -- * ChannelMode
+    ChannelMode (..),
+
+    -- * ChannelPrivacy
+    ChannelPrivacy (..),
+
+    -- * ContentMuxType
+    ContentMuxType (..),
+
+    -- * EmailStatus
+    EmailStatus (..),
+
+    -- * ErrorCode
+    ErrorCode (..),
+
+    -- * GeoMatchLevel
+    GeoMatchLevel (..),
+
+    -- * InviteStatus
+    InviteStatus (..),
+
+    -- * License
+    License (..),
+
+    -- * MediaPipelineSinkType
+    MediaPipelineSinkType (..),
+
+    -- * MediaPipelineSourceType
+    MediaPipelineSourceType (..),
+
+    -- * MediaPipelineStatus
+    MediaPipelineStatus (..),
+
+    -- * MemberType
+    MemberType (..),
+
+    -- * NotificationTarget
+    NotificationTarget (..),
+
+    -- * NumberSelectionBehavior
+    NumberSelectionBehavior (..),
+
+    -- * OrderedPhoneNumberStatus
+    OrderedPhoneNumberStatus (..),
+
+    -- * OriginationRouteProtocol
+    OriginationRouteProtocol (..),
+
+    -- * PhoneNumberAssociationName
+    PhoneNumberAssociationName (..),
+
+    -- * PhoneNumberOrderStatus
+    PhoneNumberOrderStatus (..),
+
+    -- * PhoneNumberProductType
+    PhoneNumberProductType (..),
+
+    -- * PhoneNumberStatus
+    PhoneNumberStatus (..),
+
+    -- * PhoneNumberType
+    PhoneNumberType (..),
+
+    -- * ProxySessionStatus
+    ProxySessionStatus (..),
+
+    -- * RegistrationStatus
+    RegistrationStatus (..),
+
+    -- * RoomMembershipRole
+    RoomMembershipRole (..),
+
+    -- * SipRuleTriggerType
+    SipRuleTriggerType (..),
+
+    -- * SortOrder
+    SortOrder (..),
+
+    -- * TranscribeContentIdentificationType
+    TranscribeContentIdentificationType (..),
+
+    -- * TranscribeContentRedactionType
+    TranscribeContentRedactionType (..),
+
+    -- * TranscribeLanguageCode
+    TranscribeLanguageCode (..),
+
+    -- * TranscribeMedicalContentIdentificationType
+    TranscribeMedicalContentIdentificationType (..),
+
+    -- * TranscribeMedicalLanguageCode
+    TranscribeMedicalLanguageCode (..),
+
+    -- * TranscribeMedicalRegion
+    TranscribeMedicalRegion (..),
+
+    -- * TranscribeMedicalSpecialty
+    TranscribeMedicalSpecialty (..),
+
+    -- * TranscribeMedicalType
+    TranscribeMedicalType (..),
+
+    -- * TranscribePartialResultsStability
+    TranscribePartialResultsStability (..),
+
+    -- * TranscribeRegion
+    TranscribeRegion (..),
+
+    -- * TranscribeVocabularyFilterMethod
+    TranscribeVocabularyFilterMethod (..),
+
+    -- * UserType
+    UserType (..),
+
+    -- * VideoMuxType
+    VideoMuxType (..),
+
+    -- * VoiceConnectorAwsRegion
+    VoiceConnectorAwsRegion (..),
+
+    -- * Account
+    Account (..),
+    newAccount,
+    account_accountStatus,
+    account_accountType,
+    account_createdTimestamp,
+    account_defaultLicense,
+    account_signinDelegateGroups,
+    account_supportedLicenses,
+    account_awsAccountId,
+    account_accountId,
+    account_name,
+
+    -- * AccountSettings
+    AccountSettings (..),
+    newAccountSettings,
+    accountSettings_disableRemoteControl,
+    accountSettings_enableDialOut,
+
+    -- * Address
+    Address (..),
+    newAddress,
+    address_city,
+    address_country,
+    address_postDirectional,
+    address_postalCode,
+    address_postalCodePlus4,
+    address_preDirectional,
+    address_state,
+    address_streetName,
+    address_streetNumber,
+    address_streetSuffix,
+
+    -- * AlexaForBusinessMetadata
+    AlexaForBusinessMetadata (..),
+    newAlexaForBusinessMetadata,
+    alexaForBusinessMetadata_alexaForBusinessRoomArn,
+    alexaForBusinessMetadata_isAlexaForBusinessEnabled,
+
+    -- * AppInstance
+    AppInstance (..),
+    newAppInstance,
+    appInstance_appInstanceArn,
+    appInstance_createdTimestamp,
+    appInstance_lastUpdatedTimestamp,
+    appInstance_metadata,
+    appInstance_name,
+
+    -- * AppInstanceAdmin
+    AppInstanceAdmin (..),
+    newAppInstanceAdmin,
+    appInstanceAdmin_admin,
+    appInstanceAdmin_appInstanceArn,
+    appInstanceAdmin_createdTimestamp,
+
+    -- * AppInstanceAdminSummary
+    AppInstanceAdminSummary (..),
+    newAppInstanceAdminSummary,
+    appInstanceAdminSummary_admin,
+
+    -- * AppInstanceRetentionSettings
+    AppInstanceRetentionSettings (..),
+    newAppInstanceRetentionSettings,
+    appInstanceRetentionSettings_channelRetentionSettings,
+
+    -- * AppInstanceStreamingConfiguration
+    AppInstanceStreamingConfiguration (..),
+    newAppInstanceStreamingConfiguration,
+    appInstanceStreamingConfiguration_appInstanceDataType,
+    appInstanceStreamingConfiguration_resourceArn,
+
+    -- * AppInstanceSummary
+    AppInstanceSummary (..),
+    newAppInstanceSummary,
+    appInstanceSummary_appInstanceArn,
+    appInstanceSummary_metadata,
+    appInstanceSummary_name,
+
+    -- * AppInstanceUser
+    AppInstanceUser (..),
+    newAppInstanceUser,
+    appInstanceUser_appInstanceUserArn,
+    appInstanceUser_createdTimestamp,
+    appInstanceUser_lastUpdatedTimestamp,
+    appInstanceUser_metadata,
+    appInstanceUser_name,
+
+    -- * AppInstanceUserMembershipSummary
+    AppInstanceUserMembershipSummary (..),
+    newAppInstanceUserMembershipSummary,
+    appInstanceUserMembershipSummary_readMarkerTimestamp,
+    appInstanceUserMembershipSummary_type,
+
+    -- * AppInstanceUserSummary
+    AppInstanceUserSummary (..),
+    newAppInstanceUserSummary,
+    appInstanceUserSummary_appInstanceUserArn,
+    appInstanceUserSummary_metadata,
+    appInstanceUserSummary_name,
+
+    -- * ArtifactsConfiguration
+    ArtifactsConfiguration (..),
+    newArtifactsConfiguration,
+    artifactsConfiguration_audio,
+    artifactsConfiguration_video,
+    artifactsConfiguration_content,
+
+    -- * Attendee
+    Attendee (..),
+    newAttendee,
+    attendee_attendeeId,
+    attendee_externalUserId,
+    attendee_joinToken,
+
+    -- * AudioArtifactsConfiguration
+    AudioArtifactsConfiguration (..),
+    newAudioArtifactsConfiguration,
+    audioArtifactsConfiguration_muxType,
+
+    -- * BatchChannelMemberships
+    BatchChannelMemberships (..),
+    newBatchChannelMemberships,
+    batchChannelMemberships_channelArn,
+    batchChannelMemberships_invitedBy,
+    batchChannelMemberships_members,
+    batchChannelMemberships_type,
+
+    -- * BatchCreateChannelMembershipError
+    BatchCreateChannelMembershipError (..),
+    newBatchCreateChannelMembershipError,
+    batchCreateChannelMembershipError_errorCode,
+    batchCreateChannelMembershipError_errorMessage,
+    batchCreateChannelMembershipError_memberArn,
+
+    -- * Bot
+    Bot (..),
+    newBot,
+    bot_botEmail,
+    bot_botId,
+    bot_botType,
+    bot_createdTimestamp,
+    bot_disabled,
+    bot_displayName,
+    bot_securityToken,
+    bot_updatedTimestamp,
+    bot_userId,
+
+    -- * BusinessCallingSettings
+    BusinessCallingSettings (..),
+    newBusinessCallingSettings,
+    businessCallingSettings_cdrBucket,
+
+    -- * CandidateAddress
+    CandidateAddress (..),
+    newCandidateAddress,
+    candidateAddress_city,
+    candidateAddress_country,
+    candidateAddress_postalCode,
+    candidateAddress_postalCodePlus4,
+    candidateAddress_state,
+    candidateAddress_streetInfo,
+    candidateAddress_streetNumber,
+
+    -- * Channel
+    Channel (..),
+    newChannel,
+    channel_channelArn,
+    channel_createdBy,
+    channel_createdTimestamp,
+    channel_lastMessageTimestamp,
+    channel_lastUpdatedTimestamp,
+    channel_metadata,
+    channel_mode,
+    channel_name,
+    channel_privacy,
+
+    -- * ChannelBan
+    ChannelBan (..),
+    newChannelBan,
+    channelBan_channelArn,
+    channelBan_createdBy,
+    channelBan_createdTimestamp,
+    channelBan_member,
+
+    -- * ChannelBanSummary
+    ChannelBanSummary (..),
+    newChannelBanSummary,
+    channelBanSummary_member,
+
+    -- * ChannelMembership
+    ChannelMembership (..),
+    newChannelMembership,
+    channelMembership_channelArn,
+    channelMembership_createdTimestamp,
+    channelMembership_invitedBy,
+    channelMembership_lastUpdatedTimestamp,
+    channelMembership_member,
+    channelMembership_type,
+
+    -- * ChannelMembershipForAppInstanceUserSummary
+    ChannelMembershipForAppInstanceUserSummary (..),
+    newChannelMembershipForAppInstanceUserSummary,
+    channelMembershipForAppInstanceUserSummary_appInstanceUserMembershipSummary,
+    channelMembershipForAppInstanceUserSummary_channelSummary,
+
+    -- * ChannelMembershipSummary
+    ChannelMembershipSummary (..),
+    newChannelMembershipSummary,
+    channelMembershipSummary_member,
+
+    -- * ChannelMessage
+    ChannelMessage (..),
+    newChannelMessage,
+    channelMessage_channelArn,
+    channelMessage_content,
+    channelMessage_createdTimestamp,
+    channelMessage_lastEditedTimestamp,
+    channelMessage_lastUpdatedTimestamp,
+    channelMessage_messageId,
+    channelMessage_metadata,
+    channelMessage_persistence,
+    channelMessage_redacted,
+    channelMessage_sender,
+    channelMessage_type,
+
+    -- * ChannelMessageSummary
+    ChannelMessageSummary (..),
+    newChannelMessageSummary,
+    channelMessageSummary_content,
+    channelMessageSummary_createdTimestamp,
+    channelMessageSummary_lastEditedTimestamp,
+    channelMessageSummary_lastUpdatedTimestamp,
+    channelMessageSummary_messageId,
+    channelMessageSummary_metadata,
+    channelMessageSummary_redacted,
+    channelMessageSummary_sender,
+    channelMessageSummary_type,
+
+    -- * ChannelModeratedByAppInstanceUserSummary
+    ChannelModeratedByAppInstanceUserSummary (..),
+    newChannelModeratedByAppInstanceUserSummary,
+    channelModeratedByAppInstanceUserSummary_channelSummary,
+
+    -- * ChannelModerator
+    ChannelModerator (..),
+    newChannelModerator,
+    channelModerator_channelArn,
+    channelModerator_createdBy,
+    channelModerator_createdTimestamp,
+    channelModerator_moderator,
+
+    -- * ChannelModeratorSummary
+    ChannelModeratorSummary (..),
+    newChannelModeratorSummary,
+    channelModeratorSummary_moderator,
+
+    -- * ChannelRetentionSettings
+    ChannelRetentionSettings (..),
+    newChannelRetentionSettings,
+    channelRetentionSettings_retentionDays,
+
+    -- * ChannelSummary
+    ChannelSummary (..),
+    newChannelSummary,
+    channelSummary_channelArn,
+    channelSummary_lastMessageTimestamp,
+    channelSummary_metadata,
+    channelSummary_mode,
+    channelSummary_name,
+    channelSummary_privacy,
+
+    -- * ChimeSdkMeetingConfiguration
+    ChimeSdkMeetingConfiguration (..),
+    newChimeSdkMeetingConfiguration,
+    chimeSdkMeetingConfiguration_artifactsConfiguration,
+    chimeSdkMeetingConfiguration_sourceConfiguration,
+
+    -- * ContentArtifactsConfiguration
+    ContentArtifactsConfiguration (..),
+    newContentArtifactsConfiguration,
+    contentArtifactsConfiguration_muxType,
+    contentArtifactsConfiguration_state,
+
+    -- * ConversationRetentionSettings
+    ConversationRetentionSettings (..),
+    newConversationRetentionSettings,
+    conversationRetentionSettings_retentionDays,
+
+    -- * CreateAttendeeError
+    CreateAttendeeError (..),
+    newCreateAttendeeError,
+    createAttendeeError_errorCode,
+    createAttendeeError_errorMessage,
+    createAttendeeError_externalUserId,
+
+    -- * CreateAttendeeRequestItem
+    CreateAttendeeRequestItem (..),
+    newCreateAttendeeRequestItem,
+    createAttendeeRequestItem_tags,
+    createAttendeeRequestItem_externalUserId,
+
+    -- * Credential
+    Credential (..),
+    newCredential,
+    credential_password,
+    credential_username,
+
+    -- * DNISEmergencyCallingConfiguration
+    DNISEmergencyCallingConfiguration (..),
+    newDNISEmergencyCallingConfiguration,
+    dNISEmergencyCallingConfiguration_testPhoneNumber,
+    dNISEmergencyCallingConfiguration_emergencyPhoneNumber,
+    dNISEmergencyCallingConfiguration_callingCountry,
+
+    -- * EmergencyCallingConfiguration
+    EmergencyCallingConfiguration (..),
+    newEmergencyCallingConfiguration,
+    emergencyCallingConfiguration_dnis,
+
+    -- * EngineTranscribeMedicalSettings
+    EngineTranscribeMedicalSettings (..),
+    newEngineTranscribeMedicalSettings,
+    engineTranscribeMedicalSettings_contentIdentificationType,
+    engineTranscribeMedicalSettings_region,
+    engineTranscribeMedicalSettings_vocabularyName,
+    engineTranscribeMedicalSettings_languageCode,
+    engineTranscribeMedicalSettings_specialty,
+    engineTranscribeMedicalSettings_type,
+
+    -- * EngineTranscribeSettings
+    EngineTranscribeSettings (..),
+    newEngineTranscribeSettings,
+    engineTranscribeSettings_contentIdentificationType,
+    engineTranscribeSettings_contentRedactionType,
+    engineTranscribeSettings_enablePartialResultsStabilization,
+    engineTranscribeSettings_languageModelName,
+    engineTranscribeSettings_partialResultsStability,
+    engineTranscribeSettings_piiEntityTypes,
+    engineTranscribeSettings_region,
+    engineTranscribeSettings_vocabularyFilterMethod,
+    engineTranscribeSettings_vocabularyFilterName,
+    engineTranscribeSettings_vocabularyName,
+    engineTranscribeSettings_languageCode,
+
+    -- * EventsConfiguration
+    EventsConfiguration (..),
+    newEventsConfiguration,
+    eventsConfiguration_botId,
+    eventsConfiguration_lambdaFunctionArn,
+    eventsConfiguration_outboundEventsHTTPSEndpoint,
+
+    -- * GeoMatchParams
+    GeoMatchParams (..),
+    newGeoMatchParams,
+    geoMatchParams_country,
+    geoMatchParams_areaCode,
+
+    -- * Identity
+    Identity (..),
+    newIdentity,
+    identity_arn,
+    identity_name,
+
+    -- * Invite
+    Invite (..),
+    newInvite,
+    invite_emailAddress,
+    invite_emailStatus,
+    invite_inviteId,
+    invite_status,
+
+    -- * LoggingConfiguration
+    LoggingConfiguration (..),
+    newLoggingConfiguration,
+    loggingConfiguration_enableMediaMetricLogs,
+    loggingConfiguration_enableSIPLogs,
+
+    -- * MediaCapturePipeline
+    MediaCapturePipeline (..),
+    newMediaCapturePipeline,
+    mediaCapturePipeline_chimeSdkMeetingConfiguration,
+    mediaCapturePipeline_createdTimestamp,
+    mediaCapturePipeline_mediaPipelineId,
+    mediaCapturePipeline_sinkArn,
+    mediaCapturePipeline_sinkType,
+    mediaCapturePipeline_sourceArn,
+    mediaCapturePipeline_sourceType,
+    mediaCapturePipeline_status,
+    mediaCapturePipeline_updatedTimestamp,
+
+    -- * MediaPlacement
+    MediaPlacement (..),
+    newMediaPlacement,
+    mediaPlacement_audioFallbackUrl,
+    mediaPlacement_audioHostUrl,
+    mediaPlacement_eventIngestionUrl,
+    mediaPlacement_screenDataUrl,
+    mediaPlacement_screenSharingUrl,
+    mediaPlacement_screenViewingUrl,
+    mediaPlacement_signalingUrl,
+    mediaPlacement_turnControlUrl,
+
+    -- * Meeting
+    Meeting (..),
+    newMeeting,
+    meeting_externalMeetingId,
+    meeting_mediaPlacement,
+    meeting_mediaRegion,
+    meeting_meetingId,
+
+    -- * MeetingNotificationConfiguration
+    MeetingNotificationConfiguration (..),
+    newMeetingNotificationConfiguration,
+    meetingNotificationConfiguration_snsTopicArn,
+    meetingNotificationConfiguration_sqsQueueArn,
+
+    -- * Member
+    Member (..),
+    newMember,
+    member_accountId,
+    member_email,
+    member_fullName,
+    member_memberId,
+    member_memberType,
+
+    -- * MemberError
+    MemberError (..),
+    newMemberError,
+    memberError_errorCode,
+    memberError_errorMessage,
+    memberError_memberId,
+
+    -- * MembershipItem
+    MembershipItem (..),
+    newMembershipItem,
+    membershipItem_memberId,
+    membershipItem_role,
+
+    -- * MessagingSessionEndpoint
+    MessagingSessionEndpoint (..),
+    newMessagingSessionEndpoint,
+    messagingSessionEndpoint_url,
+
+    -- * OrderedPhoneNumber
+    OrderedPhoneNumber (..),
+    newOrderedPhoneNumber,
+    orderedPhoneNumber_e164PhoneNumber,
+    orderedPhoneNumber_status,
+
+    -- * Origination
+    Origination (..),
+    newOrigination,
+    origination_disabled,
+    origination_routes,
+
+    -- * OriginationRoute
+    OriginationRoute (..),
+    newOriginationRoute,
+    originationRoute_host,
+    originationRoute_port,
+    originationRoute_priority,
+    originationRoute_protocol,
+    originationRoute_weight,
+
+    -- * Participant
+    Participant (..),
+    newParticipant,
+    participant_phoneNumber,
+    participant_proxyPhoneNumber,
+
+    -- * PhoneNumber
+    PhoneNumber (..),
+    newPhoneNumber,
+    phoneNumber_associations,
+    phoneNumber_callingName,
+    phoneNumber_callingNameStatus,
+    phoneNumber_capabilities,
+    phoneNumber_country,
+    phoneNumber_createdTimestamp,
+    phoneNumber_deletionTimestamp,
+    phoneNumber_e164PhoneNumber,
+    phoneNumber_phoneNumberId,
+    phoneNumber_productType,
+    phoneNumber_status,
+    phoneNumber_type,
+    phoneNumber_updatedTimestamp,
+
+    -- * PhoneNumberAssociation
+    PhoneNumberAssociation (..),
+    newPhoneNumberAssociation,
+    phoneNumberAssociation_associatedTimestamp,
+    phoneNumberAssociation_name,
+    phoneNumberAssociation_value,
+
+    -- * PhoneNumberCapabilities
+    PhoneNumberCapabilities (..),
+    newPhoneNumberCapabilities,
+    phoneNumberCapabilities_inboundCall,
+    phoneNumberCapabilities_inboundMMS,
+    phoneNumberCapabilities_inboundSMS,
+    phoneNumberCapabilities_outboundCall,
+    phoneNumberCapabilities_outboundMMS,
+    phoneNumberCapabilities_outboundSMS,
+
+    -- * PhoneNumberCountry
+    PhoneNumberCountry (..),
+    newPhoneNumberCountry,
+    phoneNumberCountry_countryCode,
+    phoneNumberCountry_supportedPhoneNumberTypes,
+
+    -- * PhoneNumberError
+    PhoneNumberError (..),
+    newPhoneNumberError,
+    phoneNumberError_errorCode,
+    phoneNumberError_errorMessage,
+    phoneNumberError_phoneNumberId,
+
+    -- * PhoneNumberOrder
+    PhoneNumberOrder (..),
+    newPhoneNumberOrder,
+    phoneNumberOrder_createdTimestamp,
+    phoneNumberOrder_orderedPhoneNumbers,
+    phoneNumberOrder_phoneNumberOrderId,
+    phoneNumberOrder_productType,
+    phoneNumberOrder_status,
+    phoneNumberOrder_updatedTimestamp,
+
+    -- * Proxy
+    Proxy (..),
+    newProxy,
+    proxy_defaultSessionExpiryMinutes,
+    proxy_disabled,
+    proxy_fallBackPhoneNumber,
+    proxy_phoneNumberCountries,
+
+    -- * ProxySession
+    ProxySession (..),
+    newProxySession,
+    proxySession_capabilities,
+    proxySession_createdTimestamp,
+    proxySession_endedTimestamp,
+    proxySession_expiryMinutes,
+    proxySession_geoMatchLevel,
+    proxySession_geoMatchParams,
+    proxySession_name,
+    proxySession_numberSelectionBehavior,
+    proxySession_participants,
+    proxySession_proxySessionId,
+    proxySession_status,
+    proxySession_updatedTimestamp,
+    proxySession_voiceConnectorId,
+
+    -- * RetentionSettings
+    RetentionSettings (..),
+    newRetentionSettings,
+    retentionSettings_conversationRetentionSettings,
+    retentionSettings_roomRetentionSettings,
+
+    -- * Room
+    Room (..),
+    newRoom,
+    room_accountId,
+    room_createdBy,
+    room_createdTimestamp,
+    room_name,
+    room_roomId,
+    room_updatedTimestamp,
+
+    -- * RoomMembership
+    RoomMembership (..),
+    newRoomMembership,
+    roomMembership_invitedBy,
+    roomMembership_member,
+    roomMembership_role,
+    roomMembership_roomId,
+    roomMembership_updatedTimestamp,
+
+    -- * RoomRetentionSettings
+    RoomRetentionSettings (..),
+    newRoomRetentionSettings,
+    roomRetentionSettings_retentionDays,
+
+    -- * SelectedVideoStreams
+    SelectedVideoStreams (..),
+    newSelectedVideoStreams,
+    selectedVideoStreams_attendeeIds,
+    selectedVideoStreams_externalUserIds,
+
+    -- * SigninDelegateGroup
+    SigninDelegateGroup (..),
+    newSigninDelegateGroup,
+    signinDelegateGroup_groupName,
+
+    -- * SipMediaApplication
+    SipMediaApplication (..),
+    newSipMediaApplication,
+    sipMediaApplication_awsRegion,
+    sipMediaApplication_createdTimestamp,
+    sipMediaApplication_endpoints,
+    sipMediaApplication_name,
+    sipMediaApplication_sipMediaApplicationId,
+    sipMediaApplication_updatedTimestamp,
+
+    -- * SipMediaApplicationCall
+    SipMediaApplicationCall (..),
+    newSipMediaApplicationCall,
+    sipMediaApplicationCall_transactionId,
+
+    -- * SipMediaApplicationEndpoint
+    SipMediaApplicationEndpoint (..),
+    newSipMediaApplicationEndpoint,
+    sipMediaApplicationEndpoint_lambdaArn,
+
+    -- * SipMediaApplicationLoggingConfiguration
+    SipMediaApplicationLoggingConfiguration (..),
+    newSipMediaApplicationLoggingConfiguration,
+    sipMediaApplicationLoggingConfiguration_enableSipMediaApplicationMessageLogs,
+
+    -- * SipRule
+    SipRule (..),
+    newSipRule,
+    sipRule_createdTimestamp,
+    sipRule_disabled,
+    sipRule_name,
+    sipRule_sipRuleId,
+    sipRule_targetApplications,
+    sipRule_triggerType,
+    sipRule_triggerValue,
+    sipRule_updatedTimestamp,
+
+    -- * SipRuleTargetApplication
+    SipRuleTargetApplication (..),
+    newSipRuleTargetApplication,
+    sipRuleTargetApplication_awsRegion,
+    sipRuleTargetApplication_priority,
+    sipRuleTargetApplication_sipMediaApplicationId,
+
+    -- * SourceConfiguration
+    SourceConfiguration (..),
+    newSourceConfiguration,
+    sourceConfiguration_selectedVideoStreams,
+
+    -- * StreamingConfiguration
+    StreamingConfiguration (..),
+    newStreamingConfiguration,
+    streamingConfiguration_disabled,
+    streamingConfiguration_streamingNotificationTargets,
+    streamingConfiguration_dataRetentionInHours,
+
+    -- * StreamingNotificationTarget
+    StreamingNotificationTarget (..),
+    newStreamingNotificationTarget,
+    streamingNotificationTarget_notificationTarget,
+
+    -- * Tag
+    Tag (..),
+    newTag,
+    tag_key,
+    tag_value,
+
+    -- * TelephonySettings
+    TelephonySettings (..),
+    newTelephonySettings,
+    telephonySettings_inboundCalling,
+    telephonySettings_outboundCalling,
+    telephonySettings_sms,
+
+    -- * Termination
+    Termination (..),
+    newTermination,
+    termination_callingRegions,
+    termination_cidrAllowedList,
+    termination_cpsLimit,
+    termination_defaultPhoneNumber,
+    termination_disabled,
+
+    -- * TerminationHealth
+    TerminationHealth (..),
+    newTerminationHealth,
+    terminationHealth_source,
+    terminationHealth_timestamp,
+
+    -- * TranscriptionConfiguration
+    TranscriptionConfiguration (..),
+    newTranscriptionConfiguration,
+    transcriptionConfiguration_engineTranscribeMedicalSettings,
+    transcriptionConfiguration_engineTranscribeSettings,
+
+    -- * UpdatePhoneNumberRequestItem
+    UpdatePhoneNumberRequestItem (..),
+    newUpdatePhoneNumberRequestItem,
+    updatePhoneNumberRequestItem_callingName,
+    updatePhoneNumberRequestItem_productType,
+    updatePhoneNumberRequestItem_phoneNumberId,
+
+    -- * UpdateUserRequestItem
+    UpdateUserRequestItem (..),
+    newUpdateUserRequestItem,
+    updateUserRequestItem_alexaForBusinessMetadata,
+    updateUserRequestItem_licenseType,
+    updateUserRequestItem_userType,
+    updateUserRequestItem_userId,
+
+    -- * User
+    User (..),
+    newUser,
+    user_accountId,
+    user_alexaForBusinessMetadata,
+    user_displayName,
+    user_invitedOn,
+    user_licenseType,
+    user_personalPIN,
+    user_primaryEmail,
+    user_primaryProvisionedNumber,
+    user_registeredOn,
+    user_userInvitationStatus,
+    user_userRegistrationStatus,
+    user_userType,
+    user_userId,
+
+    -- * UserError
+    UserError (..),
+    newUserError,
+    userError_errorCode,
+    userError_errorMessage,
+    userError_userId,
+
+    -- * UserSettings
+    UserSettings (..),
+    newUserSettings,
+    userSettings_telephony,
+
+    -- * VideoArtifactsConfiguration
+    VideoArtifactsConfiguration (..),
+    newVideoArtifactsConfiguration,
+    videoArtifactsConfiguration_muxType,
+    videoArtifactsConfiguration_state,
+
+    -- * VoiceConnector
+    VoiceConnector (..),
+    newVoiceConnector,
+    voiceConnector_awsRegion,
+    voiceConnector_createdTimestamp,
+    voiceConnector_name,
+    voiceConnector_outboundHostName,
+    voiceConnector_requireEncryption,
+    voiceConnector_updatedTimestamp,
+    voiceConnector_voiceConnectorArn,
+    voiceConnector_voiceConnectorId,
+
+    -- * VoiceConnectorGroup
+    VoiceConnectorGroup (..),
+    newVoiceConnectorGroup,
+    voiceConnectorGroup_createdTimestamp,
+    voiceConnectorGroup_name,
+    voiceConnectorGroup_updatedTimestamp,
+    voiceConnectorGroup_voiceConnectorGroupArn,
+    voiceConnectorGroup_voiceConnectorGroupId,
+    voiceConnectorGroup_voiceConnectorItems,
+
+    -- * VoiceConnectorItem
+    VoiceConnectorItem (..),
+    newVoiceConnectorItem,
+    voiceConnectorItem_voiceConnectorId,
+    voiceConnectorItem_priority,
+
+    -- * VoiceConnectorSettings
+    VoiceConnectorSettings (..),
+    newVoiceConnectorSettings,
+    voiceConnectorSettings_cdrBucket,
+  )
+where
+
+import Amazonka.Chime.Types.Account
+import Amazonka.Chime.Types.AccountSettings
+import Amazonka.Chime.Types.AccountStatus
+import Amazonka.Chime.Types.AccountType
+import Amazonka.Chime.Types.Address
+import Amazonka.Chime.Types.AlexaForBusinessMetadata
+import Amazonka.Chime.Types.AppInstance
+import Amazonka.Chime.Types.AppInstanceAdmin
+import Amazonka.Chime.Types.AppInstanceAdminSummary
+import Amazonka.Chime.Types.AppInstanceDataType
+import Amazonka.Chime.Types.AppInstanceRetentionSettings
+import Amazonka.Chime.Types.AppInstanceStreamingConfiguration
+import Amazonka.Chime.Types.AppInstanceSummary
+import Amazonka.Chime.Types.AppInstanceUser
+import Amazonka.Chime.Types.AppInstanceUserMembershipSummary
+import Amazonka.Chime.Types.AppInstanceUserSummary
+import Amazonka.Chime.Types.ArtifactsConfiguration
+import Amazonka.Chime.Types.ArtifactsState
+import Amazonka.Chime.Types.Attendee
+import Amazonka.Chime.Types.AudioArtifactsConfiguration
+import Amazonka.Chime.Types.AudioMuxType
+import Amazonka.Chime.Types.BatchChannelMemberships
+import Amazonka.Chime.Types.BatchCreateChannelMembershipError
+import Amazonka.Chime.Types.Bot
+import Amazonka.Chime.Types.BotType
+import Amazonka.Chime.Types.BusinessCallingSettings
+import Amazonka.Chime.Types.CallingNameStatus
+import Amazonka.Chime.Types.CandidateAddress
+import Amazonka.Chime.Types.Capability
+import Amazonka.Chime.Types.Channel
+import Amazonka.Chime.Types.ChannelBan
+import Amazonka.Chime.Types.ChannelBanSummary
+import Amazonka.Chime.Types.ChannelMembership
+import Amazonka.Chime.Types.ChannelMembershipForAppInstanceUserSummary
+import Amazonka.Chime.Types.ChannelMembershipSummary
+import Amazonka.Chime.Types.ChannelMembershipType
+import Amazonka.Chime.Types.ChannelMessage
+import Amazonka.Chime.Types.ChannelMessagePersistenceType
+import Amazonka.Chime.Types.ChannelMessageSummary
+import Amazonka.Chime.Types.ChannelMessageType
+import Amazonka.Chime.Types.ChannelMode
+import Amazonka.Chime.Types.ChannelModeratedByAppInstanceUserSummary
+import Amazonka.Chime.Types.ChannelModerator
+import Amazonka.Chime.Types.ChannelModeratorSummary
+import Amazonka.Chime.Types.ChannelPrivacy
+import Amazonka.Chime.Types.ChannelRetentionSettings
+import Amazonka.Chime.Types.ChannelSummary
+import Amazonka.Chime.Types.ChimeSdkMeetingConfiguration
+import Amazonka.Chime.Types.ContentArtifactsConfiguration
+import Amazonka.Chime.Types.ContentMuxType
+import Amazonka.Chime.Types.ConversationRetentionSettings
+import Amazonka.Chime.Types.CreateAttendeeError
+import Amazonka.Chime.Types.CreateAttendeeRequestItem
+import Amazonka.Chime.Types.Credential
+import Amazonka.Chime.Types.DNISEmergencyCallingConfiguration
+import Amazonka.Chime.Types.EmailStatus
+import Amazonka.Chime.Types.EmergencyCallingConfiguration
+import Amazonka.Chime.Types.EngineTranscribeMedicalSettings
+import Amazonka.Chime.Types.EngineTranscribeSettings
+import Amazonka.Chime.Types.ErrorCode
+import Amazonka.Chime.Types.EventsConfiguration
+import Amazonka.Chime.Types.GeoMatchLevel
+import Amazonka.Chime.Types.GeoMatchParams
+import Amazonka.Chime.Types.Identity
+import Amazonka.Chime.Types.Invite
+import Amazonka.Chime.Types.InviteStatus
+import Amazonka.Chime.Types.License
+import Amazonka.Chime.Types.LoggingConfiguration
+import Amazonka.Chime.Types.MediaCapturePipeline
+import Amazonka.Chime.Types.MediaPipelineSinkType
+import Amazonka.Chime.Types.MediaPipelineSourceType
+import Amazonka.Chime.Types.MediaPipelineStatus
+import Amazonka.Chime.Types.MediaPlacement
+import Amazonka.Chime.Types.Meeting
+import Amazonka.Chime.Types.MeetingNotificationConfiguration
+import Amazonka.Chime.Types.Member
+import Amazonka.Chime.Types.MemberError
+import Amazonka.Chime.Types.MemberType
+import Amazonka.Chime.Types.MembershipItem
+import Amazonka.Chime.Types.MessagingSessionEndpoint
+import Amazonka.Chime.Types.NotificationTarget
+import Amazonka.Chime.Types.NumberSelectionBehavior
+import Amazonka.Chime.Types.OrderedPhoneNumber
+import Amazonka.Chime.Types.OrderedPhoneNumberStatus
+import Amazonka.Chime.Types.Origination
+import Amazonka.Chime.Types.OriginationRoute
+import Amazonka.Chime.Types.OriginationRouteProtocol
+import Amazonka.Chime.Types.Participant
+import Amazonka.Chime.Types.PhoneNumber
+import Amazonka.Chime.Types.PhoneNumberAssociation
+import Amazonka.Chime.Types.PhoneNumberAssociationName
+import Amazonka.Chime.Types.PhoneNumberCapabilities
+import Amazonka.Chime.Types.PhoneNumberCountry
+import Amazonka.Chime.Types.PhoneNumberError
+import Amazonka.Chime.Types.PhoneNumberOrder
+import Amazonka.Chime.Types.PhoneNumberOrderStatus
+import Amazonka.Chime.Types.PhoneNumberProductType
+import Amazonka.Chime.Types.PhoneNumberStatus
+import Amazonka.Chime.Types.PhoneNumberType
+import Amazonka.Chime.Types.Proxy
+import Amazonka.Chime.Types.ProxySession
+import Amazonka.Chime.Types.ProxySessionStatus
+import Amazonka.Chime.Types.RegistrationStatus
+import Amazonka.Chime.Types.RetentionSettings
+import Amazonka.Chime.Types.Room
+import Amazonka.Chime.Types.RoomMembership
+import Amazonka.Chime.Types.RoomMembershipRole
+import Amazonka.Chime.Types.RoomRetentionSettings
+import Amazonka.Chime.Types.SelectedVideoStreams
+import Amazonka.Chime.Types.SigninDelegateGroup
+import Amazonka.Chime.Types.SipMediaApplication
+import Amazonka.Chime.Types.SipMediaApplicationCall
+import Amazonka.Chime.Types.SipMediaApplicationEndpoint
+import Amazonka.Chime.Types.SipMediaApplicationLoggingConfiguration
+import Amazonka.Chime.Types.SipRule
+import Amazonka.Chime.Types.SipRuleTargetApplication
+import Amazonka.Chime.Types.SipRuleTriggerType
+import Amazonka.Chime.Types.SortOrder
+import Amazonka.Chime.Types.SourceConfiguration
+import Amazonka.Chime.Types.StreamingConfiguration
+import Amazonka.Chime.Types.StreamingNotificationTarget
+import Amazonka.Chime.Types.Tag
+import Amazonka.Chime.Types.TelephonySettings
+import Amazonka.Chime.Types.Termination
+import Amazonka.Chime.Types.TerminationHealth
+import Amazonka.Chime.Types.TranscribeContentIdentificationType
+import Amazonka.Chime.Types.TranscribeContentRedactionType
+import Amazonka.Chime.Types.TranscribeLanguageCode
+import Amazonka.Chime.Types.TranscribeMedicalContentIdentificationType
+import Amazonka.Chime.Types.TranscribeMedicalLanguageCode
+import Amazonka.Chime.Types.TranscribeMedicalRegion
+import Amazonka.Chime.Types.TranscribeMedicalSpecialty
+import Amazonka.Chime.Types.TranscribeMedicalType
+import Amazonka.Chime.Types.TranscribePartialResultsStability
+import Amazonka.Chime.Types.TranscribeRegion
+import Amazonka.Chime.Types.TranscribeVocabularyFilterMethod
+import Amazonka.Chime.Types.TranscriptionConfiguration
+import Amazonka.Chime.Types.UpdatePhoneNumberRequestItem
+import Amazonka.Chime.Types.UpdateUserRequestItem
+import Amazonka.Chime.Types.User
+import Amazonka.Chime.Types.UserError
+import Amazonka.Chime.Types.UserSettings
+import Amazonka.Chime.Types.UserType
+import Amazonka.Chime.Types.VideoArtifactsConfiguration
+import Amazonka.Chime.Types.VideoMuxType
+import Amazonka.Chime.Types.VoiceConnector
+import Amazonka.Chime.Types.VoiceConnectorAwsRegion
+import Amazonka.Chime.Types.VoiceConnectorGroup
+import Amazonka.Chime.Types.VoiceConnectorItem
+import Amazonka.Chime.Types.VoiceConnectorSettings
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2018-05-01@ of the Amazon Chime SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "Chime",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "chime",
+      Core.signingName = "chime",
+      Core.version = "2018-05-01",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error = Core.parseJSONError "Chime",
+      Core.retry = retry
+    }
+  where
+    retry =
+      Core.Exponential
+        { Core.base = 5.0e-2,
+          Core.growth = 2,
+          Core.attempts = 5,
+          Core.check = check
+        }
+    check e
+      | Lens.has (Core.hasStatus 502) e =
+          Prelude.Just "bad_gateway"
+      | Lens.has (Core.hasStatus 504) e =
+          Prelude.Just "gateway_timeout"
+      | Lens.has (Core.hasStatus 500) e =
+          Prelude.Just "general_server_error"
+      | Lens.has (Core.hasStatus 509) e =
+          Prelude.Just "limit_exceeded"
+      | Lens.has
+          ( Core.hasCode "RequestThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "request_throttled_exception"
+      | Lens.has (Core.hasStatus 503) e =
+          Prelude.Just "service_unavailable"
+      | Lens.has
+          ( Core.hasCode "ThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttled_exception"
+      | Lens.has
+          ( Core.hasCode "Throttling"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling"
+      | Lens.has
+          ( Core.hasCode "ThrottlingException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling_exception"
+      | Lens.has
+          ( Core.hasCode
+              "ProvisionedThroughputExceededException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throughput_exceeded"
+      | Lens.has (Core.hasStatus 429) e =
+          Prelude.Just "too_many_requests"
+      | Prelude.otherwise = Prelude.Nothing
+
+-- | You don\'t have permissions to perform the requested operation.
+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_AccessDeniedException =
+  Core._MatchServiceError
+    defaultService
+    "AccessDeniedException"
+    Prelude.. Core.hasStatus 403
+
+-- | The input parameters don\'t match the service\'s restrictions.
+_BadRequestException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_BadRequestException =
+  Core._MatchServiceError
+    defaultService
+    "BadRequestException"
+    Prelude.. Core.hasStatus 400
+
+-- | The request could not be processed because of conflict in the current
+-- state of the resource.
+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConflictException =
+  Core._MatchServiceError
+    defaultService
+    "ConflictException"
+    Prelude.. Core.hasStatus 409
+
+-- | The client is permanently forbidden from making the request.
+_ForbiddenException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ForbiddenException =
+  Core._MatchServiceError
+    defaultService
+    "ForbiddenException"
+    Prelude.. Core.hasStatus 403
+
+-- | One or more of the resources in the request does not exist in the
+-- system.
+_NotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_NotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "NotFoundException"
+    Prelude.. Core.hasStatus 404
+
+-- | The request exceeds the resource limit.
+_ResourceLimitExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceLimitExceededException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceLimitExceededException"
+    Prelude.. Core.hasStatus 400
+
+-- | The service encountered an unexpected error.
+_ServiceFailureException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ServiceFailureException =
+  Core._MatchServiceError
+    defaultService
+    "ServiceFailureException"
+    Prelude.. Core.hasStatus 500
+
+-- | The service is currently unavailable.
+_ServiceUnavailableException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ServiceUnavailableException =
+  Core._MatchServiceError
+    defaultService
+    "ServiceUnavailableException"
+    Prelude.. Core.hasStatus 503
+
+-- | The client exceeded its request rate limit.
+_ThrottledClientException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ThrottledClientException =
+  Core._MatchServiceError
+    defaultService
+    "ThrottledClientException"
+    Prelude.. Core.hasStatus 429
+
+-- | The client is not currently authorized to make the request.
+_UnauthorizedClientException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_UnauthorizedClientException =
+  Core._MatchServiceError
+    defaultService
+    "UnauthorizedClientException"
+    Prelude.. Core.hasStatus 401
+
+-- | The request was well-formed but was unable to be followed due to
+-- semantic errors.
+_UnprocessableEntityException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_UnprocessableEntityException =
+  Core._MatchServiceError
+    defaultService
+    "UnprocessableEntityException"
+    Prelude.. Core.hasStatus 422
diff --git a/gen/Amazonka/Chime/Types/Account.hs b/gen/Amazonka/Chime/Types/Account.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/Account.hs
@@ -0,0 +1,194 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.Account
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.Account where
+
+import Amazonka.Chime.Types.AccountStatus
+import Amazonka.Chime.Types.AccountType
+import Amazonka.Chime.Types.License
+import Amazonka.Chime.Types.SigninDelegateGroup
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The Amazon Chime account details. An AWS account can have multiple
+-- Amazon Chime accounts.
+--
+-- /See:/ 'newAccount' smart constructor.
+data Account = Account'
+  { -- | The status of the account.
+    accountStatus :: Prelude.Maybe AccountStatus,
+    -- | The Amazon Chime account type. For more information about different
+    -- account types, see
+    -- <https://docs.aws.amazon.com/chime/latest/ag/manage-chime-account.html Managing Your Amazon Chime Accounts>
+    -- in the /Amazon Chime Administration Guide/.
+    accountType :: Prelude.Maybe AccountType,
+    -- | The Amazon Chime account creation timestamp, in ISO 8601 format.
+    createdTimestamp :: Prelude.Maybe Data.ISO8601,
+    -- | The default license for the Amazon Chime account.
+    defaultLicense :: Prelude.Maybe License,
+    -- | The sign-in delegate groups associated with the account.
+    signinDelegateGroups :: Prelude.Maybe [SigninDelegateGroup],
+    -- | Supported licenses for the Amazon Chime account.
+    supportedLicenses :: Prelude.Maybe [License],
+    -- | The AWS account ID.
+    awsAccountId :: Prelude.Text,
+    -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The Amazon Chime account name.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Account' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountStatus', 'account_accountStatus' - The status of the account.
+--
+-- 'accountType', 'account_accountType' - The Amazon Chime account type. For more information about different
+-- account types, see
+-- <https://docs.aws.amazon.com/chime/latest/ag/manage-chime-account.html Managing Your Amazon Chime Accounts>
+-- in the /Amazon Chime Administration Guide/.
+--
+-- 'createdTimestamp', 'account_createdTimestamp' - The Amazon Chime account creation timestamp, in ISO 8601 format.
+--
+-- 'defaultLicense', 'account_defaultLicense' - The default license for the Amazon Chime account.
+--
+-- 'signinDelegateGroups', 'account_signinDelegateGroups' - The sign-in delegate groups associated with the account.
+--
+-- 'supportedLicenses', 'account_supportedLicenses' - Supported licenses for the Amazon Chime account.
+--
+-- 'awsAccountId', 'account_awsAccountId' - The AWS account ID.
+--
+-- 'accountId', 'account_accountId' - The Amazon Chime account ID.
+--
+-- 'name', 'account_name' - The Amazon Chime account name.
+newAccount ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'accountId'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  Account
+newAccount pAwsAccountId_ pAccountId_ pName_ =
+  Account'
+    { accountStatus = Prelude.Nothing,
+      accountType = Prelude.Nothing,
+      createdTimestamp = Prelude.Nothing,
+      defaultLicense = Prelude.Nothing,
+      signinDelegateGroups = Prelude.Nothing,
+      supportedLicenses = Prelude.Nothing,
+      awsAccountId = pAwsAccountId_,
+      accountId = pAccountId_,
+      name = pName_
+    }
+
+-- | The status of the account.
+account_accountStatus :: Lens.Lens' Account (Prelude.Maybe AccountStatus)
+account_accountStatus = Lens.lens (\Account' {accountStatus} -> accountStatus) (\s@Account' {} a -> s {accountStatus = a} :: Account)
+
+-- | The Amazon Chime account type. For more information about different
+-- account types, see
+-- <https://docs.aws.amazon.com/chime/latest/ag/manage-chime-account.html Managing Your Amazon Chime Accounts>
+-- in the /Amazon Chime Administration Guide/.
+account_accountType :: Lens.Lens' Account (Prelude.Maybe AccountType)
+account_accountType = Lens.lens (\Account' {accountType} -> accountType) (\s@Account' {} a -> s {accountType = a} :: Account)
+
+-- | The Amazon Chime account creation timestamp, in ISO 8601 format.
+account_createdTimestamp :: Lens.Lens' Account (Prelude.Maybe Prelude.UTCTime)
+account_createdTimestamp = Lens.lens (\Account' {createdTimestamp} -> createdTimestamp) (\s@Account' {} a -> s {createdTimestamp = a} :: Account) Prelude.. Lens.mapping Data._Time
+
+-- | The default license for the Amazon Chime account.
+account_defaultLicense :: Lens.Lens' Account (Prelude.Maybe License)
+account_defaultLicense = Lens.lens (\Account' {defaultLicense} -> defaultLicense) (\s@Account' {} a -> s {defaultLicense = a} :: Account)
+
+-- | The sign-in delegate groups associated with the account.
+account_signinDelegateGroups :: Lens.Lens' Account (Prelude.Maybe [SigninDelegateGroup])
+account_signinDelegateGroups = Lens.lens (\Account' {signinDelegateGroups} -> signinDelegateGroups) (\s@Account' {} a -> s {signinDelegateGroups = a} :: Account) Prelude.. Lens.mapping Lens.coerced
+
+-- | Supported licenses for the Amazon Chime account.
+account_supportedLicenses :: Lens.Lens' Account (Prelude.Maybe [License])
+account_supportedLicenses = Lens.lens (\Account' {supportedLicenses} -> supportedLicenses) (\s@Account' {} a -> s {supportedLicenses = a} :: Account) Prelude.. Lens.mapping Lens.coerced
+
+-- | The AWS account ID.
+account_awsAccountId :: Lens.Lens' Account Prelude.Text
+account_awsAccountId = Lens.lens (\Account' {awsAccountId} -> awsAccountId) (\s@Account' {} a -> s {awsAccountId = a} :: Account)
+
+-- | The Amazon Chime account ID.
+account_accountId :: Lens.Lens' Account Prelude.Text
+account_accountId = Lens.lens (\Account' {accountId} -> accountId) (\s@Account' {} a -> s {accountId = a} :: Account)
+
+-- | The Amazon Chime account name.
+account_name :: Lens.Lens' Account Prelude.Text
+account_name = Lens.lens (\Account' {name} -> name) (\s@Account' {} a -> s {name = a} :: Account)
+
+instance Data.FromJSON Account where
+  parseJSON =
+    Data.withObject
+      "Account"
+      ( \x ->
+          Account'
+            Prelude.<$> (x Data..:? "AccountStatus")
+            Prelude.<*> (x Data..:? "AccountType")
+            Prelude.<*> (x Data..:? "CreatedTimestamp")
+            Prelude.<*> (x Data..:? "DefaultLicense")
+            Prelude.<*> ( x
+                            Data..:? "SigninDelegateGroups"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "SupportedLicenses"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..: "AwsAccountId")
+            Prelude.<*> (x Data..: "AccountId")
+            Prelude.<*> (x Data..: "Name")
+      )
+
+instance Prelude.Hashable Account where
+  hashWithSalt _salt Account' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountStatus
+      `Prelude.hashWithSalt` accountType
+      `Prelude.hashWithSalt` createdTimestamp
+      `Prelude.hashWithSalt` defaultLicense
+      `Prelude.hashWithSalt` signinDelegateGroups
+      `Prelude.hashWithSalt` supportedLicenses
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData Account where
+  rnf Account' {..} =
+    Prelude.rnf accountStatus
+      `Prelude.seq` Prelude.rnf accountType
+      `Prelude.seq` Prelude.rnf createdTimestamp
+      `Prelude.seq` Prelude.rnf defaultLicense
+      `Prelude.seq` Prelude.rnf signinDelegateGroups
+      `Prelude.seq` Prelude.rnf supportedLicenses
+      `Prelude.seq` Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf name
diff --git a/gen/Amazonka/Chime/Types/AccountSettings.hs b/gen/Amazonka/Chime/Types/AccountSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/AccountSettings.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.AccountSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.AccountSettings where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings related to the Amazon Chime account. This includes settings
+-- that start or stop remote control of shared screens, or start or stop
+-- the dial-out option in the Amazon Chime web application. For more
+-- information about these settings, see
+-- <https://docs.aws.amazon.com/chime/latest/ag/policies.html Use the Policies Page>
+-- in the /Amazon Chime Administration Guide/.
+--
+-- /See:/ 'newAccountSettings' smart constructor.
+data AccountSettings = AccountSettings'
+  { -- | Setting that stops or starts remote control of shared screens during
+    -- meetings.
+    disableRemoteControl :: Prelude.Maybe Prelude.Bool,
+    -- | Setting that allows meeting participants to choose the __Call me at a
+    -- phone number__ option. For more information, see
+    -- <https://docs.aws.amazon.com/chime/latest/ug/chime-join-meeting.html Join a Meeting without the Amazon Chime App>.
+    enableDialOut :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AccountSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'disableRemoteControl', 'accountSettings_disableRemoteControl' - Setting that stops or starts remote control of shared screens during
+-- meetings.
+--
+-- 'enableDialOut', 'accountSettings_enableDialOut' - Setting that allows meeting participants to choose the __Call me at a
+-- phone number__ option. For more information, see
+-- <https://docs.aws.amazon.com/chime/latest/ug/chime-join-meeting.html Join a Meeting without the Amazon Chime App>.
+newAccountSettings ::
+  AccountSettings
+newAccountSettings =
+  AccountSettings'
+    { disableRemoteControl =
+        Prelude.Nothing,
+      enableDialOut = Prelude.Nothing
+    }
+
+-- | Setting that stops or starts remote control of shared screens during
+-- meetings.
+accountSettings_disableRemoteControl :: Lens.Lens' AccountSettings (Prelude.Maybe Prelude.Bool)
+accountSettings_disableRemoteControl = Lens.lens (\AccountSettings' {disableRemoteControl} -> disableRemoteControl) (\s@AccountSettings' {} a -> s {disableRemoteControl = a} :: AccountSettings)
+
+-- | Setting that allows meeting participants to choose the __Call me at a
+-- phone number__ option. For more information, see
+-- <https://docs.aws.amazon.com/chime/latest/ug/chime-join-meeting.html Join a Meeting without the Amazon Chime App>.
+accountSettings_enableDialOut :: Lens.Lens' AccountSettings (Prelude.Maybe Prelude.Bool)
+accountSettings_enableDialOut = Lens.lens (\AccountSettings' {enableDialOut} -> enableDialOut) (\s@AccountSettings' {} a -> s {enableDialOut = a} :: AccountSettings)
+
+instance Data.FromJSON AccountSettings where
+  parseJSON =
+    Data.withObject
+      "AccountSettings"
+      ( \x ->
+          AccountSettings'
+            Prelude.<$> (x Data..:? "DisableRemoteControl")
+            Prelude.<*> (x Data..:? "EnableDialOut")
+      )
+
+instance Prelude.Hashable AccountSettings where
+  hashWithSalt _salt AccountSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` disableRemoteControl
+      `Prelude.hashWithSalt` enableDialOut
+
+instance Prelude.NFData AccountSettings where
+  rnf AccountSettings' {..} =
+    Prelude.rnf disableRemoteControl
+      `Prelude.seq` Prelude.rnf enableDialOut
+
+instance Data.ToJSON AccountSettings where
+  toJSON AccountSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DisableRemoteControl" Data..=)
+              Prelude.<$> disableRemoteControl,
+            ("EnableDialOut" Data..=) Prelude.<$> enableDialOut
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/AccountStatus.hs b/gen/Amazonka/Chime/Types/AccountStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/AccountStatus.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.AccountStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.AccountStatus
+  ( AccountStatus
+      ( ..,
+        AccountStatus_Active,
+        AccountStatus_Suspended
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AccountStatus = AccountStatus'
+  { fromAccountStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AccountStatus_Active :: AccountStatus
+pattern AccountStatus_Active = AccountStatus' "Active"
+
+pattern AccountStatus_Suspended :: AccountStatus
+pattern AccountStatus_Suspended = AccountStatus' "Suspended"
+
+{-# COMPLETE
+  AccountStatus_Active,
+  AccountStatus_Suspended,
+  AccountStatus'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/AccountType.hs b/gen/Amazonka/Chime/Types/AccountType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/AccountType.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.AccountType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.AccountType
+  ( AccountType
+      ( ..,
+        AccountType_EnterpriseDirectory,
+        AccountType_EnterpriseLWA,
+        AccountType_EnterpriseOIDC,
+        AccountType_Team
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AccountType = AccountType'
+  { fromAccountType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AccountType_EnterpriseDirectory :: AccountType
+pattern AccountType_EnterpriseDirectory = AccountType' "EnterpriseDirectory"
+
+pattern AccountType_EnterpriseLWA :: AccountType
+pattern AccountType_EnterpriseLWA = AccountType' "EnterpriseLWA"
+
+pattern AccountType_EnterpriseOIDC :: AccountType
+pattern AccountType_EnterpriseOIDC = AccountType' "EnterpriseOIDC"
+
+pattern AccountType_Team :: AccountType
+pattern AccountType_Team = AccountType' "Team"
+
+{-# COMPLETE
+  AccountType_EnterpriseDirectory,
+  AccountType_EnterpriseLWA,
+  AccountType_EnterpriseOIDC,
+  AccountType_Team,
+  AccountType'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/Address.hs b/gen/Amazonka/Chime/Types/Address.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/Address.hs
@@ -0,0 +1,183 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.Address
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.Address where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A validated address.
+--
+-- /See:/ 'newAddress' smart constructor.
+data Address = Address'
+  { -- | The city of an address.
+    city :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The country of an address.
+    country :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | An address suffix location, such as the @S. Unit A@ in
+    -- @Central Park S. Unit A@.
+    postDirectional :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The postal code of an address.
+    postalCode :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The Zip + 4 or postal code + 4 of an address.
+    postalCodePlus4 :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | An address prefix location, such as the @N@ in @N. Third St.@.
+    preDirectional :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The state of an address.
+    state :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The address street, such as @8th Avenue@.
+    streetName :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The numeric portion of an address.
+    streetNumber :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The address suffix, such as the @N@ in @8th Avenue N@.
+    streetSuffix :: Prelude.Maybe (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Address' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'city', 'address_city' - The city of an address.
+--
+-- 'country', 'address_country' - The country of an address.
+--
+-- 'postDirectional', 'address_postDirectional' - An address suffix location, such as the @S. Unit A@ in
+-- @Central Park S. Unit A@.
+--
+-- 'postalCode', 'address_postalCode' - The postal code of an address.
+--
+-- 'postalCodePlus4', 'address_postalCodePlus4' - The Zip + 4 or postal code + 4 of an address.
+--
+-- 'preDirectional', 'address_preDirectional' - An address prefix location, such as the @N@ in @N. Third St.@.
+--
+-- 'state', 'address_state' - The state of an address.
+--
+-- 'streetName', 'address_streetName' - The address street, such as @8th Avenue@.
+--
+-- 'streetNumber', 'address_streetNumber' - The numeric portion of an address.
+--
+-- 'streetSuffix', 'address_streetSuffix' - The address suffix, such as the @N@ in @8th Avenue N@.
+newAddress ::
+  Address
+newAddress =
+  Address'
+    { city = Prelude.Nothing,
+      country = Prelude.Nothing,
+      postDirectional = Prelude.Nothing,
+      postalCode = Prelude.Nothing,
+      postalCodePlus4 = Prelude.Nothing,
+      preDirectional = Prelude.Nothing,
+      state = Prelude.Nothing,
+      streetName = Prelude.Nothing,
+      streetNumber = Prelude.Nothing,
+      streetSuffix = Prelude.Nothing
+    }
+
+-- | The city of an address.
+address_city :: Lens.Lens' Address (Prelude.Maybe Prelude.Text)
+address_city = Lens.lens (\Address' {city} -> city) (\s@Address' {} a -> s {city = a} :: Address) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The country of an address.
+address_country :: Lens.Lens' Address (Prelude.Maybe Prelude.Text)
+address_country = Lens.lens (\Address' {country} -> country) (\s@Address' {} a -> s {country = a} :: Address) Prelude.. Lens.mapping Data._Sensitive
+
+-- | An address suffix location, such as the @S. Unit A@ in
+-- @Central Park S. Unit A@.
+address_postDirectional :: Lens.Lens' Address (Prelude.Maybe Prelude.Text)
+address_postDirectional = Lens.lens (\Address' {postDirectional} -> postDirectional) (\s@Address' {} a -> s {postDirectional = a} :: Address) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The postal code of an address.
+address_postalCode :: Lens.Lens' Address (Prelude.Maybe Prelude.Text)
+address_postalCode = Lens.lens (\Address' {postalCode} -> postalCode) (\s@Address' {} a -> s {postalCode = a} :: Address) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The Zip + 4 or postal code + 4 of an address.
+address_postalCodePlus4 :: Lens.Lens' Address (Prelude.Maybe Prelude.Text)
+address_postalCodePlus4 = Lens.lens (\Address' {postalCodePlus4} -> postalCodePlus4) (\s@Address' {} a -> s {postalCodePlus4 = a} :: Address) Prelude.. Lens.mapping Data._Sensitive
+
+-- | An address prefix location, such as the @N@ in @N. Third St.@.
+address_preDirectional :: Lens.Lens' Address (Prelude.Maybe Prelude.Text)
+address_preDirectional = Lens.lens (\Address' {preDirectional} -> preDirectional) (\s@Address' {} a -> s {preDirectional = a} :: Address) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The state of an address.
+address_state :: Lens.Lens' Address (Prelude.Maybe Prelude.Text)
+address_state = Lens.lens (\Address' {state} -> state) (\s@Address' {} a -> s {state = a} :: Address) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The address street, such as @8th Avenue@.
+address_streetName :: Lens.Lens' Address (Prelude.Maybe Prelude.Text)
+address_streetName = Lens.lens (\Address' {streetName} -> streetName) (\s@Address' {} a -> s {streetName = a} :: Address) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The numeric portion of an address.
+address_streetNumber :: Lens.Lens' Address (Prelude.Maybe Prelude.Text)
+address_streetNumber = Lens.lens (\Address' {streetNumber} -> streetNumber) (\s@Address' {} a -> s {streetNumber = a} :: Address) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The address suffix, such as the @N@ in @8th Avenue N@.
+address_streetSuffix :: Lens.Lens' Address (Prelude.Maybe Prelude.Text)
+address_streetSuffix = Lens.lens (\Address' {streetSuffix} -> streetSuffix) (\s@Address' {} a -> s {streetSuffix = a} :: Address) Prelude.. Lens.mapping Data._Sensitive
+
+instance Data.FromJSON Address where
+  parseJSON =
+    Data.withObject
+      "Address"
+      ( \x ->
+          Address'
+            Prelude.<$> (x Data..:? "city")
+            Prelude.<*> (x Data..:? "country")
+            Prelude.<*> (x Data..:? "postDirectional")
+            Prelude.<*> (x Data..:? "postalCode")
+            Prelude.<*> (x Data..:? "postalCodePlus4")
+            Prelude.<*> (x Data..:? "preDirectional")
+            Prelude.<*> (x Data..:? "state")
+            Prelude.<*> (x Data..:? "streetName")
+            Prelude.<*> (x Data..:? "streetNumber")
+            Prelude.<*> (x Data..:? "streetSuffix")
+      )
+
+instance Prelude.Hashable Address where
+  hashWithSalt _salt Address' {..} =
+    _salt
+      `Prelude.hashWithSalt` city
+      `Prelude.hashWithSalt` country
+      `Prelude.hashWithSalt` postDirectional
+      `Prelude.hashWithSalt` postalCode
+      `Prelude.hashWithSalt` postalCodePlus4
+      `Prelude.hashWithSalt` preDirectional
+      `Prelude.hashWithSalt` state
+      `Prelude.hashWithSalt` streetName
+      `Prelude.hashWithSalt` streetNumber
+      `Prelude.hashWithSalt` streetSuffix
+
+instance Prelude.NFData Address where
+  rnf Address' {..} =
+    Prelude.rnf city
+      `Prelude.seq` Prelude.rnf country
+      `Prelude.seq` Prelude.rnf postDirectional
+      `Prelude.seq` Prelude.rnf postalCode
+      `Prelude.seq` Prelude.rnf postalCodePlus4
+      `Prelude.seq` Prelude.rnf preDirectional
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf streetName
+      `Prelude.seq` Prelude.rnf streetNumber
+      `Prelude.seq` Prelude.rnf streetSuffix
diff --git a/gen/Amazonka/Chime/Types/AlexaForBusinessMetadata.hs b/gen/Amazonka/Chime/Types/AlexaForBusinessMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/AlexaForBusinessMetadata.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.AlexaForBusinessMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.AlexaForBusinessMetadata where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The Alexa for Business metadata associated with an Amazon Chime user,
+-- used to integrate Alexa for Business with a device.
+--
+-- /See:/ 'newAlexaForBusinessMetadata' smart constructor.
+data AlexaForBusinessMetadata = AlexaForBusinessMetadata'
+  { -- | The ARN of the room resource.
+    alexaForBusinessRoomArn :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | Starts or stops Alexa for Business.
+    isAlexaForBusinessEnabled :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AlexaForBusinessMetadata' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'alexaForBusinessRoomArn', 'alexaForBusinessMetadata_alexaForBusinessRoomArn' - The ARN of the room resource.
+--
+-- 'isAlexaForBusinessEnabled', 'alexaForBusinessMetadata_isAlexaForBusinessEnabled' - Starts or stops Alexa for Business.
+newAlexaForBusinessMetadata ::
+  AlexaForBusinessMetadata
+newAlexaForBusinessMetadata =
+  AlexaForBusinessMetadata'
+    { alexaForBusinessRoomArn =
+        Prelude.Nothing,
+      isAlexaForBusinessEnabled = Prelude.Nothing
+    }
+
+-- | The ARN of the room resource.
+alexaForBusinessMetadata_alexaForBusinessRoomArn :: Lens.Lens' AlexaForBusinessMetadata (Prelude.Maybe Prelude.Text)
+alexaForBusinessMetadata_alexaForBusinessRoomArn = Lens.lens (\AlexaForBusinessMetadata' {alexaForBusinessRoomArn} -> alexaForBusinessRoomArn) (\s@AlexaForBusinessMetadata' {} a -> s {alexaForBusinessRoomArn = a} :: AlexaForBusinessMetadata) Prelude.. Lens.mapping Data._Sensitive
+
+-- | Starts or stops Alexa for Business.
+alexaForBusinessMetadata_isAlexaForBusinessEnabled :: Lens.Lens' AlexaForBusinessMetadata (Prelude.Maybe Prelude.Bool)
+alexaForBusinessMetadata_isAlexaForBusinessEnabled = Lens.lens (\AlexaForBusinessMetadata' {isAlexaForBusinessEnabled} -> isAlexaForBusinessEnabled) (\s@AlexaForBusinessMetadata' {} a -> s {isAlexaForBusinessEnabled = a} :: AlexaForBusinessMetadata)
+
+instance Data.FromJSON AlexaForBusinessMetadata where
+  parseJSON =
+    Data.withObject
+      "AlexaForBusinessMetadata"
+      ( \x ->
+          AlexaForBusinessMetadata'
+            Prelude.<$> (x Data..:? "AlexaForBusinessRoomArn")
+            Prelude.<*> (x Data..:? "IsAlexaForBusinessEnabled")
+      )
+
+instance Prelude.Hashable AlexaForBusinessMetadata where
+  hashWithSalt _salt AlexaForBusinessMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` alexaForBusinessRoomArn
+      `Prelude.hashWithSalt` isAlexaForBusinessEnabled
+
+instance Prelude.NFData AlexaForBusinessMetadata where
+  rnf AlexaForBusinessMetadata' {..} =
+    Prelude.rnf alexaForBusinessRoomArn
+      `Prelude.seq` Prelude.rnf isAlexaForBusinessEnabled
+
+instance Data.ToJSON AlexaForBusinessMetadata where
+  toJSON AlexaForBusinessMetadata' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AlexaForBusinessRoomArn" Data..=)
+              Prelude.<$> alexaForBusinessRoomArn,
+            ("IsAlexaForBusinessEnabled" Data..=)
+              Prelude.<$> isAlexaForBusinessEnabled
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/AppInstance.hs b/gen/Amazonka/Chime/Types/AppInstance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/AppInstance.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.AppInstance
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.AppInstance where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The details of an @AppInstance@, an instance of an Amazon Chime SDK
+-- messaging application.
+--
+-- /See:/ 'newAppInstance' smart constructor.
+data AppInstance = AppInstance'
+  { -- | The ARN of the messaging instance.
+    appInstanceArn :: Prelude.Maybe Prelude.Text,
+    -- | The time at which an @AppInstance@ was created. In epoch milliseconds.
+    createdTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The time an @AppInstance@ was last updated. In epoch milliseconds.
+    lastUpdatedTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The metadata of an @AppInstance@.
+    metadata :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The name of an @AppInstance@.
+    name :: Prelude.Maybe (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AppInstance' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceArn', 'appInstance_appInstanceArn' - The ARN of the messaging instance.
+--
+-- 'createdTimestamp', 'appInstance_createdTimestamp' - The time at which an @AppInstance@ was created. In epoch milliseconds.
+--
+-- 'lastUpdatedTimestamp', 'appInstance_lastUpdatedTimestamp' - The time an @AppInstance@ was last updated. In epoch milliseconds.
+--
+-- 'metadata', 'appInstance_metadata' - The metadata of an @AppInstance@.
+--
+-- 'name', 'appInstance_name' - The name of an @AppInstance@.
+newAppInstance ::
+  AppInstance
+newAppInstance =
+  AppInstance'
+    { appInstanceArn = Prelude.Nothing,
+      createdTimestamp = Prelude.Nothing,
+      lastUpdatedTimestamp = Prelude.Nothing,
+      metadata = Prelude.Nothing,
+      name = Prelude.Nothing
+    }
+
+-- | The ARN of the messaging instance.
+appInstance_appInstanceArn :: Lens.Lens' AppInstance (Prelude.Maybe Prelude.Text)
+appInstance_appInstanceArn = Lens.lens (\AppInstance' {appInstanceArn} -> appInstanceArn) (\s@AppInstance' {} a -> s {appInstanceArn = a} :: AppInstance)
+
+-- | The time at which an @AppInstance@ was created. In epoch milliseconds.
+appInstance_createdTimestamp :: Lens.Lens' AppInstance (Prelude.Maybe Prelude.UTCTime)
+appInstance_createdTimestamp = Lens.lens (\AppInstance' {createdTimestamp} -> createdTimestamp) (\s@AppInstance' {} a -> s {createdTimestamp = a} :: AppInstance) Prelude.. Lens.mapping Data._Time
+
+-- | The time an @AppInstance@ was last updated. In epoch milliseconds.
+appInstance_lastUpdatedTimestamp :: Lens.Lens' AppInstance (Prelude.Maybe Prelude.UTCTime)
+appInstance_lastUpdatedTimestamp = Lens.lens (\AppInstance' {lastUpdatedTimestamp} -> lastUpdatedTimestamp) (\s@AppInstance' {} a -> s {lastUpdatedTimestamp = a} :: AppInstance) Prelude.. Lens.mapping Data._Time
+
+-- | The metadata of an @AppInstance@.
+appInstance_metadata :: Lens.Lens' AppInstance (Prelude.Maybe Prelude.Text)
+appInstance_metadata = Lens.lens (\AppInstance' {metadata} -> metadata) (\s@AppInstance' {} a -> s {metadata = a} :: AppInstance) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The name of an @AppInstance@.
+appInstance_name :: Lens.Lens' AppInstance (Prelude.Maybe Prelude.Text)
+appInstance_name = Lens.lens (\AppInstance' {name} -> name) (\s@AppInstance' {} a -> s {name = a} :: AppInstance) Prelude.. Lens.mapping Data._Sensitive
+
+instance Data.FromJSON AppInstance where
+  parseJSON =
+    Data.withObject
+      "AppInstance"
+      ( \x ->
+          AppInstance'
+            Prelude.<$> (x Data..:? "AppInstanceArn")
+            Prelude.<*> (x Data..:? "CreatedTimestamp")
+            Prelude.<*> (x Data..:? "LastUpdatedTimestamp")
+            Prelude.<*> (x Data..:? "Metadata")
+            Prelude.<*> (x Data..:? "Name")
+      )
+
+instance Prelude.Hashable AppInstance where
+  hashWithSalt _salt AppInstance' {..} =
+    _salt
+      `Prelude.hashWithSalt` appInstanceArn
+      `Prelude.hashWithSalt` createdTimestamp
+      `Prelude.hashWithSalt` lastUpdatedTimestamp
+      `Prelude.hashWithSalt` metadata
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData AppInstance where
+  rnf AppInstance' {..} =
+    Prelude.rnf appInstanceArn
+      `Prelude.seq` Prelude.rnf createdTimestamp
+      `Prelude.seq` Prelude.rnf lastUpdatedTimestamp
+      `Prelude.seq` Prelude.rnf metadata
+      `Prelude.seq` Prelude.rnf name
diff --git a/gen/Amazonka/Chime/Types/AppInstanceAdmin.hs b/gen/Amazonka/Chime/Types/AppInstanceAdmin.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/AppInstanceAdmin.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.AppInstanceAdmin
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.AppInstanceAdmin where
+
+import Amazonka.Chime.Types.Identity
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The details of an @AppInstanceAdmin@.
+--
+-- /See:/ 'newAppInstanceAdmin' smart constructor.
+data AppInstanceAdmin = AppInstanceAdmin'
+  { -- | The @AppInstanceAdmin@ data.
+    admin :: Prelude.Maybe Identity,
+    -- | The ARN of the @AppInstance@ for which the user is an administrator.
+    appInstanceArn :: Prelude.Maybe Prelude.Text,
+    -- | The time at which an administrator was created.
+    createdTimestamp :: Prelude.Maybe Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AppInstanceAdmin' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'admin', 'appInstanceAdmin_admin' - The @AppInstanceAdmin@ data.
+--
+-- 'appInstanceArn', 'appInstanceAdmin_appInstanceArn' - The ARN of the @AppInstance@ for which the user is an administrator.
+--
+-- 'createdTimestamp', 'appInstanceAdmin_createdTimestamp' - The time at which an administrator was created.
+newAppInstanceAdmin ::
+  AppInstanceAdmin
+newAppInstanceAdmin =
+  AppInstanceAdmin'
+    { admin = Prelude.Nothing,
+      appInstanceArn = Prelude.Nothing,
+      createdTimestamp = Prelude.Nothing
+    }
+
+-- | The @AppInstanceAdmin@ data.
+appInstanceAdmin_admin :: Lens.Lens' AppInstanceAdmin (Prelude.Maybe Identity)
+appInstanceAdmin_admin = Lens.lens (\AppInstanceAdmin' {admin} -> admin) (\s@AppInstanceAdmin' {} a -> s {admin = a} :: AppInstanceAdmin)
+
+-- | The ARN of the @AppInstance@ for which the user is an administrator.
+appInstanceAdmin_appInstanceArn :: Lens.Lens' AppInstanceAdmin (Prelude.Maybe Prelude.Text)
+appInstanceAdmin_appInstanceArn = Lens.lens (\AppInstanceAdmin' {appInstanceArn} -> appInstanceArn) (\s@AppInstanceAdmin' {} a -> s {appInstanceArn = a} :: AppInstanceAdmin)
+
+-- | The time at which an administrator was created.
+appInstanceAdmin_createdTimestamp :: Lens.Lens' AppInstanceAdmin (Prelude.Maybe Prelude.UTCTime)
+appInstanceAdmin_createdTimestamp = Lens.lens (\AppInstanceAdmin' {createdTimestamp} -> createdTimestamp) (\s@AppInstanceAdmin' {} a -> s {createdTimestamp = a} :: AppInstanceAdmin) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON AppInstanceAdmin where
+  parseJSON =
+    Data.withObject
+      "AppInstanceAdmin"
+      ( \x ->
+          AppInstanceAdmin'
+            Prelude.<$> (x Data..:? "Admin")
+            Prelude.<*> (x Data..:? "AppInstanceArn")
+            Prelude.<*> (x Data..:? "CreatedTimestamp")
+      )
+
+instance Prelude.Hashable AppInstanceAdmin where
+  hashWithSalt _salt AppInstanceAdmin' {..} =
+    _salt
+      `Prelude.hashWithSalt` admin
+      `Prelude.hashWithSalt` appInstanceArn
+      `Prelude.hashWithSalt` createdTimestamp
+
+instance Prelude.NFData AppInstanceAdmin where
+  rnf AppInstanceAdmin' {..} =
+    Prelude.rnf admin
+      `Prelude.seq` Prelude.rnf appInstanceArn
+      `Prelude.seq` Prelude.rnf createdTimestamp
diff --git a/gen/Amazonka/Chime/Types/AppInstanceAdminSummary.hs b/gen/Amazonka/Chime/Types/AppInstanceAdminSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/AppInstanceAdminSummary.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.AppInstanceAdminSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.AppInstanceAdminSummary where
+
+import Amazonka.Chime.Types.Identity
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Summary of the details of an @AppInstanceAdmin@.
+--
+-- /See:/ 'newAppInstanceAdminSummary' smart constructor.
+data AppInstanceAdminSummary = AppInstanceAdminSummary'
+  { -- | The details of the @AppInstanceAdmin@.
+    admin :: Prelude.Maybe Identity
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AppInstanceAdminSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'admin', 'appInstanceAdminSummary_admin' - The details of the @AppInstanceAdmin@.
+newAppInstanceAdminSummary ::
+  AppInstanceAdminSummary
+newAppInstanceAdminSummary =
+  AppInstanceAdminSummary' {admin = Prelude.Nothing}
+
+-- | The details of the @AppInstanceAdmin@.
+appInstanceAdminSummary_admin :: Lens.Lens' AppInstanceAdminSummary (Prelude.Maybe Identity)
+appInstanceAdminSummary_admin = Lens.lens (\AppInstanceAdminSummary' {admin} -> admin) (\s@AppInstanceAdminSummary' {} a -> s {admin = a} :: AppInstanceAdminSummary)
+
+instance Data.FromJSON AppInstanceAdminSummary where
+  parseJSON =
+    Data.withObject
+      "AppInstanceAdminSummary"
+      ( \x ->
+          AppInstanceAdminSummary'
+            Prelude.<$> (x Data..:? "Admin")
+      )
+
+instance Prelude.Hashable AppInstanceAdminSummary where
+  hashWithSalt _salt AppInstanceAdminSummary' {..} =
+    _salt `Prelude.hashWithSalt` admin
+
+instance Prelude.NFData AppInstanceAdminSummary where
+  rnf AppInstanceAdminSummary' {..} = Prelude.rnf admin
diff --git a/gen/Amazonka/Chime/Types/AppInstanceDataType.hs b/gen/Amazonka/Chime/Types/AppInstanceDataType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/AppInstanceDataType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.AppInstanceDataType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.AppInstanceDataType
+  ( AppInstanceDataType
+      ( ..,
+        AppInstanceDataType_Channel,
+        AppInstanceDataType_ChannelMessage
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AppInstanceDataType = AppInstanceDataType'
+  { fromAppInstanceDataType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AppInstanceDataType_Channel :: AppInstanceDataType
+pattern AppInstanceDataType_Channel = AppInstanceDataType' "Channel"
+
+pattern AppInstanceDataType_ChannelMessage :: AppInstanceDataType
+pattern AppInstanceDataType_ChannelMessage = AppInstanceDataType' "ChannelMessage"
+
+{-# COMPLETE
+  AppInstanceDataType_Channel,
+  AppInstanceDataType_ChannelMessage,
+  AppInstanceDataType'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/AppInstanceRetentionSettings.hs b/gen/Amazonka/Chime/Types/AppInstanceRetentionSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/AppInstanceRetentionSettings.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.AppInstanceRetentionSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.AppInstanceRetentionSettings where
+
+import Amazonka.Chime.Types.ChannelRetentionSettings
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The details of the data-retention settings for an @AppInstance@.
+--
+-- /See:/ 'newAppInstanceRetentionSettings' smart constructor.
+data AppInstanceRetentionSettings = AppInstanceRetentionSettings'
+  { -- | The length of time in days to retain the messages in a channel.
+    channelRetentionSettings :: Prelude.Maybe ChannelRetentionSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AppInstanceRetentionSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channelRetentionSettings', 'appInstanceRetentionSettings_channelRetentionSettings' - The length of time in days to retain the messages in a channel.
+newAppInstanceRetentionSettings ::
+  AppInstanceRetentionSettings
+newAppInstanceRetentionSettings =
+  AppInstanceRetentionSettings'
+    { channelRetentionSettings =
+        Prelude.Nothing
+    }
+
+-- | The length of time in days to retain the messages in a channel.
+appInstanceRetentionSettings_channelRetentionSettings :: Lens.Lens' AppInstanceRetentionSettings (Prelude.Maybe ChannelRetentionSettings)
+appInstanceRetentionSettings_channelRetentionSettings = Lens.lens (\AppInstanceRetentionSettings' {channelRetentionSettings} -> channelRetentionSettings) (\s@AppInstanceRetentionSettings' {} a -> s {channelRetentionSettings = a} :: AppInstanceRetentionSettings)
+
+instance Data.FromJSON AppInstanceRetentionSettings where
+  parseJSON =
+    Data.withObject
+      "AppInstanceRetentionSettings"
+      ( \x ->
+          AppInstanceRetentionSettings'
+            Prelude.<$> (x Data..:? "ChannelRetentionSettings")
+      )
+
+instance
+  Prelude.Hashable
+    AppInstanceRetentionSettings
+  where
+  hashWithSalt _salt AppInstanceRetentionSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` channelRetentionSettings
+
+instance Prelude.NFData AppInstanceRetentionSettings where
+  rnf AppInstanceRetentionSettings' {..} =
+    Prelude.rnf channelRetentionSettings
+
+instance Data.ToJSON AppInstanceRetentionSettings where
+  toJSON AppInstanceRetentionSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ChannelRetentionSettings" Data..=)
+              Prelude.<$> channelRetentionSettings
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/AppInstanceStreamingConfiguration.hs b/gen/Amazonka/Chime/Types/AppInstanceStreamingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/AppInstanceStreamingConfiguration.hs
@@ -0,0 +1,117 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.AppInstanceStreamingConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.AppInstanceStreamingConfiguration where
+
+import Amazonka.Chime.Types.AppInstanceDataType
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The details of the streaming configuration of an @AppInstance@.
+--
+-- /See:/ 'newAppInstanceStreamingConfiguration' smart constructor.
+data AppInstanceStreamingConfiguration = AppInstanceStreamingConfiguration'
+  { -- | The type of data to be streamed.
+    appInstanceDataType :: AppInstanceDataType,
+    -- | The resource ARN.
+    resourceArn :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AppInstanceStreamingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceDataType', 'appInstanceStreamingConfiguration_appInstanceDataType' - The type of data to be streamed.
+--
+-- 'resourceArn', 'appInstanceStreamingConfiguration_resourceArn' - The resource ARN.
+newAppInstanceStreamingConfiguration ::
+  -- | 'appInstanceDataType'
+  AppInstanceDataType ->
+  -- | 'resourceArn'
+  Prelude.Text ->
+  AppInstanceStreamingConfiguration
+newAppInstanceStreamingConfiguration
+  pAppInstanceDataType_
+  pResourceArn_ =
+    AppInstanceStreamingConfiguration'
+      { appInstanceDataType =
+          pAppInstanceDataType_,
+        resourceArn =
+          Data._Sensitive Lens.# pResourceArn_
+      }
+
+-- | The type of data to be streamed.
+appInstanceStreamingConfiguration_appInstanceDataType :: Lens.Lens' AppInstanceStreamingConfiguration AppInstanceDataType
+appInstanceStreamingConfiguration_appInstanceDataType = Lens.lens (\AppInstanceStreamingConfiguration' {appInstanceDataType} -> appInstanceDataType) (\s@AppInstanceStreamingConfiguration' {} a -> s {appInstanceDataType = a} :: AppInstanceStreamingConfiguration)
+
+-- | The resource ARN.
+appInstanceStreamingConfiguration_resourceArn :: Lens.Lens' AppInstanceStreamingConfiguration Prelude.Text
+appInstanceStreamingConfiguration_resourceArn = Lens.lens (\AppInstanceStreamingConfiguration' {resourceArn} -> resourceArn) (\s@AppInstanceStreamingConfiguration' {} a -> s {resourceArn = a} :: AppInstanceStreamingConfiguration) Prelude.. Data._Sensitive
+
+instance
+  Data.FromJSON
+    AppInstanceStreamingConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "AppInstanceStreamingConfiguration"
+      ( \x ->
+          AppInstanceStreamingConfiguration'
+            Prelude.<$> (x Data..: "AppInstanceDataType")
+            Prelude.<*> (x Data..: "ResourceArn")
+      )
+
+instance
+  Prelude.Hashable
+    AppInstanceStreamingConfiguration
+  where
+  hashWithSalt
+    _salt
+    AppInstanceStreamingConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` appInstanceDataType
+        `Prelude.hashWithSalt` resourceArn
+
+instance
+  Prelude.NFData
+    AppInstanceStreamingConfiguration
+  where
+  rnf AppInstanceStreamingConfiguration' {..} =
+    Prelude.rnf appInstanceDataType
+      `Prelude.seq` Prelude.rnf resourceArn
+
+instance
+  Data.ToJSON
+    AppInstanceStreamingConfiguration
+  where
+  toJSON AppInstanceStreamingConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("AppInstanceDataType" Data..= appInstanceDataType),
+            Prelude.Just ("ResourceArn" Data..= resourceArn)
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/AppInstanceSummary.hs b/gen/Amazonka/Chime/Types/AppInstanceSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/AppInstanceSummary.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.AppInstanceSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.AppInstanceSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Summary of the data for an @AppInstance@.
+--
+-- /See:/ 'newAppInstanceSummary' smart constructor.
+data AppInstanceSummary = AppInstanceSummary'
+  { -- | The @AppInstance@ ARN.
+    appInstanceArn :: Prelude.Maybe Prelude.Text,
+    -- | The metadata of the @AppInstance@.
+    metadata :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The name of the @AppInstance@.
+    name :: Prelude.Maybe (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AppInstanceSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceArn', 'appInstanceSummary_appInstanceArn' - The @AppInstance@ ARN.
+--
+-- 'metadata', 'appInstanceSummary_metadata' - The metadata of the @AppInstance@.
+--
+-- 'name', 'appInstanceSummary_name' - The name of the @AppInstance@.
+newAppInstanceSummary ::
+  AppInstanceSummary
+newAppInstanceSummary =
+  AppInstanceSummary'
+    { appInstanceArn =
+        Prelude.Nothing,
+      metadata = Prelude.Nothing,
+      name = Prelude.Nothing
+    }
+
+-- | The @AppInstance@ ARN.
+appInstanceSummary_appInstanceArn :: Lens.Lens' AppInstanceSummary (Prelude.Maybe Prelude.Text)
+appInstanceSummary_appInstanceArn = Lens.lens (\AppInstanceSummary' {appInstanceArn} -> appInstanceArn) (\s@AppInstanceSummary' {} a -> s {appInstanceArn = a} :: AppInstanceSummary)
+
+-- | The metadata of the @AppInstance@.
+appInstanceSummary_metadata :: Lens.Lens' AppInstanceSummary (Prelude.Maybe Prelude.Text)
+appInstanceSummary_metadata = Lens.lens (\AppInstanceSummary' {metadata} -> metadata) (\s@AppInstanceSummary' {} a -> s {metadata = a} :: AppInstanceSummary) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The name of the @AppInstance@.
+appInstanceSummary_name :: Lens.Lens' AppInstanceSummary (Prelude.Maybe Prelude.Text)
+appInstanceSummary_name = Lens.lens (\AppInstanceSummary' {name} -> name) (\s@AppInstanceSummary' {} a -> s {name = a} :: AppInstanceSummary) Prelude.. Lens.mapping Data._Sensitive
+
+instance Data.FromJSON AppInstanceSummary where
+  parseJSON =
+    Data.withObject
+      "AppInstanceSummary"
+      ( \x ->
+          AppInstanceSummary'
+            Prelude.<$> (x Data..:? "AppInstanceArn")
+            Prelude.<*> (x Data..:? "Metadata")
+            Prelude.<*> (x Data..:? "Name")
+      )
+
+instance Prelude.Hashable AppInstanceSummary where
+  hashWithSalt _salt AppInstanceSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` appInstanceArn
+      `Prelude.hashWithSalt` metadata
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData AppInstanceSummary where
+  rnf AppInstanceSummary' {..} =
+    Prelude.rnf appInstanceArn
+      `Prelude.seq` Prelude.rnf metadata
+      `Prelude.seq` Prelude.rnf name
diff --git a/gen/Amazonka/Chime/Types/AppInstanceUser.hs b/gen/Amazonka/Chime/Types/AppInstanceUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/AppInstanceUser.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.AppInstanceUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.AppInstanceUser where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The details of an @AppInstanceUser@.
+--
+-- /See:/ 'newAppInstanceUser' smart constructor.
+data AppInstanceUser = AppInstanceUser'
+  { -- | The ARN of the @AppInstanceUser@.
+    appInstanceUserArn :: Prelude.Maybe Prelude.Text,
+    -- | The time at which the @AppInstanceUser@ was created.
+    createdTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The time at which the @AppInstanceUser@ was last updated.
+    lastUpdatedTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The metadata of the @AppInstanceUser@.
+    metadata :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The name of the @AppInstanceUser@.
+    name :: Prelude.Maybe (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AppInstanceUser' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceUserArn', 'appInstanceUser_appInstanceUserArn' - The ARN of the @AppInstanceUser@.
+--
+-- 'createdTimestamp', 'appInstanceUser_createdTimestamp' - The time at which the @AppInstanceUser@ was created.
+--
+-- 'lastUpdatedTimestamp', 'appInstanceUser_lastUpdatedTimestamp' - The time at which the @AppInstanceUser@ was last updated.
+--
+-- 'metadata', 'appInstanceUser_metadata' - The metadata of the @AppInstanceUser@.
+--
+-- 'name', 'appInstanceUser_name' - The name of the @AppInstanceUser@.
+newAppInstanceUser ::
+  AppInstanceUser
+newAppInstanceUser =
+  AppInstanceUser'
+    { appInstanceUserArn =
+        Prelude.Nothing,
+      createdTimestamp = Prelude.Nothing,
+      lastUpdatedTimestamp = Prelude.Nothing,
+      metadata = Prelude.Nothing,
+      name = Prelude.Nothing
+    }
+
+-- | The ARN of the @AppInstanceUser@.
+appInstanceUser_appInstanceUserArn :: Lens.Lens' AppInstanceUser (Prelude.Maybe Prelude.Text)
+appInstanceUser_appInstanceUserArn = Lens.lens (\AppInstanceUser' {appInstanceUserArn} -> appInstanceUserArn) (\s@AppInstanceUser' {} a -> s {appInstanceUserArn = a} :: AppInstanceUser)
+
+-- | The time at which the @AppInstanceUser@ was created.
+appInstanceUser_createdTimestamp :: Lens.Lens' AppInstanceUser (Prelude.Maybe Prelude.UTCTime)
+appInstanceUser_createdTimestamp = Lens.lens (\AppInstanceUser' {createdTimestamp} -> createdTimestamp) (\s@AppInstanceUser' {} a -> s {createdTimestamp = a} :: AppInstanceUser) Prelude.. Lens.mapping Data._Time
+
+-- | The time at which the @AppInstanceUser@ was last updated.
+appInstanceUser_lastUpdatedTimestamp :: Lens.Lens' AppInstanceUser (Prelude.Maybe Prelude.UTCTime)
+appInstanceUser_lastUpdatedTimestamp = Lens.lens (\AppInstanceUser' {lastUpdatedTimestamp} -> lastUpdatedTimestamp) (\s@AppInstanceUser' {} a -> s {lastUpdatedTimestamp = a} :: AppInstanceUser) Prelude.. Lens.mapping Data._Time
+
+-- | The metadata of the @AppInstanceUser@.
+appInstanceUser_metadata :: Lens.Lens' AppInstanceUser (Prelude.Maybe Prelude.Text)
+appInstanceUser_metadata = Lens.lens (\AppInstanceUser' {metadata} -> metadata) (\s@AppInstanceUser' {} a -> s {metadata = a} :: AppInstanceUser) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The name of the @AppInstanceUser@.
+appInstanceUser_name :: Lens.Lens' AppInstanceUser (Prelude.Maybe Prelude.Text)
+appInstanceUser_name = Lens.lens (\AppInstanceUser' {name} -> name) (\s@AppInstanceUser' {} a -> s {name = a} :: AppInstanceUser) Prelude.. Lens.mapping Data._Sensitive
+
+instance Data.FromJSON AppInstanceUser where
+  parseJSON =
+    Data.withObject
+      "AppInstanceUser"
+      ( \x ->
+          AppInstanceUser'
+            Prelude.<$> (x Data..:? "AppInstanceUserArn")
+            Prelude.<*> (x Data..:? "CreatedTimestamp")
+            Prelude.<*> (x Data..:? "LastUpdatedTimestamp")
+            Prelude.<*> (x Data..:? "Metadata")
+            Prelude.<*> (x Data..:? "Name")
+      )
+
+instance Prelude.Hashable AppInstanceUser where
+  hashWithSalt _salt AppInstanceUser' {..} =
+    _salt
+      `Prelude.hashWithSalt` appInstanceUserArn
+      `Prelude.hashWithSalt` createdTimestamp
+      `Prelude.hashWithSalt` lastUpdatedTimestamp
+      `Prelude.hashWithSalt` metadata
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData AppInstanceUser where
+  rnf AppInstanceUser' {..} =
+    Prelude.rnf appInstanceUserArn
+      `Prelude.seq` Prelude.rnf createdTimestamp
+      `Prelude.seq` Prelude.rnf lastUpdatedTimestamp
+      `Prelude.seq` Prelude.rnf metadata
+      `Prelude.seq` Prelude.rnf name
diff --git a/gen/Amazonka/Chime/Types/AppInstanceUserMembershipSummary.hs b/gen/Amazonka/Chime/Types/AppInstanceUserMembershipSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/AppInstanceUserMembershipSummary.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.AppInstanceUserMembershipSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.AppInstanceUserMembershipSummary where
+
+import Amazonka.Chime.Types.ChannelMembershipType
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Summary of the membership details of an @AppInstanceUser@.
+--
+-- /See:/ 'newAppInstanceUserMembershipSummary' smart constructor.
+data AppInstanceUserMembershipSummary = AppInstanceUserMembershipSummary'
+  { -- | The time at which a message was last read.
+    readMarkerTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The type of @ChannelMembership@.
+    type' :: Prelude.Maybe ChannelMembershipType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AppInstanceUserMembershipSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'readMarkerTimestamp', 'appInstanceUserMembershipSummary_readMarkerTimestamp' - The time at which a message was last read.
+--
+-- 'type'', 'appInstanceUserMembershipSummary_type' - The type of @ChannelMembership@.
+newAppInstanceUserMembershipSummary ::
+  AppInstanceUserMembershipSummary
+newAppInstanceUserMembershipSummary =
+  AppInstanceUserMembershipSummary'
+    { readMarkerTimestamp =
+        Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | The time at which a message was last read.
+appInstanceUserMembershipSummary_readMarkerTimestamp :: Lens.Lens' AppInstanceUserMembershipSummary (Prelude.Maybe Prelude.UTCTime)
+appInstanceUserMembershipSummary_readMarkerTimestamp = Lens.lens (\AppInstanceUserMembershipSummary' {readMarkerTimestamp} -> readMarkerTimestamp) (\s@AppInstanceUserMembershipSummary' {} a -> s {readMarkerTimestamp = a} :: AppInstanceUserMembershipSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The type of @ChannelMembership@.
+appInstanceUserMembershipSummary_type :: Lens.Lens' AppInstanceUserMembershipSummary (Prelude.Maybe ChannelMembershipType)
+appInstanceUserMembershipSummary_type = Lens.lens (\AppInstanceUserMembershipSummary' {type'} -> type') (\s@AppInstanceUserMembershipSummary' {} a -> s {type' = a} :: AppInstanceUserMembershipSummary)
+
+instance
+  Data.FromJSON
+    AppInstanceUserMembershipSummary
+  where
+  parseJSON =
+    Data.withObject
+      "AppInstanceUserMembershipSummary"
+      ( \x ->
+          AppInstanceUserMembershipSummary'
+            Prelude.<$> (x Data..:? "ReadMarkerTimestamp")
+            Prelude.<*> (x Data..:? "Type")
+      )
+
+instance
+  Prelude.Hashable
+    AppInstanceUserMembershipSummary
+  where
+  hashWithSalt
+    _salt
+    AppInstanceUserMembershipSummary' {..} =
+      _salt
+        `Prelude.hashWithSalt` readMarkerTimestamp
+        `Prelude.hashWithSalt` type'
+
+instance
+  Prelude.NFData
+    AppInstanceUserMembershipSummary
+  where
+  rnf AppInstanceUserMembershipSummary' {..} =
+    Prelude.rnf readMarkerTimestamp
+      `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/Chime/Types/AppInstanceUserSummary.hs b/gen/Amazonka/Chime/Types/AppInstanceUserSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/AppInstanceUserSummary.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.AppInstanceUserSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.AppInstanceUserSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Summary of the details of an @AppInstanceUser@.
+--
+-- /See:/ 'newAppInstanceUserSummary' smart constructor.
+data AppInstanceUserSummary = AppInstanceUserSummary'
+  { -- | The ARN of the @AppInstanceUser@.
+    appInstanceUserArn :: Prelude.Maybe Prelude.Text,
+    -- | The metadata of the @AppInstanceUser@.
+    metadata :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The name of an @AppInstanceUser@.
+    name :: Prelude.Maybe (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AppInstanceUserSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceUserArn', 'appInstanceUserSummary_appInstanceUserArn' - The ARN of the @AppInstanceUser@.
+--
+-- 'metadata', 'appInstanceUserSummary_metadata' - The metadata of the @AppInstanceUser@.
+--
+-- 'name', 'appInstanceUserSummary_name' - The name of an @AppInstanceUser@.
+newAppInstanceUserSummary ::
+  AppInstanceUserSummary
+newAppInstanceUserSummary =
+  AppInstanceUserSummary'
+    { appInstanceUserArn =
+        Prelude.Nothing,
+      metadata = Prelude.Nothing,
+      name = Prelude.Nothing
+    }
+
+-- | The ARN of the @AppInstanceUser@.
+appInstanceUserSummary_appInstanceUserArn :: Lens.Lens' AppInstanceUserSummary (Prelude.Maybe Prelude.Text)
+appInstanceUserSummary_appInstanceUserArn = Lens.lens (\AppInstanceUserSummary' {appInstanceUserArn} -> appInstanceUserArn) (\s@AppInstanceUserSummary' {} a -> s {appInstanceUserArn = a} :: AppInstanceUserSummary)
+
+-- | The metadata of the @AppInstanceUser@.
+appInstanceUserSummary_metadata :: Lens.Lens' AppInstanceUserSummary (Prelude.Maybe Prelude.Text)
+appInstanceUserSummary_metadata = Lens.lens (\AppInstanceUserSummary' {metadata} -> metadata) (\s@AppInstanceUserSummary' {} a -> s {metadata = a} :: AppInstanceUserSummary) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The name of an @AppInstanceUser@.
+appInstanceUserSummary_name :: Lens.Lens' AppInstanceUserSummary (Prelude.Maybe Prelude.Text)
+appInstanceUserSummary_name = Lens.lens (\AppInstanceUserSummary' {name} -> name) (\s@AppInstanceUserSummary' {} a -> s {name = a} :: AppInstanceUserSummary) Prelude.. Lens.mapping Data._Sensitive
+
+instance Data.FromJSON AppInstanceUserSummary where
+  parseJSON =
+    Data.withObject
+      "AppInstanceUserSummary"
+      ( \x ->
+          AppInstanceUserSummary'
+            Prelude.<$> (x Data..:? "AppInstanceUserArn")
+            Prelude.<*> (x Data..:? "Metadata")
+            Prelude.<*> (x Data..:? "Name")
+      )
+
+instance Prelude.Hashable AppInstanceUserSummary where
+  hashWithSalt _salt AppInstanceUserSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` appInstanceUserArn
+      `Prelude.hashWithSalt` metadata
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData AppInstanceUserSummary where
+  rnf AppInstanceUserSummary' {..} =
+    Prelude.rnf appInstanceUserArn
+      `Prelude.seq` Prelude.rnf metadata
+      `Prelude.seq` Prelude.rnf name
diff --git a/gen/Amazonka/Chime/Types/ArtifactsConfiguration.hs b/gen/Amazonka/Chime/Types/ArtifactsConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/ArtifactsConfiguration.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.ArtifactsConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.ArtifactsConfiguration where
+
+import Amazonka.Chime.Types.AudioArtifactsConfiguration
+import Amazonka.Chime.Types.ContentArtifactsConfiguration
+import Amazonka.Chime.Types.VideoArtifactsConfiguration
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration for the artifacts.
+--
+-- /See:/ 'newArtifactsConfiguration' smart constructor.
+data ArtifactsConfiguration = ArtifactsConfiguration'
+  { -- | The configuration for the audio artifacts.
+    audio :: AudioArtifactsConfiguration,
+    -- | The configuration for the video artifacts.
+    video :: VideoArtifactsConfiguration,
+    -- | The configuration for the content artifacts.
+    content :: ContentArtifactsConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ArtifactsConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'audio', 'artifactsConfiguration_audio' - The configuration for the audio artifacts.
+--
+-- 'video', 'artifactsConfiguration_video' - The configuration for the video artifacts.
+--
+-- 'content', 'artifactsConfiguration_content' - The configuration for the content artifacts.
+newArtifactsConfiguration ::
+  -- | 'audio'
+  AudioArtifactsConfiguration ->
+  -- | 'video'
+  VideoArtifactsConfiguration ->
+  -- | 'content'
+  ContentArtifactsConfiguration ->
+  ArtifactsConfiguration
+newArtifactsConfiguration pAudio_ pVideo_ pContent_ =
+  ArtifactsConfiguration'
+    { audio = pAudio_,
+      video = pVideo_,
+      content = pContent_
+    }
+
+-- | The configuration for the audio artifacts.
+artifactsConfiguration_audio :: Lens.Lens' ArtifactsConfiguration AudioArtifactsConfiguration
+artifactsConfiguration_audio = Lens.lens (\ArtifactsConfiguration' {audio} -> audio) (\s@ArtifactsConfiguration' {} a -> s {audio = a} :: ArtifactsConfiguration)
+
+-- | The configuration for the video artifacts.
+artifactsConfiguration_video :: Lens.Lens' ArtifactsConfiguration VideoArtifactsConfiguration
+artifactsConfiguration_video = Lens.lens (\ArtifactsConfiguration' {video} -> video) (\s@ArtifactsConfiguration' {} a -> s {video = a} :: ArtifactsConfiguration)
+
+-- | The configuration for the content artifacts.
+artifactsConfiguration_content :: Lens.Lens' ArtifactsConfiguration ContentArtifactsConfiguration
+artifactsConfiguration_content = Lens.lens (\ArtifactsConfiguration' {content} -> content) (\s@ArtifactsConfiguration' {} a -> s {content = a} :: ArtifactsConfiguration)
+
+instance Data.FromJSON ArtifactsConfiguration where
+  parseJSON =
+    Data.withObject
+      "ArtifactsConfiguration"
+      ( \x ->
+          ArtifactsConfiguration'
+            Prelude.<$> (x Data..: "Audio")
+            Prelude.<*> (x Data..: "Video")
+            Prelude.<*> (x Data..: "Content")
+      )
+
+instance Prelude.Hashable ArtifactsConfiguration where
+  hashWithSalt _salt ArtifactsConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` audio
+      `Prelude.hashWithSalt` video
+      `Prelude.hashWithSalt` content
+
+instance Prelude.NFData ArtifactsConfiguration where
+  rnf ArtifactsConfiguration' {..} =
+    Prelude.rnf audio
+      `Prelude.seq` Prelude.rnf video
+      `Prelude.seq` Prelude.rnf content
+
+instance Data.ToJSON ArtifactsConfiguration where
+  toJSON ArtifactsConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Audio" Data..= audio),
+            Prelude.Just ("Video" Data..= video),
+            Prelude.Just ("Content" Data..= content)
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/ArtifactsState.hs b/gen/Amazonka/Chime/Types/ArtifactsState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/ArtifactsState.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.ArtifactsState
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.ArtifactsState
+  ( ArtifactsState
+      ( ..,
+        ArtifactsState_Disabled,
+        ArtifactsState_Enabled
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ArtifactsState = ArtifactsState'
+  { fromArtifactsState ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ArtifactsState_Disabled :: ArtifactsState
+pattern ArtifactsState_Disabled = ArtifactsState' "Disabled"
+
+pattern ArtifactsState_Enabled :: ArtifactsState
+pattern ArtifactsState_Enabled = ArtifactsState' "Enabled"
+
+{-# COMPLETE
+  ArtifactsState_Disabled,
+  ArtifactsState_Enabled,
+  ArtifactsState'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/Attendee.hs b/gen/Amazonka/Chime/Types/Attendee.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/Attendee.hs
@@ -0,0 +1,107 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.Attendee
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.Attendee where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | An Amazon Chime SDK meeting attendee. Includes a unique @AttendeeId@ and
+-- @JoinToken@ . The @JoinToken@ allows a client to authenticate and join
+-- as the specified attendee. The @JoinToken@ expires when the meeting ends
+-- or when DeleteAttendee is called. After that, the attendee is unable to
+-- join the meeting.
+--
+-- We recommend securely transferring each @JoinToken@ from your server
+-- application to the client so that no other client has access to the
+-- token except for the one authorized to represent the attendee.
+--
+-- /See:/ 'newAttendee' smart constructor.
+data Attendee = Attendee'
+  { -- | The Amazon Chime SDK attendee ID.
+    attendeeId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Chime SDK external user ID. An idempotency token. Links the
+    -- attendee to an identity managed by a builder application.
+    externalUserId :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The join token used by the Amazon Chime SDK attendee.
+    joinToken :: Prelude.Maybe (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Attendee' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'attendeeId', 'attendee_attendeeId' - The Amazon Chime SDK attendee ID.
+--
+-- 'externalUserId', 'attendee_externalUserId' - The Amazon Chime SDK external user ID. An idempotency token. Links the
+-- attendee to an identity managed by a builder application.
+--
+-- 'joinToken', 'attendee_joinToken' - The join token used by the Amazon Chime SDK attendee.
+newAttendee ::
+  Attendee
+newAttendee =
+  Attendee'
+    { attendeeId = Prelude.Nothing,
+      externalUserId = Prelude.Nothing,
+      joinToken = Prelude.Nothing
+    }
+
+-- | The Amazon Chime SDK attendee ID.
+attendee_attendeeId :: Lens.Lens' Attendee (Prelude.Maybe Prelude.Text)
+attendee_attendeeId = Lens.lens (\Attendee' {attendeeId} -> attendeeId) (\s@Attendee' {} a -> s {attendeeId = a} :: Attendee)
+
+-- | The Amazon Chime SDK external user ID. An idempotency token. Links the
+-- attendee to an identity managed by a builder application.
+attendee_externalUserId :: Lens.Lens' Attendee (Prelude.Maybe Prelude.Text)
+attendee_externalUserId = Lens.lens (\Attendee' {externalUserId} -> externalUserId) (\s@Attendee' {} a -> s {externalUserId = a} :: Attendee) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The join token used by the Amazon Chime SDK attendee.
+attendee_joinToken :: Lens.Lens' Attendee (Prelude.Maybe Prelude.Text)
+attendee_joinToken = Lens.lens (\Attendee' {joinToken} -> joinToken) (\s@Attendee' {} a -> s {joinToken = a} :: Attendee) Prelude.. Lens.mapping Data._Sensitive
+
+instance Data.FromJSON Attendee where
+  parseJSON =
+    Data.withObject
+      "Attendee"
+      ( \x ->
+          Attendee'
+            Prelude.<$> (x Data..:? "AttendeeId")
+            Prelude.<*> (x Data..:? "ExternalUserId")
+            Prelude.<*> (x Data..:? "JoinToken")
+      )
+
+instance Prelude.Hashable Attendee where
+  hashWithSalt _salt Attendee' {..} =
+    _salt
+      `Prelude.hashWithSalt` attendeeId
+      `Prelude.hashWithSalt` externalUserId
+      `Prelude.hashWithSalt` joinToken
+
+instance Prelude.NFData Attendee where
+  rnf Attendee' {..} =
+    Prelude.rnf attendeeId
+      `Prelude.seq` Prelude.rnf externalUserId
+      `Prelude.seq` Prelude.rnf joinToken
diff --git a/gen/Amazonka/Chime/Types/AudioArtifactsConfiguration.hs b/gen/Amazonka/Chime/Types/AudioArtifactsConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/AudioArtifactsConfiguration.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.AudioArtifactsConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.AudioArtifactsConfiguration where
+
+import Amazonka.Chime.Types.AudioMuxType
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The audio artifact configuration object.
+--
+-- /See:/ 'newAudioArtifactsConfiguration' smart constructor.
+data AudioArtifactsConfiguration = AudioArtifactsConfiguration'
+  { -- | The MUX type of the audio artifact configuration object.
+    muxType :: AudioMuxType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AudioArtifactsConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'muxType', 'audioArtifactsConfiguration_muxType' - The MUX type of the audio artifact configuration object.
+newAudioArtifactsConfiguration ::
+  -- | 'muxType'
+  AudioMuxType ->
+  AudioArtifactsConfiguration
+newAudioArtifactsConfiguration pMuxType_ =
+  AudioArtifactsConfiguration' {muxType = pMuxType_}
+
+-- | The MUX type of the audio artifact configuration object.
+audioArtifactsConfiguration_muxType :: Lens.Lens' AudioArtifactsConfiguration AudioMuxType
+audioArtifactsConfiguration_muxType = Lens.lens (\AudioArtifactsConfiguration' {muxType} -> muxType) (\s@AudioArtifactsConfiguration' {} a -> s {muxType = a} :: AudioArtifactsConfiguration)
+
+instance Data.FromJSON AudioArtifactsConfiguration where
+  parseJSON =
+    Data.withObject
+      "AudioArtifactsConfiguration"
+      ( \x ->
+          AudioArtifactsConfiguration'
+            Prelude.<$> (x Data..: "MuxType")
+      )
+
+instance Prelude.Hashable AudioArtifactsConfiguration where
+  hashWithSalt _salt AudioArtifactsConfiguration' {..} =
+    _salt `Prelude.hashWithSalt` muxType
+
+instance Prelude.NFData AudioArtifactsConfiguration where
+  rnf AudioArtifactsConfiguration' {..} =
+    Prelude.rnf muxType
+
+instance Data.ToJSON AudioArtifactsConfiguration where
+  toJSON AudioArtifactsConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("MuxType" Data..= muxType)]
+      )
diff --git a/gen/Amazonka/Chime/Types/AudioMuxType.hs b/gen/Amazonka/Chime/Types/AudioMuxType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/AudioMuxType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.AudioMuxType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.AudioMuxType
+  ( AudioMuxType
+      ( ..,
+        AudioMuxType_AudioOnly,
+        AudioMuxType_AudioWithActiveSpeakerVideo
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AudioMuxType = AudioMuxType'
+  { fromAudioMuxType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AudioMuxType_AudioOnly :: AudioMuxType
+pattern AudioMuxType_AudioOnly = AudioMuxType' "AudioOnly"
+
+pattern AudioMuxType_AudioWithActiveSpeakerVideo :: AudioMuxType
+pattern AudioMuxType_AudioWithActiveSpeakerVideo = AudioMuxType' "AudioWithActiveSpeakerVideo"
+
+{-# COMPLETE
+  AudioMuxType_AudioOnly,
+  AudioMuxType_AudioWithActiveSpeakerVideo,
+  AudioMuxType'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/BatchChannelMemberships.hs b/gen/Amazonka/Chime/Types/BatchChannelMemberships.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/BatchChannelMemberships.hs
@@ -0,0 +1,112 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.BatchChannelMemberships
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.BatchChannelMemberships where
+
+import Amazonka.Chime.Types.ChannelMembershipType
+import Amazonka.Chime.Types.Identity
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The membership information, including member ARNs, the channel ARN, and
+-- membership types.
+--
+-- /See:/ 'newBatchChannelMemberships' smart constructor.
+data BatchChannelMemberships = BatchChannelMemberships'
+  { -- | The ARN of the channel to which you\'re adding users.
+    channelArn :: Prelude.Maybe Prelude.Text,
+    -- | The identifier of the member who invited another member.
+    invitedBy :: Prelude.Maybe Identity,
+    -- | The users successfully added to the request.
+    members :: Prelude.Maybe [Identity],
+    -- | The membership types set for the channel users.
+    type' :: Prelude.Maybe ChannelMembershipType
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchChannelMemberships' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channelArn', 'batchChannelMemberships_channelArn' - The ARN of the channel to which you\'re adding users.
+--
+-- 'invitedBy', 'batchChannelMemberships_invitedBy' - The identifier of the member who invited another member.
+--
+-- 'members', 'batchChannelMemberships_members' - The users successfully added to the request.
+--
+-- 'type'', 'batchChannelMemberships_type' - The membership types set for the channel users.
+newBatchChannelMemberships ::
+  BatchChannelMemberships
+newBatchChannelMemberships =
+  BatchChannelMemberships'
+    { channelArn =
+        Prelude.Nothing,
+      invitedBy = Prelude.Nothing,
+      members = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | The ARN of the channel to which you\'re adding users.
+batchChannelMemberships_channelArn :: Lens.Lens' BatchChannelMemberships (Prelude.Maybe Prelude.Text)
+batchChannelMemberships_channelArn = Lens.lens (\BatchChannelMemberships' {channelArn} -> channelArn) (\s@BatchChannelMemberships' {} a -> s {channelArn = a} :: BatchChannelMemberships)
+
+-- | The identifier of the member who invited another member.
+batchChannelMemberships_invitedBy :: Lens.Lens' BatchChannelMemberships (Prelude.Maybe Identity)
+batchChannelMemberships_invitedBy = Lens.lens (\BatchChannelMemberships' {invitedBy} -> invitedBy) (\s@BatchChannelMemberships' {} a -> s {invitedBy = a} :: BatchChannelMemberships)
+
+-- | The users successfully added to the request.
+batchChannelMemberships_members :: Lens.Lens' BatchChannelMemberships (Prelude.Maybe [Identity])
+batchChannelMemberships_members = Lens.lens (\BatchChannelMemberships' {members} -> members) (\s@BatchChannelMemberships' {} a -> s {members = a} :: BatchChannelMemberships) Prelude.. Lens.mapping Lens.coerced
+
+-- | The membership types set for the channel users.
+batchChannelMemberships_type :: Lens.Lens' BatchChannelMemberships (Prelude.Maybe ChannelMembershipType)
+batchChannelMemberships_type = Lens.lens (\BatchChannelMemberships' {type'} -> type') (\s@BatchChannelMemberships' {} a -> s {type' = a} :: BatchChannelMemberships)
+
+instance Data.FromJSON BatchChannelMemberships where
+  parseJSON =
+    Data.withObject
+      "BatchChannelMemberships"
+      ( \x ->
+          BatchChannelMemberships'
+            Prelude.<$> (x Data..:? "ChannelArn")
+            Prelude.<*> (x Data..:? "InvitedBy")
+            Prelude.<*> (x Data..:? "Members" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Type")
+      )
+
+instance Prelude.Hashable BatchChannelMemberships where
+  hashWithSalt _salt BatchChannelMemberships' {..} =
+    _salt
+      `Prelude.hashWithSalt` channelArn
+      `Prelude.hashWithSalt` invitedBy
+      `Prelude.hashWithSalt` members
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData BatchChannelMemberships where
+  rnf BatchChannelMemberships' {..} =
+    Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf invitedBy
+      `Prelude.seq` Prelude.rnf members
+      `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/Chime/Types/BatchCreateChannelMembershipError.hs b/gen/Amazonka/Chime/Types/BatchCreateChannelMembershipError.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/BatchCreateChannelMembershipError.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.BatchCreateChannelMembershipError
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.BatchCreateChannelMembershipError where
+
+import Amazonka.Chime.Types.ErrorCode
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A list of failed member ARNs, error codes, and error messages.
+--
+-- /See:/ 'newBatchCreateChannelMembershipError' smart constructor.
+data BatchCreateChannelMembershipError = BatchCreateChannelMembershipError'
+  { -- | The error code.
+    errorCode :: Prelude.Maybe ErrorCode,
+    -- | The error message.
+    errorMessage :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the member that the service couldn\'t add.
+    memberArn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchCreateChannelMembershipError' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'errorCode', 'batchCreateChannelMembershipError_errorCode' - The error code.
+--
+-- 'errorMessage', 'batchCreateChannelMembershipError_errorMessage' - The error message.
+--
+-- 'memberArn', 'batchCreateChannelMembershipError_memberArn' - The ARN of the member that the service couldn\'t add.
+newBatchCreateChannelMembershipError ::
+  BatchCreateChannelMembershipError
+newBatchCreateChannelMembershipError =
+  BatchCreateChannelMembershipError'
+    { errorCode =
+        Prelude.Nothing,
+      errorMessage = Prelude.Nothing,
+      memberArn = Prelude.Nothing
+    }
+
+-- | The error code.
+batchCreateChannelMembershipError_errorCode :: Lens.Lens' BatchCreateChannelMembershipError (Prelude.Maybe ErrorCode)
+batchCreateChannelMembershipError_errorCode = Lens.lens (\BatchCreateChannelMembershipError' {errorCode} -> errorCode) (\s@BatchCreateChannelMembershipError' {} a -> s {errorCode = a} :: BatchCreateChannelMembershipError)
+
+-- | The error message.
+batchCreateChannelMembershipError_errorMessage :: Lens.Lens' BatchCreateChannelMembershipError (Prelude.Maybe Prelude.Text)
+batchCreateChannelMembershipError_errorMessage = Lens.lens (\BatchCreateChannelMembershipError' {errorMessage} -> errorMessage) (\s@BatchCreateChannelMembershipError' {} a -> s {errorMessage = a} :: BatchCreateChannelMembershipError)
+
+-- | The ARN of the member that the service couldn\'t add.
+batchCreateChannelMembershipError_memberArn :: Lens.Lens' BatchCreateChannelMembershipError (Prelude.Maybe Prelude.Text)
+batchCreateChannelMembershipError_memberArn = Lens.lens (\BatchCreateChannelMembershipError' {memberArn} -> memberArn) (\s@BatchCreateChannelMembershipError' {} a -> s {memberArn = a} :: BatchCreateChannelMembershipError)
+
+instance
+  Data.FromJSON
+    BatchCreateChannelMembershipError
+  where
+  parseJSON =
+    Data.withObject
+      "BatchCreateChannelMembershipError"
+      ( \x ->
+          BatchCreateChannelMembershipError'
+            Prelude.<$> (x Data..:? "ErrorCode")
+            Prelude.<*> (x Data..:? "ErrorMessage")
+            Prelude.<*> (x Data..:? "MemberArn")
+      )
+
+instance
+  Prelude.Hashable
+    BatchCreateChannelMembershipError
+  where
+  hashWithSalt
+    _salt
+    BatchCreateChannelMembershipError' {..} =
+      _salt
+        `Prelude.hashWithSalt` errorCode
+        `Prelude.hashWithSalt` errorMessage
+        `Prelude.hashWithSalt` memberArn
+
+instance
+  Prelude.NFData
+    BatchCreateChannelMembershipError
+  where
+  rnf BatchCreateChannelMembershipError' {..} =
+    Prelude.rnf errorCode
+      `Prelude.seq` Prelude.rnf errorMessage
+      `Prelude.seq` Prelude.rnf memberArn
diff --git a/gen/Amazonka/Chime/Types/Bot.hs b/gen/Amazonka/Chime/Types/Bot.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/Bot.hs
@@ -0,0 +1,173 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.Bot
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.Bot where
+
+import Amazonka.Chime.Types.BotType
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A resource that allows Enterprise account administrators to configure an
+-- interface to receive events from Amazon Chime.
+--
+-- /See:/ 'newBot' smart constructor.
+data Bot = Bot'
+  { -- | The bot email address.
+    botEmail :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The bot ID.
+    botId :: Prelude.Maybe Prelude.Text,
+    -- | The bot type.
+    botType :: Prelude.Maybe BotType,
+    -- | The bot creation timestamp, in ISO 8601 format.
+    createdTimestamp :: Prelude.Maybe Data.ISO8601,
+    -- | When true, the bot is stopped from running in your account.
+    disabled :: Prelude.Maybe Prelude.Bool,
+    -- | The bot display name.
+    displayName :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The security token used to authenticate Amazon Chime with the outgoing
+    -- event endpoint.
+    securityToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The updated bot timestamp, in ISO 8601 format.
+    updatedTimestamp :: Prelude.Maybe Data.ISO8601,
+    -- | The unique ID for the bot user.
+    userId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Bot' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'botEmail', 'bot_botEmail' - The bot email address.
+--
+-- 'botId', 'bot_botId' - The bot ID.
+--
+-- 'botType', 'bot_botType' - The bot type.
+--
+-- 'createdTimestamp', 'bot_createdTimestamp' - The bot creation timestamp, in ISO 8601 format.
+--
+-- 'disabled', 'bot_disabled' - When true, the bot is stopped from running in your account.
+--
+-- 'displayName', 'bot_displayName' - The bot display name.
+--
+-- 'securityToken', 'bot_securityToken' - The security token used to authenticate Amazon Chime with the outgoing
+-- event endpoint.
+--
+-- 'updatedTimestamp', 'bot_updatedTimestamp' - The updated bot timestamp, in ISO 8601 format.
+--
+-- 'userId', 'bot_userId' - The unique ID for the bot user.
+newBot ::
+  Bot
+newBot =
+  Bot'
+    { botEmail = Prelude.Nothing,
+      botId = Prelude.Nothing,
+      botType = Prelude.Nothing,
+      createdTimestamp = Prelude.Nothing,
+      disabled = Prelude.Nothing,
+      displayName = Prelude.Nothing,
+      securityToken = Prelude.Nothing,
+      updatedTimestamp = Prelude.Nothing,
+      userId = Prelude.Nothing
+    }
+
+-- | The bot email address.
+bot_botEmail :: Lens.Lens' Bot (Prelude.Maybe Prelude.Text)
+bot_botEmail = Lens.lens (\Bot' {botEmail} -> botEmail) (\s@Bot' {} a -> s {botEmail = a} :: Bot) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The bot ID.
+bot_botId :: Lens.Lens' Bot (Prelude.Maybe Prelude.Text)
+bot_botId = Lens.lens (\Bot' {botId} -> botId) (\s@Bot' {} a -> s {botId = a} :: Bot)
+
+-- | The bot type.
+bot_botType :: Lens.Lens' Bot (Prelude.Maybe BotType)
+bot_botType = Lens.lens (\Bot' {botType} -> botType) (\s@Bot' {} a -> s {botType = a} :: Bot)
+
+-- | The bot creation timestamp, in ISO 8601 format.
+bot_createdTimestamp :: Lens.Lens' Bot (Prelude.Maybe Prelude.UTCTime)
+bot_createdTimestamp = Lens.lens (\Bot' {createdTimestamp} -> createdTimestamp) (\s@Bot' {} a -> s {createdTimestamp = a} :: Bot) Prelude.. Lens.mapping Data._Time
+
+-- | When true, the bot is stopped from running in your account.
+bot_disabled :: Lens.Lens' Bot (Prelude.Maybe Prelude.Bool)
+bot_disabled = Lens.lens (\Bot' {disabled} -> disabled) (\s@Bot' {} a -> s {disabled = a} :: Bot)
+
+-- | The bot display name.
+bot_displayName :: Lens.Lens' Bot (Prelude.Maybe Prelude.Text)
+bot_displayName = Lens.lens (\Bot' {displayName} -> displayName) (\s@Bot' {} a -> s {displayName = a} :: Bot) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The security token used to authenticate Amazon Chime with the outgoing
+-- event endpoint.
+bot_securityToken :: Lens.Lens' Bot (Prelude.Maybe Prelude.Text)
+bot_securityToken = Lens.lens (\Bot' {securityToken} -> securityToken) (\s@Bot' {} a -> s {securityToken = a} :: Bot) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The updated bot timestamp, in ISO 8601 format.
+bot_updatedTimestamp :: Lens.Lens' Bot (Prelude.Maybe Prelude.UTCTime)
+bot_updatedTimestamp = Lens.lens (\Bot' {updatedTimestamp} -> updatedTimestamp) (\s@Bot' {} a -> s {updatedTimestamp = a} :: Bot) Prelude.. Lens.mapping Data._Time
+
+-- | The unique ID for the bot user.
+bot_userId :: Lens.Lens' Bot (Prelude.Maybe Prelude.Text)
+bot_userId = Lens.lens (\Bot' {userId} -> userId) (\s@Bot' {} a -> s {userId = a} :: Bot)
+
+instance Data.FromJSON Bot where
+  parseJSON =
+    Data.withObject
+      "Bot"
+      ( \x ->
+          Bot'
+            Prelude.<$> (x Data..:? "BotEmail")
+            Prelude.<*> (x Data..:? "BotId")
+            Prelude.<*> (x Data..:? "BotType")
+            Prelude.<*> (x Data..:? "CreatedTimestamp")
+            Prelude.<*> (x Data..:? "Disabled")
+            Prelude.<*> (x Data..:? "DisplayName")
+            Prelude.<*> (x Data..:? "SecurityToken")
+            Prelude.<*> (x Data..:? "UpdatedTimestamp")
+            Prelude.<*> (x Data..:? "UserId")
+      )
+
+instance Prelude.Hashable Bot where
+  hashWithSalt _salt Bot' {..} =
+    _salt
+      `Prelude.hashWithSalt` botEmail
+      `Prelude.hashWithSalt` botId
+      `Prelude.hashWithSalt` botType
+      `Prelude.hashWithSalt` createdTimestamp
+      `Prelude.hashWithSalt` disabled
+      `Prelude.hashWithSalt` displayName
+      `Prelude.hashWithSalt` securityToken
+      `Prelude.hashWithSalt` updatedTimestamp
+      `Prelude.hashWithSalt` userId
+
+instance Prelude.NFData Bot where
+  rnf Bot' {..} =
+    Prelude.rnf botEmail
+      `Prelude.seq` Prelude.rnf botId
+      `Prelude.seq` Prelude.rnf botType
+      `Prelude.seq` Prelude.rnf createdTimestamp
+      `Prelude.seq` Prelude.rnf disabled
+      `Prelude.seq` Prelude.rnf displayName
+      `Prelude.seq` Prelude.rnf securityToken
+      `Prelude.seq` Prelude.rnf updatedTimestamp
+      `Prelude.seq` Prelude.rnf userId
diff --git a/gen/Amazonka/Chime/Types/BotType.hs b/gen/Amazonka/Chime/Types/BotType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/BotType.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.BotType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.BotType
+  ( BotType
+      ( ..,
+        BotType_ChatBot
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype BotType = BotType' {fromBotType :: Data.Text}
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern BotType_ChatBot :: BotType
+pattern BotType_ChatBot = BotType' "ChatBot"
+
+{-# COMPLETE
+  BotType_ChatBot,
+  BotType'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/BusinessCallingSettings.hs b/gen/Amazonka/Chime/Types/BusinessCallingSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/BusinessCallingSettings.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.BusinessCallingSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.BusinessCallingSettings where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The Amazon Chime Business Calling settings for the administrator\'s AWS
+-- account. Includes any Amazon S3 buckets designated for storing call
+-- detail records.
+--
+-- /See:/ 'newBusinessCallingSettings' smart constructor.
+data BusinessCallingSettings = BusinessCallingSettings'
+  { -- | The Amazon S3 bucket designated for call detail record storage.
+    cdrBucket :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BusinessCallingSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'cdrBucket', 'businessCallingSettings_cdrBucket' - The Amazon S3 bucket designated for call detail record storage.
+newBusinessCallingSettings ::
+  BusinessCallingSettings
+newBusinessCallingSettings =
+  BusinessCallingSettings'
+    { cdrBucket =
+        Prelude.Nothing
+    }
+
+-- | The Amazon S3 bucket designated for call detail record storage.
+businessCallingSettings_cdrBucket :: Lens.Lens' BusinessCallingSettings (Prelude.Maybe Prelude.Text)
+businessCallingSettings_cdrBucket = Lens.lens (\BusinessCallingSettings' {cdrBucket} -> cdrBucket) (\s@BusinessCallingSettings' {} a -> s {cdrBucket = a} :: BusinessCallingSettings)
+
+instance Data.FromJSON BusinessCallingSettings where
+  parseJSON =
+    Data.withObject
+      "BusinessCallingSettings"
+      ( \x ->
+          BusinessCallingSettings'
+            Prelude.<$> (x Data..:? "CdrBucket")
+      )
+
+instance Prelude.Hashable BusinessCallingSettings where
+  hashWithSalt _salt BusinessCallingSettings' {..} =
+    _salt `Prelude.hashWithSalt` cdrBucket
+
+instance Prelude.NFData BusinessCallingSettings where
+  rnf BusinessCallingSettings' {..} =
+    Prelude.rnf cdrBucket
+
+instance Data.ToJSON BusinessCallingSettings where
+  toJSON BusinessCallingSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("CdrBucket" Data..=) Prelude.<$> cdrBucket]
+      )
diff --git a/gen/Amazonka/Chime/Types/CallingNameStatus.hs b/gen/Amazonka/Chime/Types/CallingNameStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/CallingNameStatus.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.CallingNameStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.CallingNameStatus
+  ( CallingNameStatus
+      ( ..,
+        CallingNameStatus_Unassigned,
+        CallingNameStatus_UpdateFailed,
+        CallingNameStatus_UpdateInProgress,
+        CallingNameStatus_UpdateSucceeded
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CallingNameStatus = CallingNameStatus'
+  { fromCallingNameStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CallingNameStatus_Unassigned :: CallingNameStatus
+pattern CallingNameStatus_Unassigned = CallingNameStatus' "Unassigned"
+
+pattern CallingNameStatus_UpdateFailed :: CallingNameStatus
+pattern CallingNameStatus_UpdateFailed = CallingNameStatus' "UpdateFailed"
+
+pattern CallingNameStatus_UpdateInProgress :: CallingNameStatus
+pattern CallingNameStatus_UpdateInProgress = CallingNameStatus' "UpdateInProgress"
+
+pattern CallingNameStatus_UpdateSucceeded :: CallingNameStatus
+pattern CallingNameStatus_UpdateSucceeded = CallingNameStatus' "UpdateSucceeded"
+
+{-# COMPLETE
+  CallingNameStatus_Unassigned,
+  CallingNameStatus_UpdateFailed,
+  CallingNameStatus_UpdateInProgress,
+  CallingNameStatus_UpdateSucceeded,
+  CallingNameStatus'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/CandidateAddress.hs b/gen/Amazonka/Chime/Types/CandidateAddress.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/CandidateAddress.hs
@@ -0,0 +1,144 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.CandidateAddress
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.CandidateAddress where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A suggested address.
+--
+-- /See:/ 'newCandidateAddress' smart constructor.
+data CandidateAddress = CandidateAddress'
+  { -- | The city of a candidate address.
+    city :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The country of a candidate address.
+    country :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The postal code of a candidate address.
+    postalCode :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The Zip + 4 or postal code + 4 of a candidate address.
+    postalCodePlus4 :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The state of a candidate address.
+    state :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The street information of a candidate address
+    streetInfo :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The numeric portion of a candidate address.
+    streetNumber :: Prelude.Maybe (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CandidateAddress' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'city', 'candidateAddress_city' - The city of a candidate address.
+--
+-- 'country', 'candidateAddress_country' - The country of a candidate address.
+--
+-- 'postalCode', 'candidateAddress_postalCode' - The postal code of a candidate address.
+--
+-- 'postalCodePlus4', 'candidateAddress_postalCodePlus4' - The Zip + 4 or postal code + 4 of a candidate address.
+--
+-- 'state', 'candidateAddress_state' - The state of a candidate address.
+--
+-- 'streetInfo', 'candidateAddress_streetInfo' - The street information of a candidate address
+--
+-- 'streetNumber', 'candidateAddress_streetNumber' - The numeric portion of a candidate address.
+newCandidateAddress ::
+  CandidateAddress
+newCandidateAddress =
+  CandidateAddress'
+    { city = Prelude.Nothing,
+      country = Prelude.Nothing,
+      postalCode = Prelude.Nothing,
+      postalCodePlus4 = Prelude.Nothing,
+      state = Prelude.Nothing,
+      streetInfo = Prelude.Nothing,
+      streetNumber = Prelude.Nothing
+    }
+
+-- | The city of a candidate address.
+candidateAddress_city :: Lens.Lens' CandidateAddress (Prelude.Maybe Prelude.Text)
+candidateAddress_city = Lens.lens (\CandidateAddress' {city} -> city) (\s@CandidateAddress' {} a -> s {city = a} :: CandidateAddress) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The country of a candidate address.
+candidateAddress_country :: Lens.Lens' CandidateAddress (Prelude.Maybe Prelude.Text)
+candidateAddress_country = Lens.lens (\CandidateAddress' {country} -> country) (\s@CandidateAddress' {} a -> s {country = a} :: CandidateAddress) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The postal code of a candidate address.
+candidateAddress_postalCode :: Lens.Lens' CandidateAddress (Prelude.Maybe Prelude.Text)
+candidateAddress_postalCode = Lens.lens (\CandidateAddress' {postalCode} -> postalCode) (\s@CandidateAddress' {} a -> s {postalCode = a} :: CandidateAddress) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The Zip + 4 or postal code + 4 of a candidate address.
+candidateAddress_postalCodePlus4 :: Lens.Lens' CandidateAddress (Prelude.Maybe Prelude.Text)
+candidateAddress_postalCodePlus4 = Lens.lens (\CandidateAddress' {postalCodePlus4} -> postalCodePlus4) (\s@CandidateAddress' {} a -> s {postalCodePlus4 = a} :: CandidateAddress) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The state of a candidate address.
+candidateAddress_state :: Lens.Lens' CandidateAddress (Prelude.Maybe Prelude.Text)
+candidateAddress_state = Lens.lens (\CandidateAddress' {state} -> state) (\s@CandidateAddress' {} a -> s {state = a} :: CandidateAddress) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The street information of a candidate address
+candidateAddress_streetInfo :: Lens.Lens' CandidateAddress (Prelude.Maybe Prelude.Text)
+candidateAddress_streetInfo = Lens.lens (\CandidateAddress' {streetInfo} -> streetInfo) (\s@CandidateAddress' {} a -> s {streetInfo = a} :: CandidateAddress) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The numeric portion of a candidate address.
+candidateAddress_streetNumber :: Lens.Lens' CandidateAddress (Prelude.Maybe Prelude.Text)
+candidateAddress_streetNumber = Lens.lens (\CandidateAddress' {streetNumber} -> streetNumber) (\s@CandidateAddress' {} a -> s {streetNumber = a} :: CandidateAddress) Prelude.. Lens.mapping Data._Sensitive
+
+instance Data.FromJSON CandidateAddress where
+  parseJSON =
+    Data.withObject
+      "CandidateAddress"
+      ( \x ->
+          CandidateAddress'
+            Prelude.<$> (x Data..:? "city")
+            Prelude.<*> (x Data..:? "country")
+            Prelude.<*> (x Data..:? "postalCode")
+            Prelude.<*> (x Data..:? "postalCodePlus4")
+            Prelude.<*> (x Data..:? "state")
+            Prelude.<*> (x Data..:? "streetInfo")
+            Prelude.<*> (x Data..:? "streetNumber")
+      )
+
+instance Prelude.Hashable CandidateAddress where
+  hashWithSalt _salt CandidateAddress' {..} =
+    _salt
+      `Prelude.hashWithSalt` city
+      `Prelude.hashWithSalt` country
+      `Prelude.hashWithSalt` postalCode
+      `Prelude.hashWithSalt` postalCodePlus4
+      `Prelude.hashWithSalt` state
+      `Prelude.hashWithSalt` streetInfo
+      `Prelude.hashWithSalt` streetNumber
+
+instance Prelude.NFData CandidateAddress where
+  rnf CandidateAddress' {..} =
+    Prelude.rnf city
+      `Prelude.seq` Prelude.rnf country
+      `Prelude.seq` Prelude.rnf postalCode
+      `Prelude.seq` Prelude.rnf postalCodePlus4
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf streetInfo
+      `Prelude.seq` Prelude.rnf streetNumber
diff --git a/gen/Amazonka/Chime/Types/Capability.hs b/gen/Amazonka/Chime/Types/Capability.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/Capability.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.Capability
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.Capability
+  ( Capability
+      ( ..,
+        Capability_SMS,
+        Capability_Voice
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype Capability = Capability'
+  { fromCapability ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Capability_SMS :: Capability
+pattern Capability_SMS = Capability' "SMS"
+
+pattern Capability_Voice :: Capability
+pattern Capability_Voice = Capability' "Voice"
+
+{-# COMPLETE
+  Capability_SMS,
+  Capability_Voice,
+  Capability'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/Channel.hs b/gen/Amazonka/Chime/Types/Channel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/Channel.hs
@@ -0,0 +1,171 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.Channel
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.Channel where
+
+import Amazonka.Chime.Types.ChannelMode
+import Amazonka.Chime.Types.ChannelPrivacy
+import Amazonka.Chime.Types.Identity
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The details of a channel.
+--
+-- /See:/ 'newChannel' smart constructor.
+data Channel = Channel'
+  { -- | The ARN of the channel.
+    channelArn :: Prelude.Maybe Prelude.Text,
+    -- | The @AppInstanceUser@ who created the channel.
+    createdBy :: Prelude.Maybe Identity,
+    -- | The time at which the @AppInstanceUser@ created the channel.
+    createdTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The time at which a member sent the last message in the channel.
+    lastMessageTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The time at which a channel was last updated.
+    lastUpdatedTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The channel\'s metadata.
+    metadata :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The mode of the channel.
+    mode :: Prelude.Maybe ChannelMode,
+    -- | The name of the channel.
+    name :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The channel\'s privacy setting.
+    privacy :: Prelude.Maybe ChannelPrivacy
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Channel' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channelArn', 'channel_channelArn' - The ARN of the channel.
+--
+-- 'createdBy', 'channel_createdBy' - The @AppInstanceUser@ who created the channel.
+--
+-- 'createdTimestamp', 'channel_createdTimestamp' - The time at which the @AppInstanceUser@ created the channel.
+--
+-- 'lastMessageTimestamp', 'channel_lastMessageTimestamp' - The time at which a member sent the last message in the channel.
+--
+-- 'lastUpdatedTimestamp', 'channel_lastUpdatedTimestamp' - The time at which a channel was last updated.
+--
+-- 'metadata', 'channel_metadata' - The channel\'s metadata.
+--
+-- 'mode', 'channel_mode' - The mode of the channel.
+--
+-- 'name', 'channel_name' - The name of the channel.
+--
+-- 'privacy', 'channel_privacy' - The channel\'s privacy setting.
+newChannel ::
+  Channel
+newChannel =
+  Channel'
+    { channelArn = Prelude.Nothing,
+      createdBy = Prelude.Nothing,
+      createdTimestamp = Prelude.Nothing,
+      lastMessageTimestamp = Prelude.Nothing,
+      lastUpdatedTimestamp = Prelude.Nothing,
+      metadata = Prelude.Nothing,
+      mode = Prelude.Nothing,
+      name = Prelude.Nothing,
+      privacy = Prelude.Nothing
+    }
+
+-- | The ARN of the channel.
+channel_channelArn :: Lens.Lens' Channel (Prelude.Maybe Prelude.Text)
+channel_channelArn = Lens.lens (\Channel' {channelArn} -> channelArn) (\s@Channel' {} a -> s {channelArn = a} :: Channel)
+
+-- | The @AppInstanceUser@ who created the channel.
+channel_createdBy :: Lens.Lens' Channel (Prelude.Maybe Identity)
+channel_createdBy = Lens.lens (\Channel' {createdBy} -> createdBy) (\s@Channel' {} a -> s {createdBy = a} :: Channel)
+
+-- | The time at which the @AppInstanceUser@ created the channel.
+channel_createdTimestamp :: Lens.Lens' Channel (Prelude.Maybe Prelude.UTCTime)
+channel_createdTimestamp = Lens.lens (\Channel' {createdTimestamp} -> createdTimestamp) (\s@Channel' {} a -> s {createdTimestamp = a} :: Channel) Prelude.. Lens.mapping Data._Time
+
+-- | The time at which a member sent the last message in the channel.
+channel_lastMessageTimestamp :: Lens.Lens' Channel (Prelude.Maybe Prelude.UTCTime)
+channel_lastMessageTimestamp = Lens.lens (\Channel' {lastMessageTimestamp} -> lastMessageTimestamp) (\s@Channel' {} a -> s {lastMessageTimestamp = a} :: Channel) Prelude.. Lens.mapping Data._Time
+
+-- | The time at which a channel was last updated.
+channel_lastUpdatedTimestamp :: Lens.Lens' Channel (Prelude.Maybe Prelude.UTCTime)
+channel_lastUpdatedTimestamp = Lens.lens (\Channel' {lastUpdatedTimestamp} -> lastUpdatedTimestamp) (\s@Channel' {} a -> s {lastUpdatedTimestamp = a} :: Channel) Prelude.. Lens.mapping Data._Time
+
+-- | The channel\'s metadata.
+channel_metadata :: Lens.Lens' Channel (Prelude.Maybe Prelude.Text)
+channel_metadata = Lens.lens (\Channel' {metadata} -> metadata) (\s@Channel' {} a -> s {metadata = a} :: Channel) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The mode of the channel.
+channel_mode :: Lens.Lens' Channel (Prelude.Maybe ChannelMode)
+channel_mode = Lens.lens (\Channel' {mode} -> mode) (\s@Channel' {} a -> s {mode = a} :: Channel)
+
+-- | The name of the channel.
+channel_name :: Lens.Lens' Channel (Prelude.Maybe Prelude.Text)
+channel_name = Lens.lens (\Channel' {name} -> name) (\s@Channel' {} a -> s {name = a} :: Channel) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The channel\'s privacy setting.
+channel_privacy :: Lens.Lens' Channel (Prelude.Maybe ChannelPrivacy)
+channel_privacy = Lens.lens (\Channel' {privacy} -> privacy) (\s@Channel' {} a -> s {privacy = a} :: Channel)
+
+instance Data.FromJSON Channel where
+  parseJSON =
+    Data.withObject
+      "Channel"
+      ( \x ->
+          Channel'
+            Prelude.<$> (x Data..:? "ChannelArn")
+            Prelude.<*> (x Data..:? "CreatedBy")
+            Prelude.<*> (x Data..:? "CreatedTimestamp")
+            Prelude.<*> (x Data..:? "LastMessageTimestamp")
+            Prelude.<*> (x Data..:? "LastUpdatedTimestamp")
+            Prelude.<*> (x Data..:? "Metadata")
+            Prelude.<*> (x Data..:? "Mode")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "Privacy")
+      )
+
+instance Prelude.Hashable Channel where
+  hashWithSalt _salt Channel' {..} =
+    _salt
+      `Prelude.hashWithSalt` channelArn
+      `Prelude.hashWithSalt` createdBy
+      `Prelude.hashWithSalt` createdTimestamp
+      `Prelude.hashWithSalt` lastMessageTimestamp
+      `Prelude.hashWithSalt` lastUpdatedTimestamp
+      `Prelude.hashWithSalt` metadata
+      `Prelude.hashWithSalt` mode
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` privacy
+
+instance Prelude.NFData Channel where
+  rnf Channel' {..} =
+    Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf createdTimestamp
+      `Prelude.seq` Prelude.rnf lastMessageTimestamp
+      `Prelude.seq` Prelude.rnf lastUpdatedTimestamp
+      `Prelude.seq` Prelude.rnf metadata
+      `Prelude.seq` Prelude.rnf mode
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf privacy
diff --git a/gen/Amazonka/Chime/Types/ChannelBan.hs b/gen/Amazonka/Chime/Types/ChannelBan.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/ChannelBan.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.ChannelBan
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.ChannelBan where
+
+import Amazonka.Chime.Types.Identity
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The details of a channel ban.
+--
+-- /See:/ 'newChannelBan' smart constructor.
+data ChannelBan = ChannelBan'
+  { -- | The ARN of the channel from which a member is being banned.
+    channelArn :: Prelude.Maybe Prelude.Text,
+    -- | The @AppInstanceUser@ who created the ban.
+    createdBy :: Prelude.Maybe Identity,
+    -- | The time at which the ban was created.
+    createdTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The member being banned from the channel.
+    member :: Prelude.Maybe Identity
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ChannelBan' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channelArn', 'channelBan_channelArn' - The ARN of the channel from which a member is being banned.
+--
+-- 'createdBy', 'channelBan_createdBy' - The @AppInstanceUser@ who created the ban.
+--
+-- 'createdTimestamp', 'channelBan_createdTimestamp' - The time at which the ban was created.
+--
+-- 'member', 'channelBan_member' - The member being banned from the channel.
+newChannelBan ::
+  ChannelBan
+newChannelBan =
+  ChannelBan'
+    { channelArn = Prelude.Nothing,
+      createdBy = Prelude.Nothing,
+      createdTimestamp = Prelude.Nothing,
+      member = Prelude.Nothing
+    }
+
+-- | The ARN of the channel from which a member is being banned.
+channelBan_channelArn :: Lens.Lens' ChannelBan (Prelude.Maybe Prelude.Text)
+channelBan_channelArn = Lens.lens (\ChannelBan' {channelArn} -> channelArn) (\s@ChannelBan' {} a -> s {channelArn = a} :: ChannelBan)
+
+-- | The @AppInstanceUser@ who created the ban.
+channelBan_createdBy :: Lens.Lens' ChannelBan (Prelude.Maybe Identity)
+channelBan_createdBy = Lens.lens (\ChannelBan' {createdBy} -> createdBy) (\s@ChannelBan' {} a -> s {createdBy = a} :: ChannelBan)
+
+-- | The time at which the ban was created.
+channelBan_createdTimestamp :: Lens.Lens' ChannelBan (Prelude.Maybe Prelude.UTCTime)
+channelBan_createdTimestamp = Lens.lens (\ChannelBan' {createdTimestamp} -> createdTimestamp) (\s@ChannelBan' {} a -> s {createdTimestamp = a} :: ChannelBan) Prelude.. Lens.mapping Data._Time
+
+-- | The member being banned from the channel.
+channelBan_member :: Lens.Lens' ChannelBan (Prelude.Maybe Identity)
+channelBan_member = Lens.lens (\ChannelBan' {member} -> member) (\s@ChannelBan' {} a -> s {member = a} :: ChannelBan)
+
+instance Data.FromJSON ChannelBan where
+  parseJSON =
+    Data.withObject
+      "ChannelBan"
+      ( \x ->
+          ChannelBan'
+            Prelude.<$> (x Data..:? "ChannelArn")
+            Prelude.<*> (x Data..:? "CreatedBy")
+            Prelude.<*> (x Data..:? "CreatedTimestamp")
+            Prelude.<*> (x Data..:? "Member")
+      )
+
+instance Prelude.Hashable ChannelBan where
+  hashWithSalt _salt ChannelBan' {..} =
+    _salt
+      `Prelude.hashWithSalt` channelArn
+      `Prelude.hashWithSalt` createdBy
+      `Prelude.hashWithSalt` createdTimestamp
+      `Prelude.hashWithSalt` member
+
+instance Prelude.NFData ChannelBan where
+  rnf ChannelBan' {..} =
+    Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf createdTimestamp
+      `Prelude.seq` Prelude.rnf member
diff --git a/gen/Amazonka/Chime/Types/ChannelBanSummary.hs b/gen/Amazonka/Chime/Types/ChannelBanSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/ChannelBanSummary.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.ChannelBanSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.ChannelBanSummary where
+
+import Amazonka.Chime.Types.Identity
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Summary of the details of a @ChannelBan@.
+--
+-- /See:/ 'newChannelBanSummary' smart constructor.
+data ChannelBanSummary = ChannelBanSummary'
+  { -- | The member being banned from a channel.
+    member :: Prelude.Maybe Identity
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ChannelBanSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'member', 'channelBanSummary_member' - The member being banned from a channel.
+newChannelBanSummary ::
+  ChannelBanSummary
+newChannelBanSummary =
+  ChannelBanSummary' {member = Prelude.Nothing}
+
+-- | The member being banned from a channel.
+channelBanSummary_member :: Lens.Lens' ChannelBanSummary (Prelude.Maybe Identity)
+channelBanSummary_member = Lens.lens (\ChannelBanSummary' {member} -> member) (\s@ChannelBanSummary' {} a -> s {member = a} :: ChannelBanSummary)
+
+instance Data.FromJSON ChannelBanSummary where
+  parseJSON =
+    Data.withObject
+      "ChannelBanSummary"
+      ( \x ->
+          ChannelBanSummary' Prelude.<$> (x Data..:? "Member")
+      )
+
+instance Prelude.Hashable ChannelBanSummary where
+  hashWithSalt _salt ChannelBanSummary' {..} =
+    _salt `Prelude.hashWithSalt` member
+
+instance Prelude.NFData ChannelBanSummary where
+  rnf ChannelBanSummary' {..} = Prelude.rnf member
diff --git a/gen/Amazonka/Chime/Types/ChannelMembership.hs b/gen/Amazonka/Chime/Types/ChannelMembership.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/ChannelMembership.hs
@@ -0,0 +1,134 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.ChannelMembership
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.ChannelMembership where
+
+import Amazonka.Chime.Types.ChannelMembershipType
+import Amazonka.Chime.Types.Identity
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The details of a channel member.
+--
+-- /See:/ 'newChannelMembership' smart constructor.
+data ChannelMembership = ChannelMembership'
+  { -- | The ARN of the member\'s channel.
+    channelArn :: Prelude.Maybe Prelude.Text,
+    -- | The time at which the channel membership was created.
+    createdTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The identifier of the member who invited another member.
+    invitedBy :: Prelude.Maybe Identity,
+    -- | The time at which a channel membership was last updated.
+    lastUpdatedTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The data of the channel member.
+    member :: Prelude.Maybe Identity,
+    -- | The membership type set for the channel member.
+    type' :: Prelude.Maybe ChannelMembershipType
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ChannelMembership' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channelArn', 'channelMembership_channelArn' - The ARN of the member\'s channel.
+--
+-- 'createdTimestamp', 'channelMembership_createdTimestamp' - The time at which the channel membership was created.
+--
+-- 'invitedBy', 'channelMembership_invitedBy' - The identifier of the member who invited another member.
+--
+-- 'lastUpdatedTimestamp', 'channelMembership_lastUpdatedTimestamp' - The time at which a channel membership was last updated.
+--
+-- 'member', 'channelMembership_member' - The data of the channel member.
+--
+-- 'type'', 'channelMembership_type' - The membership type set for the channel member.
+newChannelMembership ::
+  ChannelMembership
+newChannelMembership =
+  ChannelMembership'
+    { channelArn = Prelude.Nothing,
+      createdTimestamp = Prelude.Nothing,
+      invitedBy = Prelude.Nothing,
+      lastUpdatedTimestamp = Prelude.Nothing,
+      member = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | The ARN of the member\'s channel.
+channelMembership_channelArn :: Lens.Lens' ChannelMembership (Prelude.Maybe Prelude.Text)
+channelMembership_channelArn = Lens.lens (\ChannelMembership' {channelArn} -> channelArn) (\s@ChannelMembership' {} a -> s {channelArn = a} :: ChannelMembership)
+
+-- | The time at which the channel membership was created.
+channelMembership_createdTimestamp :: Lens.Lens' ChannelMembership (Prelude.Maybe Prelude.UTCTime)
+channelMembership_createdTimestamp = Lens.lens (\ChannelMembership' {createdTimestamp} -> createdTimestamp) (\s@ChannelMembership' {} a -> s {createdTimestamp = a} :: ChannelMembership) Prelude.. Lens.mapping Data._Time
+
+-- | The identifier of the member who invited another member.
+channelMembership_invitedBy :: Lens.Lens' ChannelMembership (Prelude.Maybe Identity)
+channelMembership_invitedBy = Lens.lens (\ChannelMembership' {invitedBy} -> invitedBy) (\s@ChannelMembership' {} a -> s {invitedBy = a} :: ChannelMembership)
+
+-- | The time at which a channel membership was last updated.
+channelMembership_lastUpdatedTimestamp :: Lens.Lens' ChannelMembership (Prelude.Maybe Prelude.UTCTime)
+channelMembership_lastUpdatedTimestamp = Lens.lens (\ChannelMembership' {lastUpdatedTimestamp} -> lastUpdatedTimestamp) (\s@ChannelMembership' {} a -> s {lastUpdatedTimestamp = a} :: ChannelMembership) Prelude.. Lens.mapping Data._Time
+
+-- | The data of the channel member.
+channelMembership_member :: Lens.Lens' ChannelMembership (Prelude.Maybe Identity)
+channelMembership_member = Lens.lens (\ChannelMembership' {member} -> member) (\s@ChannelMembership' {} a -> s {member = a} :: ChannelMembership)
+
+-- | The membership type set for the channel member.
+channelMembership_type :: Lens.Lens' ChannelMembership (Prelude.Maybe ChannelMembershipType)
+channelMembership_type = Lens.lens (\ChannelMembership' {type'} -> type') (\s@ChannelMembership' {} a -> s {type' = a} :: ChannelMembership)
+
+instance Data.FromJSON ChannelMembership where
+  parseJSON =
+    Data.withObject
+      "ChannelMembership"
+      ( \x ->
+          ChannelMembership'
+            Prelude.<$> (x Data..:? "ChannelArn")
+            Prelude.<*> (x Data..:? "CreatedTimestamp")
+            Prelude.<*> (x Data..:? "InvitedBy")
+            Prelude.<*> (x Data..:? "LastUpdatedTimestamp")
+            Prelude.<*> (x Data..:? "Member")
+            Prelude.<*> (x Data..:? "Type")
+      )
+
+instance Prelude.Hashable ChannelMembership where
+  hashWithSalt _salt ChannelMembership' {..} =
+    _salt
+      `Prelude.hashWithSalt` channelArn
+      `Prelude.hashWithSalt` createdTimestamp
+      `Prelude.hashWithSalt` invitedBy
+      `Prelude.hashWithSalt` lastUpdatedTimestamp
+      `Prelude.hashWithSalt` member
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData ChannelMembership where
+  rnf ChannelMembership' {..} =
+    Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf createdTimestamp
+      `Prelude.seq` Prelude.rnf invitedBy
+      `Prelude.seq` Prelude.rnf lastUpdatedTimestamp
+      `Prelude.seq` Prelude.rnf member
+      `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/Chime/Types/ChannelMembershipForAppInstanceUserSummary.hs b/gen/Amazonka/Chime/Types/ChannelMembershipForAppInstanceUserSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/ChannelMembershipForAppInstanceUserSummary.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.ChannelMembershipForAppInstanceUserSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.ChannelMembershipForAppInstanceUserSummary where
+
+import Amazonka.Chime.Types.AppInstanceUserMembershipSummary
+import Amazonka.Chime.Types.ChannelSummary
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Summary of the channel membership details of an @AppInstanceUser@.
+--
+-- /See:/ 'newChannelMembershipForAppInstanceUserSummary' smart constructor.
+data ChannelMembershipForAppInstanceUserSummary = ChannelMembershipForAppInstanceUserSummary'
+  { appInstanceUserMembershipSummary :: Prelude.Maybe AppInstanceUserMembershipSummary,
+    channelSummary :: Prelude.Maybe ChannelSummary
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ChannelMembershipForAppInstanceUserSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceUserMembershipSummary', 'channelMembershipForAppInstanceUserSummary_appInstanceUserMembershipSummary' - Undocumented member.
+--
+-- 'channelSummary', 'channelMembershipForAppInstanceUserSummary_channelSummary' - Undocumented member.
+newChannelMembershipForAppInstanceUserSummary ::
+  ChannelMembershipForAppInstanceUserSummary
+newChannelMembershipForAppInstanceUserSummary =
+  ChannelMembershipForAppInstanceUserSummary'
+    { appInstanceUserMembershipSummary =
+        Prelude.Nothing,
+      channelSummary =
+        Prelude.Nothing
+    }
+
+-- | Undocumented member.
+channelMembershipForAppInstanceUserSummary_appInstanceUserMembershipSummary :: Lens.Lens' ChannelMembershipForAppInstanceUserSummary (Prelude.Maybe AppInstanceUserMembershipSummary)
+channelMembershipForAppInstanceUserSummary_appInstanceUserMembershipSummary = Lens.lens (\ChannelMembershipForAppInstanceUserSummary' {appInstanceUserMembershipSummary} -> appInstanceUserMembershipSummary) (\s@ChannelMembershipForAppInstanceUserSummary' {} a -> s {appInstanceUserMembershipSummary = a} :: ChannelMembershipForAppInstanceUserSummary)
+
+-- | Undocumented member.
+channelMembershipForAppInstanceUserSummary_channelSummary :: Lens.Lens' ChannelMembershipForAppInstanceUserSummary (Prelude.Maybe ChannelSummary)
+channelMembershipForAppInstanceUserSummary_channelSummary = Lens.lens (\ChannelMembershipForAppInstanceUserSummary' {channelSummary} -> channelSummary) (\s@ChannelMembershipForAppInstanceUserSummary' {} a -> s {channelSummary = a} :: ChannelMembershipForAppInstanceUserSummary)
+
+instance
+  Data.FromJSON
+    ChannelMembershipForAppInstanceUserSummary
+  where
+  parseJSON =
+    Data.withObject
+      "ChannelMembershipForAppInstanceUserSummary"
+      ( \x ->
+          ChannelMembershipForAppInstanceUserSummary'
+            Prelude.<$> (x Data..:? "AppInstanceUserMembershipSummary")
+            Prelude.<*> (x Data..:? "ChannelSummary")
+      )
+
+instance
+  Prelude.Hashable
+    ChannelMembershipForAppInstanceUserSummary
+  where
+  hashWithSalt
+    _salt
+    ChannelMembershipForAppInstanceUserSummary' {..} =
+      _salt
+        `Prelude.hashWithSalt` appInstanceUserMembershipSummary
+        `Prelude.hashWithSalt` channelSummary
+
+instance
+  Prelude.NFData
+    ChannelMembershipForAppInstanceUserSummary
+  where
+  rnf ChannelMembershipForAppInstanceUserSummary' {..} =
+    Prelude.rnf appInstanceUserMembershipSummary
+      `Prelude.seq` Prelude.rnf channelSummary
diff --git a/gen/Amazonka/Chime/Types/ChannelMembershipSummary.hs b/gen/Amazonka/Chime/Types/ChannelMembershipSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/ChannelMembershipSummary.hs
@@ -0,0 +1,70 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.ChannelMembershipSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.ChannelMembershipSummary where
+
+import Amazonka.Chime.Types.Identity
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Summary of the details of a @ChannelMembership@.
+--
+-- /See:/ 'newChannelMembershipSummary' smart constructor.
+data ChannelMembershipSummary = ChannelMembershipSummary'
+  { -- | A member\'s summary data.
+    member :: Prelude.Maybe Identity
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ChannelMembershipSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'member', 'channelMembershipSummary_member' - A member\'s summary data.
+newChannelMembershipSummary ::
+  ChannelMembershipSummary
+newChannelMembershipSummary =
+  ChannelMembershipSummary' {member = Prelude.Nothing}
+
+-- | A member\'s summary data.
+channelMembershipSummary_member :: Lens.Lens' ChannelMembershipSummary (Prelude.Maybe Identity)
+channelMembershipSummary_member = Lens.lens (\ChannelMembershipSummary' {member} -> member) (\s@ChannelMembershipSummary' {} a -> s {member = a} :: ChannelMembershipSummary)
+
+instance Data.FromJSON ChannelMembershipSummary where
+  parseJSON =
+    Data.withObject
+      "ChannelMembershipSummary"
+      ( \x ->
+          ChannelMembershipSummary'
+            Prelude.<$> (x Data..:? "Member")
+      )
+
+instance Prelude.Hashable ChannelMembershipSummary where
+  hashWithSalt _salt ChannelMembershipSummary' {..} =
+    _salt `Prelude.hashWithSalt` member
+
+instance Prelude.NFData ChannelMembershipSummary where
+  rnf ChannelMembershipSummary' {..} =
+    Prelude.rnf member
diff --git a/gen/Amazonka/Chime/Types/ChannelMembershipType.hs b/gen/Amazonka/Chime/Types/ChannelMembershipType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/ChannelMembershipType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.ChannelMembershipType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.ChannelMembershipType
+  ( ChannelMembershipType
+      ( ..,
+        ChannelMembershipType_DEFAULT,
+        ChannelMembershipType_HIDDEN
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ChannelMembershipType = ChannelMembershipType'
+  { fromChannelMembershipType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ChannelMembershipType_DEFAULT :: ChannelMembershipType
+pattern ChannelMembershipType_DEFAULT = ChannelMembershipType' "DEFAULT"
+
+pattern ChannelMembershipType_HIDDEN :: ChannelMembershipType
+pattern ChannelMembershipType_HIDDEN = ChannelMembershipType' "HIDDEN"
+
+{-# COMPLETE
+  ChannelMembershipType_DEFAULT,
+  ChannelMembershipType_HIDDEN,
+  ChannelMembershipType'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/ChannelMessage.hs b/gen/Amazonka/Chime/Types/ChannelMessage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/ChannelMessage.hs
@@ -0,0 +1,195 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.ChannelMessage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.ChannelMessage where
+
+import Amazonka.Chime.Types.ChannelMessagePersistenceType
+import Amazonka.Chime.Types.ChannelMessageType
+import Amazonka.Chime.Types.Identity
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The details of a message in a channel.
+--
+-- /See:/ 'newChannelMessage' smart constructor.
+data ChannelMessage = ChannelMessage'
+  { -- | The ARN of the channel.
+    channelArn :: Prelude.Maybe Prelude.Text,
+    -- | The message content.
+    content :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The time at which the message was created.
+    createdTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The time at which a message was edited.
+    lastEditedTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The time at which a message was updated.
+    lastUpdatedTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The ID of a message.
+    messageId :: Prelude.Maybe Prelude.Text,
+    -- | The message metadata.
+    metadata :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The persistence setting for a channel message.
+    persistence :: Prelude.Maybe ChannelMessagePersistenceType,
+    -- | Hides the content of a message.
+    redacted :: Prelude.Maybe Prelude.Bool,
+    -- | The message sender.
+    sender :: Prelude.Maybe Identity,
+    -- | The message type.
+    type' :: Prelude.Maybe ChannelMessageType
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ChannelMessage' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channelArn', 'channelMessage_channelArn' - The ARN of the channel.
+--
+-- 'content', 'channelMessage_content' - The message content.
+--
+-- 'createdTimestamp', 'channelMessage_createdTimestamp' - The time at which the message was created.
+--
+-- 'lastEditedTimestamp', 'channelMessage_lastEditedTimestamp' - The time at which a message was edited.
+--
+-- 'lastUpdatedTimestamp', 'channelMessage_lastUpdatedTimestamp' - The time at which a message was updated.
+--
+-- 'messageId', 'channelMessage_messageId' - The ID of a message.
+--
+-- 'metadata', 'channelMessage_metadata' - The message metadata.
+--
+-- 'persistence', 'channelMessage_persistence' - The persistence setting for a channel message.
+--
+-- 'redacted', 'channelMessage_redacted' - Hides the content of a message.
+--
+-- 'sender', 'channelMessage_sender' - The message sender.
+--
+-- 'type'', 'channelMessage_type' - The message type.
+newChannelMessage ::
+  ChannelMessage
+newChannelMessage =
+  ChannelMessage'
+    { channelArn = Prelude.Nothing,
+      content = Prelude.Nothing,
+      createdTimestamp = Prelude.Nothing,
+      lastEditedTimestamp = Prelude.Nothing,
+      lastUpdatedTimestamp = Prelude.Nothing,
+      messageId = Prelude.Nothing,
+      metadata = Prelude.Nothing,
+      persistence = Prelude.Nothing,
+      redacted = Prelude.Nothing,
+      sender = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | The ARN of the channel.
+channelMessage_channelArn :: Lens.Lens' ChannelMessage (Prelude.Maybe Prelude.Text)
+channelMessage_channelArn = Lens.lens (\ChannelMessage' {channelArn} -> channelArn) (\s@ChannelMessage' {} a -> s {channelArn = a} :: ChannelMessage)
+
+-- | The message content.
+channelMessage_content :: Lens.Lens' ChannelMessage (Prelude.Maybe Prelude.Text)
+channelMessage_content = Lens.lens (\ChannelMessage' {content} -> content) (\s@ChannelMessage' {} a -> s {content = a} :: ChannelMessage) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The time at which the message was created.
+channelMessage_createdTimestamp :: Lens.Lens' ChannelMessage (Prelude.Maybe Prelude.UTCTime)
+channelMessage_createdTimestamp = Lens.lens (\ChannelMessage' {createdTimestamp} -> createdTimestamp) (\s@ChannelMessage' {} a -> s {createdTimestamp = a} :: ChannelMessage) Prelude.. Lens.mapping Data._Time
+
+-- | The time at which a message was edited.
+channelMessage_lastEditedTimestamp :: Lens.Lens' ChannelMessage (Prelude.Maybe Prelude.UTCTime)
+channelMessage_lastEditedTimestamp = Lens.lens (\ChannelMessage' {lastEditedTimestamp} -> lastEditedTimestamp) (\s@ChannelMessage' {} a -> s {lastEditedTimestamp = a} :: ChannelMessage) Prelude.. Lens.mapping Data._Time
+
+-- | The time at which a message was updated.
+channelMessage_lastUpdatedTimestamp :: Lens.Lens' ChannelMessage (Prelude.Maybe Prelude.UTCTime)
+channelMessage_lastUpdatedTimestamp = Lens.lens (\ChannelMessage' {lastUpdatedTimestamp} -> lastUpdatedTimestamp) (\s@ChannelMessage' {} a -> s {lastUpdatedTimestamp = a} :: ChannelMessage) Prelude.. Lens.mapping Data._Time
+
+-- | The ID of a message.
+channelMessage_messageId :: Lens.Lens' ChannelMessage (Prelude.Maybe Prelude.Text)
+channelMessage_messageId = Lens.lens (\ChannelMessage' {messageId} -> messageId) (\s@ChannelMessage' {} a -> s {messageId = a} :: ChannelMessage)
+
+-- | The message metadata.
+channelMessage_metadata :: Lens.Lens' ChannelMessage (Prelude.Maybe Prelude.Text)
+channelMessage_metadata = Lens.lens (\ChannelMessage' {metadata} -> metadata) (\s@ChannelMessage' {} a -> s {metadata = a} :: ChannelMessage) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The persistence setting for a channel message.
+channelMessage_persistence :: Lens.Lens' ChannelMessage (Prelude.Maybe ChannelMessagePersistenceType)
+channelMessage_persistence = Lens.lens (\ChannelMessage' {persistence} -> persistence) (\s@ChannelMessage' {} a -> s {persistence = a} :: ChannelMessage)
+
+-- | Hides the content of a message.
+channelMessage_redacted :: Lens.Lens' ChannelMessage (Prelude.Maybe Prelude.Bool)
+channelMessage_redacted = Lens.lens (\ChannelMessage' {redacted} -> redacted) (\s@ChannelMessage' {} a -> s {redacted = a} :: ChannelMessage)
+
+-- | The message sender.
+channelMessage_sender :: Lens.Lens' ChannelMessage (Prelude.Maybe Identity)
+channelMessage_sender = Lens.lens (\ChannelMessage' {sender} -> sender) (\s@ChannelMessage' {} a -> s {sender = a} :: ChannelMessage)
+
+-- | The message type.
+channelMessage_type :: Lens.Lens' ChannelMessage (Prelude.Maybe ChannelMessageType)
+channelMessage_type = Lens.lens (\ChannelMessage' {type'} -> type') (\s@ChannelMessage' {} a -> s {type' = a} :: ChannelMessage)
+
+instance Data.FromJSON ChannelMessage where
+  parseJSON =
+    Data.withObject
+      "ChannelMessage"
+      ( \x ->
+          ChannelMessage'
+            Prelude.<$> (x Data..:? "ChannelArn")
+            Prelude.<*> (x Data..:? "Content")
+            Prelude.<*> (x Data..:? "CreatedTimestamp")
+            Prelude.<*> (x Data..:? "LastEditedTimestamp")
+            Prelude.<*> (x Data..:? "LastUpdatedTimestamp")
+            Prelude.<*> (x Data..:? "MessageId")
+            Prelude.<*> (x Data..:? "Metadata")
+            Prelude.<*> (x Data..:? "Persistence")
+            Prelude.<*> (x Data..:? "Redacted")
+            Prelude.<*> (x Data..:? "Sender")
+            Prelude.<*> (x Data..:? "Type")
+      )
+
+instance Prelude.Hashable ChannelMessage where
+  hashWithSalt _salt ChannelMessage' {..} =
+    _salt
+      `Prelude.hashWithSalt` channelArn
+      `Prelude.hashWithSalt` content
+      `Prelude.hashWithSalt` createdTimestamp
+      `Prelude.hashWithSalt` lastEditedTimestamp
+      `Prelude.hashWithSalt` lastUpdatedTimestamp
+      `Prelude.hashWithSalt` messageId
+      `Prelude.hashWithSalt` metadata
+      `Prelude.hashWithSalt` persistence
+      `Prelude.hashWithSalt` redacted
+      `Prelude.hashWithSalt` sender
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData ChannelMessage where
+  rnf ChannelMessage' {..} =
+    Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf content
+      `Prelude.seq` Prelude.rnf createdTimestamp
+      `Prelude.seq` Prelude.rnf lastEditedTimestamp
+      `Prelude.seq` Prelude.rnf lastUpdatedTimestamp
+      `Prelude.seq` Prelude.rnf messageId
+      `Prelude.seq` Prelude.rnf metadata
+      `Prelude.seq` Prelude.rnf persistence
+      `Prelude.seq` Prelude.rnf redacted
+      `Prelude.seq` Prelude.rnf sender
+      `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/Chime/Types/ChannelMessagePersistenceType.hs b/gen/Amazonka/Chime/Types/ChannelMessagePersistenceType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/ChannelMessagePersistenceType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.ChannelMessagePersistenceType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.ChannelMessagePersistenceType
+  ( ChannelMessagePersistenceType
+      ( ..,
+        ChannelMessagePersistenceType_NON_PERSISTENT,
+        ChannelMessagePersistenceType_PERSISTENT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ChannelMessagePersistenceType = ChannelMessagePersistenceType'
+  { fromChannelMessagePersistenceType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ChannelMessagePersistenceType_NON_PERSISTENT :: ChannelMessagePersistenceType
+pattern ChannelMessagePersistenceType_NON_PERSISTENT = ChannelMessagePersistenceType' "NON_PERSISTENT"
+
+pattern ChannelMessagePersistenceType_PERSISTENT :: ChannelMessagePersistenceType
+pattern ChannelMessagePersistenceType_PERSISTENT = ChannelMessagePersistenceType' "PERSISTENT"
+
+{-# COMPLETE
+  ChannelMessagePersistenceType_NON_PERSISTENT,
+  ChannelMessagePersistenceType_PERSISTENT,
+  ChannelMessagePersistenceType'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/ChannelMessageSummary.hs b/gen/Amazonka/Chime/Types/ChannelMessageSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/ChannelMessageSummary.hs
@@ -0,0 +1,170 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.ChannelMessageSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.ChannelMessageSummary where
+
+import Amazonka.Chime.Types.ChannelMessageType
+import Amazonka.Chime.Types.Identity
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Summary of the messages in a @Channel@.
+--
+-- /See:/ 'newChannelMessageSummary' smart constructor.
+data ChannelMessageSummary = ChannelMessageSummary'
+  { -- | The content of the message.
+    content :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The time at which the message summary was created.
+    createdTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The time at which a message was last edited.
+    lastEditedTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The time at which a message was last updated.
+    lastUpdatedTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The ID of the message.
+    messageId :: Prelude.Maybe Prelude.Text,
+    -- | The metadata of the message.
+    metadata :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | Indicates whether a message was redacted.
+    redacted :: Prelude.Maybe Prelude.Bool,
+    -- | The message sender.
+    sender :: Prelude.Maybe Identity,
+    -- | The type of message.
+    type' :: Prelude.Maybe ChannelMessageType
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ChannelMessageSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'content', 'channelMessageSummary_content' - The content of the message.
+--
+-- 'createdTimestamp', 'channelMessageSummary_createdTimestamp' - The time at which the message summary was created.
+--
+-- 'lastEditedTimestamp', 'channelMessageSummary_lastEditedTimestamp' - The time at which a message was last edited.
+--
+-- 'lastUpdatedTimestamp', 'channelMessageSummary_lastUpdatedTimestamp' - The time at which a message was last updated.
+--
+-- 'messageId', 'channelMessageSummary_messageId' - The ID of the message.
+--
+-- 'metadata', 'channelMessageSummary_metadata' - The metadata of the message.
+--
+-- 'redacted', 'channelMessageSummary_redacted' - Indicates whether a message was redacted.
+--
+-- 'sender', 'channelMessageSummary_sender' - The message sender.
+--
+-- 'type'', 'channelMessageSummary_type' - The type of message.
+newChannelMessageSummary ::
+  ChannelMessageSummary
+newChannelMessageSummary =
+  ChannelMessageSummary'
+    { content = Prelude.Nothing,
+      createdTimestamp = Prelude.Nothing,
+      lastEditedTimestamp = Prelude.Nothing,
+      lastUpdatedTimestamp = Prelude.Nothing,
+      messageId = Prelude.Nothing,
+      metadata = Prelude.Nothing,
+      redacted = Prelude.Nothing,
+      sender = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | The content of the message.
+channelMessageSummary_content :: Lens.Lens' ChannelMessageSummary (Prelude.Maybe Prelude.Text)
+channelMessageSummary_content = Lens.lens (\ChannelMessageSummary' {content} -> content) (\s@ChannelMessageSummary' {} a -> s {content = a} :: ChannelMessageSummary) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The time at which the message summary was created.
+channelMessageSummary_createdTimestamp :: Lens.Lens' ChannelMessageSummary (Prelude.Maybe Prelude.UTCTime)
+channelMessageSummary_createdTimestamp = Lens.lens (\ChannelMessageSummary' {createdTimestamp} -> createdTimestamp) (\s@ChannelMessageSummary' {} a -> s {createdTimestamp = a} :: ChannelMessageSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The time at which a message was last edited.
+channelMessageSummary_lastEditedTimestamp :: Lens.Lens' ChannelMessageSummary (Prelude.Maybe Prelude.UTCTime)
+channelMessageSummary_lastEditedTimestamp = Lens.lens (\ChannelMessageSummary' {lastEditedTimestamp} -> lastEditedTimestamp) (\s@ChannelMessageSummary' {} a -> s {lastEditedTimestamp = a} :: ChannelMessageSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The time at which a message was last updated.
+channelMessageSummary_lastUpdatedTimestamp :: Lens.Lens' ChannelMessageSummary (Prelude.Maybe Prelude.UTCTime)
+channelMessageSummary_lastUpdatedTimestamp = Lens.lens (\ChannelMessageSummary' {lastUpdatedTimestamp} -> lastUpdatedTimestamp) (\s@ChannelMessageSummary' {} a -> s {lastUpdatedTimestamp = a} :: ChannelMessageSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The ID of the message.
+channelMessageSummary_messageId :: Lens.Lens' ChannelMessageSummary (Prelude.Maybe Prelude.Text)
+channelMessageSummary_messageId = Lens.lens (\ChannelMessageSummary' {messageId} -> messageId) (\s@ChannelMessageSummary' {} a -> s {messageId = a} :: ChannelMessageSummary)
+
+-- | The metadata of the message.
+channelMessageSummary_metadata :: Lens.Lens' ChannelMessageSummary (Prelude.Maybe Prelude.Text)
+channelMessageSummary_metadata = Lens.lens (\ChannelMessageSummary' {metadata} -> metadata) (\s@ChannelMessageSummary' {} a -> s {metadata = a} :: ChannelMessageSummary) Prelude.. Lens.mapping Data._Sensitive
+
+-- | Indicates whether a message was redacted.
+channelMessageSummary_redacted :: Lens.Lens' ChannelMessageSummary (Prelude.Maybe Prelude.Bool)
+channelMessageSummary_redacted = Lens.lens (\ChannelMessageSummary' {redacted} -> redacted) (\s@ChannelMessageSummary' {} a -> s {redacted = a} :: ChannelMessageSummary)
+
+-- | The message sender.
+channelMessageSummary_sender :: Lens.Lens' ChannelMessageSummary (Prelude.Maybe Identity)
+channelMessageSummary_sender = Lens.lens (\ChannelMessageSummary' {sender} -> sender) (\s@ChannelMessageSummary' {} a -> s {sender = a} :: ChannelMessageSummary)
+
+-- | The type of message.
+channelMessageSummary_type :: Lens.Lens' ChannelMessageSummary (Prelude.Maybe ChannelMessageType)
+channelMessageSummary_type = Lens.lens (\ChannelMessageSummary' {type'} -> type') (\s@ChannelMessageSummary' {} a -> s {type' = a} :: ChannelMessageSummary)
+
+instance Data.FromJSON ChannelMessageSummary where
+  parseJSON =
+    Data.withObject
+      "ChannelMessageSummary"
+      ( \x ->
+          ChannelMessageSummary'
+            Prelude.<$> (x Data..:? "Content")
+            Prelude.<*> (x Data..:? "CreatedTimestamp")
+            Prelude.<*> (x Data..:? "LastEditedTimestamp")
+            Prelude.<*> (x Data..:? "LastUpdatedTimestamp")
+            Prelude.<*> (x Data..:? "MessageId")
+            Prelude.<*> (x Data..:? "Metadata")
+            Prelude.<*> (x Data..:? "Redacted")
+            Prelude.<*> (x Data..:? "Sender")
+            Prelude.<*> (x Data..:? "Type")
+      )
+
+instance Prelude.Hashable ChannelMessageSummary where
+  hashWithSalt _salt ChannelMessageSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` content
+      `Prelude.hashWithSalt` createdTimestamp
+      `Prelude.hashWithSalt` lastEditedTimestamp
+      `Prelude.hashWithSalt` lastUpdatedTimestamp
+      `Prelude.hashWithSalt` messageId
+      `Prelude.hashWithSalt` metadata
+      `Prelude.hashWithSalt` redacted
+      `Prelude.hashWithSalt` sender
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData ChannelMessageSummary where
+  rnf ChannelMessageSummary' {..} =
+    Prelude.rnf content
+      `Prelude.seq` Prelude.rnf createdTimestamp
+      `Prelude.seq` Prelude.rnf lastEditedTimestamp
+      `Prelude.seq` Prelude.rnf lastUpdatedTimestamp
+      `Prelude.seq` Prelude.rnf messageId
+      `Prelude.seq` Prelude.rnf metadata
+      `Prelude.seq` Prelude.rnf redacted
+      `Prelude.seq` Prelude.rnf sender
+      `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/Chime/Types/ChannelMessageType.hs b/gen/Amazonka/Chime/Types/ChannelMessageType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/ChannelMessageType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.ChannelMessageType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.ChannelMessageType
+  ( ChannelMessageType
+      ( ..,
+        ChannelMessageType_CONTROL,
+        ChannelMessageType_STANDARD
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ChannelMessageType = ChannelMessageType'
+  { fromChannelMessageType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ChannelMessageType_CONTROL :: ChannelMessageType
+pattern ChannelMessageType_CONTROL = ChannelMessageType' "CONTROL"
+
+pattern ChannelMessageType_STANDARD :: ChannelMessageType
+pattern ChannelMessageType_STANDARD = ChannelMessageType' "STANDARD"
+
+{-# COMPLETE
+  ChannelMessageType_CONTROL,
+  ChannelMessageType_STANDARD,
+  ChannelMessageType'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/ChannelMode.hs b/gen/Amazonka/Chime/Types/ChannelMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/ChannelMode.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.ChannelMode
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.ChannelMode
+  ( ChannelMode
+      ( ..,
+        ChannelMode_RESTRICTED,
+        ChannelMode_UNRESTRICTED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ChannelMode = ChannelMode'
+  { fromChannelMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ChannelMode_RESTRICTED :: ChannelMode
+pattern ChannelMode_RESTRICTED = ChannelMode' "RESTRICTED"
+
+pattern ChannelMode_UNRESTRICTED :: ChannelMode
+pattern ChannelMode_UNRESTRICTED = ChannelMode' "UNRESTRICTED"
+
+{-# COMPLETE
+  ChannelMode_RESTRICTED,
+  ChannelMode_UNRESTRICTED,
+  ChannelMode'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/ChannelModeratedByAppInstanceUserSummary.hs b/gen/Amazonka/Chime/Types/ChannelModeratedByAppInstanceUserSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/ChannelModeratedByAppInstanceUserSummary.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.ChannelModeratedByAppInstanceUserSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.ChannelModeratedByAppInstanceUserSummary where
+
+import Amazonka.Chime.Types.ChannelSummary
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Summary of the details of a moderated channel.
+--
+-- /See:/ 'newChannelModeratedByAppInstanceUserSummary' smart constructor.
+data ChannelModeratedByAppInstanceUserSummary = ChannelModeratedByAppInstanceUserSummary'
+  { -- | Summary of the details of a @Channel@.
+    channelSummary :: Prelude.Maybe ChannelSummary
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ChannelModeratedByAppInstanceUserSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channelSummary', 'channelModeratedByAppInstanceUserSummary_channelSummary' - Summary of the details of a @Channel@.
+newChannelModeratedByAppInstanceUserSummary ::
+  ChannelModeratedByAppInstanceUserSummary
+newChannelModeratedByAppInstanceUserSummary =
+  ChannelModeratedByAppInstanceUserSummary'
+    { channelSummary =
+        Prelude.Nothing
+    }
+
+-- | Summary of the details of a @Channel@.
+channelModeratedByAppInstanceUserSummary_channelSummary :: Lens.Lens' ChannelModeratedByAppInstanceUserSummary (Prelude.Maybe ChannelSummary)
+channelModeratedByAppInstanceUserSummary_channelSummary = Lens.lens (\ChannelModeratedByAppInstanceUserSummary' {channelSummary} -> channelSummary) (\s@ChannelModeratedByAppInstanceUserSummary' {} a -> s {channelSummary = a} :: ChannelModeratedByAppInstanceUserSummary)
+
+instance
+  Data.FromJSON
+    ChannelModeratedByAppInstanceUserSummary
+  where
+  parseJSON =
+    Data.withObject
+      "ChannelModeratedByAppInstanceUserSummary"
+      ( \x ->
+          ChannelModeratedByAppInstanceUserSummary'
+            Prelude.<$> (x Data..:? "ChannelSummary")
+      )
+
+instance
+  Prelude.Hashable
+    ChannelModeratedByAppInstanceUserSummary
+  where
+  hashWithSalt
+    _salt
+    ChannelModeratedByAppInstanceUserSummary' {..} =
+      _salt `Prelude.hashWithSalt` channelSummary
+
+instance
+  Prelude.NFData
+    ChannelModeratedByAppInstanceUserSummary
+  where
+  rnf ChannelModeratedByAppInstanceUserSummary' {..} =
+    Prelude.rnf channelSummary
diff --git a/gen/Amazonka/Chime/Types/ChannelModerator.hs b/gen/Amazonka/Chime/Types/ChannelModerator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/ChannelModerator.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.ChannelModerator
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.ChannelModerator where
+
+import Amazonka.Chime.Types.Identity
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The details of a channel moderator.
+--
+-- /See:/ 'newChannelModerator' smart constructor.
+data ChannelModerator = ChannelModerator'
+  { -- | The ARN of the moderator\'s channel.
+    channelArn :: Prelude.Maybe Prelude.Text,
+    -- | The @AppInstanceUser@ who created the moderator.
+    createdBy :: Prelude.Maybe Identity,
+    -- | The time at which the moderator was created.
+    createdTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The moderator\'s data.
+    moderator :: Prelude.Maybe Identity
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ChannelModerator' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channelArn', 'channelModerator_channelArn' - The ARN of the moderator\'s channel.
+--
+-- 'createdBy', 'channelModerator_createdBy' - The @AppInstanceUser@ who created the moderator.
+--
+-- 'createdTimestamp', 'channelModerator_createdTimestamp' - The time at which the moderator was created.
+--
+-- 'moderator', 'channelModerator_moderator' - The moderator\'s data.
+newChannelModerator ::
+  ChannelModerator
+newChannelModerator =
+  ChannelModerator'
+    { channelArn = Prelude.Nothing,
+      createdBy = Prelude.Nothing,
+      createdTimestamp = Prelude.Nothing,
+      moderator = Prelude.Nothing
+    }
+
+-- | The ARN of the moderator\'s channel.
+channelModerator_channelArn :: Lens.Lens' ChannelModerator (Prelude.Maybe Prelude.Text)
+channelModerator_channelArn = Lens.lens (\ChannelModerator' {channelArn} -> channelArn) (\s@ChannelModerator' {} a -> s {channelArn = a} :: ChannelModerator)
+
+-- | The @AppInstanceUser@ who created the moderator.
+channelModerator_createdBy :: Lens.Lens' ChannelModerator (Prelude.Maybe Identity)
+channelModerator_createdBy = Lens.lens (\ChannelModerator' {createdBy} -> createdBy) (\s@ChannelModerator' {} a -> s {createdBy = a} :: ChannelModerator)
+
+-- | The time at which the moderator was created.
+channelModerator_createdTimestamp :: Lens.Lens' ChannelModerator (Prelude.Maybe Prelude.UTCTime)
+channelModerator_createdTimestamp = Lens.lens (\ChannelModerator' {createdTimestamp} -> createdTimestamp) (\s@ChannelModerator' {} a -> s {createdTimestamp = a} :: ChannelModerator) Prelude.. Lens.mapping Data._Time
+
+-- | The moderator\'s data.
+channelModerator_moderator :: Lens.Lens' ChannelModerator (Prelude.Maybe Identity)
+channelModerator_moderator = Lens.lens (\ChannelModerator' {moderator} -> moderator) (\s@ChannelModerator' {} a -> s {moderator = a} :: ChannelModerator)
+
+instance Data.FromJSON ChannelModerator where
+  parseJSON =
+    Data.withObject
+      "ChannelModerator"
+      ( \x ->
+          ChannelModerator'
+            Prelude.<$> (x Data..:? "ChannelArn")
+            Prelude.<*> (x Data..:? "CreatedBy")
+            Prelude.<*> (x Data..:? "CreatedTimestamp")
+            Prelude.<*> (x Data..:? "Moderator")
+      )
+
+instance Prelude.Hashable ChannelModerator where
+  hashWithSalt _salt ChannelModerator' {..} =
+    _salt
+      `Prelude.hashWithSalt` channelArn
+      `Prelude.hashWithSalt` createdBy
+      `Prelude.hashWithSalt` createdTimestamp
+      `Prelude.hashWithSalt` moderator
+
+instance Prelude.NFData ChannelModerator where
+  rnf ChannelModerator' {..} =
+    Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf createdTimestamp
+      `Prelude.seq` Prelude.rnf moderator
diff --git a/gen/Amazonka/Chime/Types/ChannelModeratorSummary.hs b/gen/Amazonka/Chime/Types/ChannelModeratorSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/ChannelModeratorSummary.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.ChannelModeratorSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.ChannelModeratorSummary where
+
+import Amazonka.Chime.Types.Identity
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Summary of the details of a @ChannelModerator@.
+--
+-- /See:/ 'newChannelModeratorSummary' smart constructor.
+data ChannelModeratorSummary = ChannelModeratorSummary'
+  { -- | The data for a moderator.
+    moderator :: Prelude.Maybe Identity
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ChannelModeratorSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'moderator', 'channelModeratorSummary_moderator' - The data for a moderator.
+newChannelModeratorSummary ::
+  ChannelModeratorSummary
+newChannelModeratorSummary =
+  ChannelModeratorSummary'
+    { moderator =
+        Prelude.Nothing
+    }
+
+-- | The data for a moderator.
+channelModeratorSummary_moderator :: Lens.Lens' ChannelModeratorSummary (Prelude.Maybe Identity)
+channelModeratorSummary_moderator = Lens.lens (\ChannelModeratorSummary' {moderator} -> moderator) (\s@ChannelModeratorSummary' {} a -> s {moderator = a} :: ChannelModeratorSummary)
+
+instance Data.FromJSON ChannelModeratorSummary where
+  parseJSON =
+    Data.withObject
+      "ChannelModeratorSummary"
+      ( \x ->
+          ChannelModeratorSummary'
+            Prelude.<$> (x Data..:? "Moderator")
+      )
+
+instance Prelude.Hashable ChannelModeratorSummary where
+  hashWithSalt _salt ChannelModeratorSummary' {..} =
+    _salt `Prelude.hashWithSalt` moderator
+
+instance Prelude.NFData ChannelModeratorSummary where
+  rnf ChannelModeratorSummary' {..} =
+    Prelude.rnf moderator
diff --git a/gen/Amazonka/Chime/Types/ChannelPrivacy.hs b/gen/Amazonka/Chime/Types/ChannelPrivacy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/ChannelPrivacy.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.ChannelPrivacy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.ChannelPrivacy
+  ( ChannelPrivacy
+      ( ..,
+        ChannelPrivacy_PRIVATE,
+        ChannelPrivacy_PUBLIC
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ChannelPrivacy = ChannelPrivacy'
+  { fromChannelPrivacy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ChannelPrivacy_PRIVATE :: ChannelPrivacy
+pattern ChannelPrivacy_PRIVATE = ChannelPrivacy' "PRIVATE"
+
+pattern ChannelPrivacy_PUBLIC :: ChannelPrivacy
+pattern ChannelPrivacy_PUBLIC = ChannelPrivacy' "PUBLIC"
+
+{-# COMPLETE
+  ChannelPrivacy_PRIVATE,
+  ChannelPrivacy_PUBLIC,
+  ChannelPrivacy'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/ChannelRetentionSettings.hs b/gen/Amazonka/Chime/Types/ChannelRetentionSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/ChannelRetentionSettings.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.ChannelRetentionSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.ChannelRetentionSettings where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The details of the retention settings for a channel.
+--
+-- /See:/ 'newChannelRetentionSettings' smart constructor.
+data ChannelRetentionSettings = ChannelRetentionSettings'
+  { -- | The time in days to retain the messages in a channel.
+    retentionDays :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ChannelRetentionSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'retentionDays', 'channelRetentionSettings_retentionDays' - The time in days to retain the messages in a channel.
+newChannelRetentionSettings ::
+  ChannelRetentionSettings
+newChannelRetentionSettings =
+  ChannelRetentionSettings'
+    { retentionDays =
+        Prelude.Nothing
+    }
+
+-- | The time in days to retain the messages in a channel.
+channelRetentionSettings_retentionDays :: Lens.Lens' ChannelRetentionSettings (Prelude.Maybe Prelude.Natural)
+channelRetentionSettings_retentionDays = Lens.lens (\ChannelRetentionSettings' {retentionDays} -> retentionDays) (\s@ChannelRetentionSettings' {} a -> s {retentionDays = a} :: ChannelRetentionSettings)
+
+instance Data.FromJSON ChannelRetentionSettings where
+  parseJSON =
+    Data.withObject
+      "ChannelRetentionSettings"
+      ( \x ->
+          ChannelRetentionSettings'
+            Prelude.<$> (x Data..:? "RetentionDays")
+      )
+
+instance Prelude.Hashable ChannelRetentionSettings where
+  hashWithSalt _salt ChannelRetentionSettings' {..} =
+    _salt `Prelude.hashWithSalt` retentionDays
+
+instance Prelude.NFData ChannelRetentionSettings where
+  rnf ChannelRetentionSettings' {..} =
+    Prelude.rnf retentionDays
+
+instance Data.ToJSON ChannelRetentionSettings where
+  toJSON ChannelRetentionSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("RetentionDays" Data..=)
+              Prelude.<$> retentionDays
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/ChannelSummary.hs b/gen/Amazonka/Chime/Types/ChannelSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/ChannelSummary.hs
@@ -0,0 +1,134 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.ChannelSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.ChannelSummary where
+
+import Amazonka.Chime.Types.ChannelMode
+import Amazonka.Chime.Types.ChannelPrivacy
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Summary of the details of a @Channel@.
+--
+-- /See:/ 'newChannelSummary' smart constructor.
+data ChannelSummary = ChannelSummary'
+  { -- | The ARN of the channel.
+    channelArn :: Prelude.Maybe Prelude.Text,
+    -- | The time at which the last message in a channel was sent.
+    lastMessageTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The metadata of the channel.
+    metadata :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The mode of the channel.
+    mode :: Prelude.Maybe ChannelMode,
+    -- | The name of the channel.
+    name :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The privacy setting of the channel.
+    privacy :: Prelude.Maybe ChannelPrivacy
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ChannelSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channelArn', 'channelSummary_channelArn' - The ARN of the channel.
+--
+-- 'lastMessageTimestamp', 'channelSummary_lastMessageTimestamp' - The time at which the last message in a channel was sent.
+--
+-- 'metadata', 'channelSummary_metadata' - The metadata of the channel.
+--
+-- 'mode', 'channelSummary_mode' - The mode of the channel.
+--
+-- 'name', 'channelSummary_name' - The name of the channel.
+--
+-- 'privacy', 'channelSummary_privacy' - The privacy setting of the channel.
+newChannelSummary ::
+  ChannelSummary
+newChannelSummary =
+  ChannelSummary'
+    { channelArn = Prelude.Nothing,
+      lastMessageTimestamp = Prelude.Nothing,
+      metadata = Prelude.Nothing,
+      mode = Prelude.Nothing,
+      name = Prelude.Nothing,
+      privacy = Prelude.Nothing
+    }
+
+-- | The ARN of the channel.
+channelSummary_channelArn :: Lens.Lens' ChannelSummary (Prelude.Maybe Prelude.Text)
+channelSummary_channelArn = Lens.lens (\ChannelSummary' {channelArn} -> channelArn) (\s@ChannelSummary' {} a -> s {channelArn = a} :: ChannelSummary)
+
+-- | The time at which the last message in a channel was sent.
+channelSummary_lastMessageTimestamp :: Lens.Lens' ChannelSummary (Prelude.Maybe Prelude.UTCTime)
+channelSummary_lastMessageTimestamp = Lens.lens (\ChannelSummary' {lastMessageTimestamp} -> lastMessageTimestamp) (\s@ChannelSummary' {} a -> s {lastMessageTimestamp = a} :: ChannelSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The metadata of the channel.
+channelSummary_metadata :: Lens.Lens' ChannelSummary (Prelude.Maybe Prelude.Text)
+channelSummary_metadata = Lens.lens (\ChannelSummary' {metadata} -> metadata) (\s@ChannelSummary' {} a -> s {metadata = a} :: ChannelSummary) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The mode of the channel.
+channelSummary_mode :: Lens.Lens' ChannelSummary (Prelude.Maybe ChannelMode)
+channelSummary_mode = Lens.lens (\ChannelSummary' {mode} -> mode) (\s@ChannelSummary' {} a -> s {mode = a} :: ChannelSummary)
+
+-- | The name of the channel.
+channelSummary_name :: Lens.Lens' ChannelSummary (Prelude.Maybe Prelude.Text)
+channelSummary_name = Lens.lens (\ChannelSummary' {name} -> name) (\s@ChannelSummary' {} a -> s {name = a} :: ChannelSummary) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The privacy setting of the channel.
+channelSummary_privacy :: Lens.Lens' ChannelSummary (Prelude.Maybe ChannelPrivacy)
+channelSummary_privacy = Lens.lens (\ChannelSummary' {privacy} -> privacy) (\s@ChannelSummary' {} a -> s {privacy = a} :: ChannelSummary)
+
+instance Data.FromJSON ChannelSummary where
+  parseJSON =
+    Data.withObject
+      "ChannelSummary"
+      ( \x ->
+          ChannelSummary'
+            Prelude.<$> (x Data..:? "ChannelArn")
+            Prelude.<*> (x Data..:? "LastMessageTimestamp")
+            Prelude.<*> (x Data..:? "Metadata")
+            Prelude.<*> (x Data..:? "Mode")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "Privacy")
+      )
+
+instance Prelude.Hashable ChannelSummary where
+  hashWithSalt _salt ChannelSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` channelArn
+      `Prelude.hashWithSalt` lastMessageTimestamp
+      `Prelude.hashWithSalt` metadata
+      `Prelude.hashWithSalt` mode
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` privacy
+
+instance Prelude.NFData ChannelSummary where
+  rnf ChannelSummary' {..} =
+    Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf lastMessageTimestamp
+      `Prelude.seq` Prelude.rnf metadata
+      `Prelude.seq` Prelude.rnf mode
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf privacy
diff --git a/gen/Amazonka/Chime/Types/ChimeSdkMeetingConfiguration.hs b/gen/Amazonka/Chime/Types/ChimeSdkMeetingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/ChimeSdkMeetingConfiguration.hs
@@ -0,0 +1,102 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.ChimeSdkMeetingConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.ChimeSdkMeetingConfiguration where
+
+import Amazonka.Chime.Types.ArtifactsConfiguration
+import Amazonka.Chime.Types.SourceConfiguration
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration object of the Amazon Chime SDK meeting for a specified
+-- media capture pipeline. @SourceType@ must be @ChimeSdkMeeting@.
+--
+-- /See:/ 'newChimeSdkMeetingConfiguration' smart constructor.
+data ChimeSdkMeetingConfiguration = ChimeSdkMeetingConfiguration'
+  { -- | The configuration for the artifacts in an Amazon Chime SDK meeting.
+    artifactsConfiguration :: Prelude.Maybe ArtifactsConfiguration,
+    -- | The source configuration for a specified media capture pipline.
+    sourceConfiguration :: Prelude.Maybe SourceConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ChimeSdkMeetingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'artifactsConfiguration', 'chimeSdkMeetingConfiguration_artifactsConfiguration' - The configuration for the artifacts in an Amazon Chime SDK meeting.
+--
+-- 'sourceConfiguration', 'chimeSdkMeetingConfiguration_sourceConfiguration' - The source configuration for a specified media capture pipline.
+newChimeSdkMeetingConfiguration ::
+  ChimeSdkMeetingConfiguration
+newChimeSdkMeetingConfiguration =
+  ChimeSdkMeetingConfiguration'
+    { artifactsConfiguration =
+        Prelude.Nothing,
+      sourceConfiguration = Prelude.Nothing
+    }
+
+-- | The configuration for the artifacts in an Amazon Chime SDK meeting.
+chimeSdkMeetingConfiguration_artifactsConfiguration :: Lens.Lens' ChimeSdkMeetingConfiguration (Prelude.Maybe ArtifactsConfiguration)
+chimeSdkMeetingConfiguration_artifactsConfiguration = Lens.lens (\ChimeSdkMeetingConfiguration' {artifactsConfiguration} -> artifactsConfiguration) (\s@ChimeSdkMeetingConfiguration' {} a -> s {artifactsConfiguration = a} :: ChimeSdkMeetingConfiguration)
+
+-- | The source configuration for a specified media capture pipline.
+chimeSdkMeetingConfiguration_sourceConfiguration :: Lens.Lens' ChimeSdkMeetingConfiguration (Prelude.Maybe SourceConfiguration)
+chimeSdkMeetingConfiguration_sourceConfiguration = Lens.lens (\ChimeSdkMeetingConfiguration' {sourceConfiguration} -> sourceConfiguration) (\s@ChimeSdkMeetingConfiguration' {} a -> s {sourceConfiguration = a} :: ChimeSdkMeetingConfiguration)
+
+instance Data.FromJSON ChimeSdkMeetingConfiguration where
+  parseJSON =
+    Data.withObject
+      "ChimeSdkMeetingConfiguration"
+      ( \x ->
+          ChimeSdkMeetingConfiguration'
+            Prelude.<$> (x Data..:? "ArtifactsConfiguration")
+            Prelude.<*> (x Data..:? "SourceConfiguration")
+      )
+
+instance
+  Prelude.Hashable
+    ChimeSdkMeetingConfiguration
+  where
+  hashWithSalt _salt ChimeSdkMeetingConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` artifactsConfiguration
+      `Prelude.hashWithSalt` sourceConfiguration
+
+instance Prelude.NFData ChimeSdkMeetingConfiguration where
+  rnf ChimeSdkMeetingConfiguration' {..} =
+    Prelude.rnf artifactsConfiguration
+      `Prelude.seq` Prelude.rnf sourceConfiguration
+
+instance Data.ToJSON ChimeSdkMeetingConfiguration where
+  toJSON ChimeSdkMeetingConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ArtifactsConfiguration" Data..=)
+              Prelude.<$> artifactsConfiguration,
+            ("SourceConfiguration" Data..=)
+              Prelude.<$> sourceConfiguration
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/ContentArtifactsConfiguration.hs b/gen/Amazonka/Chime/Types/ContentArtifactsConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/ContentArtifactsConfiguration.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.ContentArtifactsConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.ContentArtifactsConfiguration where
+
+import Amazonka.Chime.Types.ArtifactsState
+import Amazonka.Chime.Types.ContentMuxType
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The content artifact object.
+--
+-- /See:/ 'newContentArtifactsConfiguration' smart constructor.
+data ContentArtifactsConfiguration = ContentArtifactsConfiguration'
+  { -- | The MUX type of the artifact configuration.
+    muxType :: Prelude.Maybe ContentMuxType,
+    -- | Indicates whether the content artifact is enabled or disabled.
+    state :: ArtifactsState
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ContentArtifactsConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'muxType', 'contentArtifactsConfiguration_muxType' - The MUX type of the artifact configuration.
+--
+-- 'state', 'contentArtifactsConfiguration_state' - Indicates whether the content artifact is enabled or disabled.
+newContentArtifactsConfiguration ::
+  -- | 'state'
+  ArtifactsState ->
+  ContentArtifactsConfiguration
+newContentArtifactsConfiguration pState_ =
+  ContentArtifactsConfiguration'
+    { muxType =
+        Prelude.Nothing,
+      state = pState_
+    }
+
+-- | The MUX type of the artifact configuration.
+contentArtifactsConfiguration_muxType :: Lens.Lens' ContentArtifactsConfiguration (Prelude.Maybe ContentMuxType)
+contentArtifactsConfiguration_muxType = Lens.lens (\ContentArtifactsConfiguration' {muxType} -> muxType) (\s@ContentArtifactsConfiguration' {} a -> s {muxType = a} :: ContentArtifactsConfiguration)
+
+-- | Indicates whether the content artifact is enabled or disabled.
+contentArtifactsConfiguration_state :: Lens.Lens' ContentArtifactsConfiguration ArtifactsState
+contentArtifactsConfiguration_state = Lens.lens (\ContentArtifactsConfiguration' {state} -> state) (\s@ContentArtifactsConfiguration' {} a -> s {state = a} :: ContentArtifactsConfiguration)
+
+instance Data.FromJSON ContentArtifactsConfiguration where
+  parseJSON =
+    Data.withObject
+      "ContentArtifactsConfiguration"
+      ( \x ->
+          ContentArtifactsConfiguration'
+            Prelude.<$> (x Data..:? "MuxType")
+            Prelude.<*> (x Data..: "State")
+      )
+
+instance
+  Prelude.Hashable
+    ContentArtifactsConfiguration
+  where
+  hashWithSalt _salt ContentArtifactsConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` muxType
+      `Prelude.hashWithSalt` state
+
+instance Prelude.NFData ContentArtifactsConfiguration where
+  rnf ContentArtifactsConfiguration' {..} =
+    Prelude.rnf muxType `Prelude.seq` Prelude.rnf state
+
+instance Data.ToJSON ContentArtifactsConfiguration where
+  toJSON ContentArtifactsConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MuxType" Data..=) Prelude.<$> muxType,
+            Prelude.Just ("State" Data..= state)
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/ContentMuxType.hs b/gen/Amazonka/Chime/Types/ContentMuxType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/ContentMuxType.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.ContentMuxType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.ContentMuxType
+  ( ContentMuxType
+      ( ..,
+        ContentMuxType_ContentOnly
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ContentMuxType = ContentMuxType'
+  { fromContentMuxType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ContentMuxType_ContentOnly :: ContentMuxType
+pattern ContentMuxType_ContentOnly = ContentMuxType' "ContentOnly"
+
+{-# COMPLETE
+  ContentMuxType_ContentOnly,
+  ContentMuxType'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/ConversationRetentionSettings.hs b/gen/Amazonka/Chime/Types/ConversationRetentionSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/ConversationRetentionSettings.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.ConversationRetentionSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.ConversationRetentionSettings where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The retention settings that determine how long to retain conversation
+-- messages for an Amazon Chime Enterprise account.
+--
+-- /See:/ 'newConversationRetentionSettings' smart constructor.
+data ConversationRetentionSettings = ConversationRetentionSettings'
+  { -- | The number of days for which to retain conversation messages.
+    retentionDays :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConversationRetentionSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'retentionDays', 'conversationRetentionSettings_retentionDays' - The number of days for which to retain conversation messages.
+newConversationRetentionSettings ::
+  ConversationRetentionSettings
+newConversationRetentionSettings =
+  ConversationRetentionSettings'
+    { retentionDays =
+        Prelude.Nothing
+    }
+
+-- | The number of days for which to retain conversation messages.
+conversationRetentionSettings_retentionDays :: Lens.Lens' ConversationRetentionSettings (Prelude.Maybe Prelude.Natural)
+conversationRetentionSettings_retentionDays = Lens.lens (\ConversationRetentionSettings' {retentionDays} -> retentionDays) (\s@ConversationRetentionSettings' {} a -> s {retentionDays = a} :: ConversationRetentionSettings)
+
+instance Data.FromJSON ConversationRetentionSettings where
+  parseJSON =
+    Data.withObject
+      "ConversationRetentionSettings"
+      ( \x ->
+          ConversationRetentionSettings'
+            Prelude.<$> (x Data..:? "RetentionDays")
+      )
+
+instance
+  Prelude.Hashable
+    ConversationRetentionSettings
+  where
+  hashWithSalt _salt ConversationRetentionSettings' {..} =
+    _salt `Prelude.hashWithSalt` retentionDays
+
+instance Prelude.NFData ConversationRetentionSettings where
+  rnf ConversationRetentionSettings' {..} =
+    Prelude.rnf retentionDays
+
+instance Data.ToJSON ConversationRetentionSettings where
+  toJSON ConversationRetentionSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("RetentionDays" Data..=)
+              Prelude.<$> retentionDays
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/CreateAttendeeError.hs b/gen/Amazonka/Chime/Types/CreateAttendeeError.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/CreateAttendeeError.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.CreateAttendeeError
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.CreateAttendeeError where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The list of errors returned when errors are encountered during the
+-- BatchCreateAttendee and CreateAttendee actions. This includes external
+-- user IDs, error codes, and error messages.
+--
+-- /See:/ 'newCreateAttendeeError' smart constructor.
+data CreateAttendeeError = CreateAttendeeError'
+  { -- | The error code.
+    errorCode :: Prelude.Maybe Prelude.Text,
+    -- | The error message.
+    errorMessage :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Chime SDK external user ID. An idempotency token. Links the
+    -- attendee to an identity managed by a builder application.
+    externalUserId :: Prelude.Maybe (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateAttendeeError' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'errorCode', 'createAttendeeError_errorCode' - The error code.
+--
+-- 'errorMessage', 'createAttendeeError_errorMessage' - The error message.
+--
+-- 'externalUserId', 'createAttendeeError_externalUserId' - The Amazon Chime SDK external user ID. An idempotency token. Links the
+-- attendee to an identity managed by a builder application.
+newCreateAttendeeError ::
+  CreateAttendeeError
+newCreateAttendeeError =
+  CreateAttendeeError'
+    { errorCode = Prelude.Nothing,
+      errorMessage = Prelude.Nothing,
+      externalUserId = Prelude.Nothing
+    }
+
+-- | The error code.
+createAttendeeError_errorCode :: Lens.Lens' CreateAttendeeError (Prelude.Maybe Prelude.Text)
+createAttendeeError_errorCode = Lens.lens (\CreateAttendeeError' {errorCode} -> errorCode) (\s@CreateAttendeeError' {} a -> s {errorCode = a} :: CreateAttendeeError)
+
+-- | The error message.
+createAttendeeError_errorMessage :: Lens.Lens' CreateAttendeeError (Prelude.Maybe Prelude.Text)
+createAttendeeError_errorMessage = Lens.lens (\CreateAttendeeError' {errorMessage} -> errorMessage) (\s@CreateAttendeeError' {} a -> s {errorMessage = a} :: CreateAttendeeError)
+
+-- | The Amazon Chime SDK external user ID. An idempotency token. Links the
+-- attendee to an identity managed by a builder application.
+createAttendeeError_externalUserId :: Lens.Lens' CreateAttendeeError (Prelude.Maybe Prelude.Text)
+createAttendeeError_externalUserId = Lens.lens (\CreateAttendeeError' {externalUserId} -> externalUserId) (\s@CreateAttendeeError' {} a -> s {externalUserId = a} :: CreateAttendeeError) Prelude.. Lens.mapping Data._Sensitive
+
+instance Data.FromJSON CreateAttendeeError where
+  parseJSON =
+    Data.withObject
+      "CreateAttendeeError"
+      ( \x ->
+          CreateAttendeeError'
+            Prelude.<$> (x Data..:? "ErrorCode")
+            Prelude.<*> (x Data..:? "ErrorMessage")
+            Prelude.<*> (x Data..:? "ExternalUserId")
+      )
+
+instance Prelude.Hashable CreateAttendeeError where
+  hashWithSalt _salt CreateAttendeeError' {..} =
+    _salt
+      `Prelude.hashWithSalt` errorCode
+      `Prelude.hashWithSalt` errorMessage
+      `Prelude.hashWithSalt` externalUserId
+
+instance Prelude.NFData CreateAttendeeError where
+  rnf CreateAttendeeError' {..} =
+    Prelude.rnf errorCode
+      `Prelude.seq` Prelude.rnf errorMessage
+      `Prelude.seq` Prelude.rnf externalUserId
diff --git a/gen/Amazonka/Chime/Types/CreateAttendeeRequestItem.hs b/gen/Amazonka/Chime/Types/CreateAttendeeRequestItem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/CreateAttendeeRequestItem.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.CreateAttendeeRequestItem
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.CreateAttendeeRequestItem where
+
+import Amazonka.Chime.Types.Tag
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The Amazon Chime SDK attendee fields to create, used with the
+-- BatchCreateAttendee action.
+--
+-- /See:/ 'newCreateAttendeeRequestItem' smart constructor.
+data CreateAttendeeRequestItem = CreateAttendeeRequestItem'
+  { -- | The tag key-value pairs.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | The Amazon Chime SDK external user ID. An idempotency token. Links the
+    -- attendee to an identity managed by a builder application.
+    externalUserId :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateAttendeeRequestItem' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tags', 'createAttendeeRequestItem_tags' - The tag key-value pairs.
+--
+-- 'externalUserId', 'createAttendeeRequestItem_externalUserId' - The Amazon Chime SDK external user ID. An idempotency token. Links the
+-- attendee to an identity managed by a builder application.
+newCreateAttendeeRequestItem ::
+  -- | 'externalUserId'
+  Prelude.Text ->
+  CreateAttendeeRequestItem
+newCreateAttendeeRequestItem pExternalUserId_ =
+  CreateAttendeeRequestItem'
+    { tags = Prelude.Nothing,
+      externalUserId =
+        Data._Sensitive Lens.# pExternalUserId_
+    }
+
+-- | The tag key-value pairs.
+createAttendeeRequestItem_tags :: Lens.Lens' CreateAttendeeRequestItem (Prelude.Maybe (Prelude.NonEmpty Tag))
+createAttendeeRequestItem_tags = Lens.lens (\CreateAttendeeRequestItem' {tags} -> tags) (\s@CreateAttendeeRequestItem' {} a -> s {tags = a} :: CreateAttendeeRequestItem) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Chime SDK external user ID. An idempotency token. Links the
+-- attendee to an identity managed by a builder application.
+createAttendeeRequestItem_externalUserId :: Lens.Lens' CreateAttendeeRequestItem Prelude.Text
+createAttendeeRequestItem_externalUserId = Lens.lens (\CreateAttendeeRequestItem' {externalUserId} -> externalUserId) (\s@CreateAttendeeRequestItem' {} a -> s {externalUserId = a} :: CreateAttendeeRequestItem) Prelude.. Data._Sensitive
+
+instance Prelude.Hashable CreateAttendeeRequestItem where
+  hashWithSalt _salt CreateAttendeeRequestItem' {..} =
+    _salt
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` externalUserId
+
+instance Prelude.NFData CreateAttendeeRequestItem where
+  rnf CreateAttendeeRequestItem' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf externalUserId
+
+instance Data.ToJSON CreateAttendeeRequestItem where
+  toJSON CreateAttendeeRequestItem' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("ExternalUserId" Data..= externalUserId)
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/Credential.hs b/gen/Amazonka/Chime/Types/Credential.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/Credential.hs
@@ -0,0 +1,90 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.Credential
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.Credential where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The SIP credentials used to authenticate requests to your Amazon Chime
+-- Voice Connector.
+--
+-- /See:/ 'newCredential' smart constructor.
+data Credential = Credential'
+  { -- | The RFC2617 compliant password associated with the SIP credentials, in
+    -- US-ASCII format.
+    password :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The RFC2617 compliant user name associated with the SIP credentials, in
+    -- US-ASCII format.
+    username :: Prelude.Maybe (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Credential' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'password', 'credential_password' - The RFC2617 compliant password associated with the SIP credentials, in
+-- US-ASCII format.
+--
+-- 'username', 'credential_username' - The RFC2617 compliant user name associated with the SIP credentials, in
+-- US-ASCII format.
+newCredential ::
+  Credential
+newCredential =
+  Credential'
+    { password = Prelude.Nothing,
+      username = Prelude.Nothing
+    }
+
+-- | The RFC2617 compliant password associated with the SIP credentials, in
+-- US-ASCII format.
+credential_password :: Lens.Lens' Credential (Prelude.Maybe Prelude.Text)
+credential_password = Lens.lens (\Credential' {password} -> password) (\s@Credential' {} a -> s {password = a} :: Credential) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The RFC2617 compliant user name associated with the SIP credentials, in
+-- US-ASCII format.
+credential_username :: Lens.Lens' Credential (Prelude.Maybe Prelude.Text)
+credential_username = Lens.lens (\Credential' {username} -> username) (\s@Credential' {} a -> s {username = a} :: Credential) Prelude.. Lens.mapping Data._Sensitive
+
+instance Prelude.Hashable Credential where
+  hashWithSalt _salt Credential' {..} =
+    _salt
+      `Prelude.hashWithSalt` password
+      `Prelude.hashWithSalt` username
+
+instance Prelude.NFData Credential where
+  rnf Credential' {..} =
+    Prelude.rnf password
+      `Prelude.seq` Prelude.rnf username
+
+instance Data.ToJSON Credential where
+  toJSON Credential' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Password" Data..=) Prelude.<$> password,
+            ("Username" Data..=) Prelude.<$> username
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/DNISEmergencyCallingConfiguration.hs b/gen/Amazonka/Chime/Types/DNISEmergencyCallingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/DNISEmergencyCallingConfiguration.hs
@@ -0,0 +1,139 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.DNISEmergencyCallingConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.DNISEmergencyCallingConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The Dialed Number Identification Service (DNIS) emergency calling
+-- configuration details associated with an Amazon Chime Voice Connector\'s
+-- emergency calling configuration.
+--
+-- /See:/ 'newDNISEmergencyCallingConfiguration' smart constructor.
+data DNISEmergencyCallingConfiguration = DNISEmergencyCallingConfiguration'
+  { -- | The DNIS phone number to route test emergency calls to, in E.164 format.
+    testPhoneNumber :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The DNIS phone number to route emergency calls to, in E.164 format.
+    emergencyPhoneNumber :: Data.Sensitive Prelude.Text,
+    -- | The country from which emergency calls are allowed, in ISO 3166-1
+    -- alpha-2 format.
+    callingCountry :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DNISEmergencyCallingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'testPhoneNumber', 'dNISEmergencyCallingConfiguration_testPhoneNumber' - The DNIS phone number to route test emergency calls to, in E.164 format.
+--
+-- 'emergencyPhoneNumber', 'dNISEmergencyCallingConfiguration_emergencyPhoneNumber' - The DNIS phone number to route emergency calls to, in E.164 format.
+--
+-- 'callingCountry', 'dNISEmergencyCallingConfiguration_callingCountry' - The country from which emergency calls are allowed, in ISO 3166-1
+-- alpha-2 format.
+newDNISEmergencyCallingConfiguration ::
+  -- | 'emergencyPhoneNumber'
+  Prelude.Text ->
+  -- | 'callingCountry'
+  Prelude.Text ->
+  DNISEmergencyCallingConfiguration
+newDNISEmergencyCallingConfiguration
+  pEmergencyPhoneNumber_
+  pCallingCountry_ =
+    DNISEmergencyCallingConfiguration'
+      { testPhoneNumber =
+          Prelude.Nothing,
+        emergencyPhoneNumber =
+          Data._Sensitive
+            Lens.# pEmergencyPhoneNumber_,
+        callingCountry = pCallingCountry_
+      }
+
+-- | The DNIS phone number to route test emergency calls to, in E.164 format.
+dNISEmergencyCallingConfiguration_testPhoneNumber :: Lens.Lens' DNISEmergencyCallingConfiguration (Prelude.Maybe Prelude.Text)
+dNISEmergencyCallingConfiguration_testPhoneNumber = Lens.lens (\DNISEmergencyCallingConfiguration' {testPhoneNumber} -> testPhoneNumber) (\s@DNISEmergencyCallingConfiguration' {} a -> s {testPhoneNumber = a} :: DNISEmergencyCallingConfiguration) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The DNIS phone number to route emergency calls to, in E.164 format.
+dNISEmergencyCallingConfiguration_emergencyPhoneNumber :: Lens.Lens' DNISEmergencyCallingConfiguration Prelude.Text
+dNISEmergencyCallingConfiguration_emergencyPhoneNumber = Lens.lens (\DNISEmergencyCallingConfiguration' {emergencyPhoneNumber} -> emergencyPhoneNumber) (\s@DNISEmergencyCallingConfiguration' {} a -> s {emergencyPhoneNumber = a} :: DNISEmergencyCallingConfiguration) Prelude.. Data._Sensitive
+
+-- | The country from which emergency calls are allowed, in ISO 3166-1
+-- alpha-2 format.
+dNISEmergencyCallingConfiguration_callingCountry :: Lens.Lens' DNISEmergencyCallingConfiguration Prelude.Text
+dNISEmergencyCallingConfiguration_callingCountry = Lens.lens (\DNISEmergencyCallingConfiguration' {callingCountry} -> callingCountry) (\s@DNISEmergencyCallingConfiguration' {} a -> s {callingCountry = a} :: DNISEmergencyCallingConfiguration)
+
+instance
+  Data.FromJSON
+    DNISEmergencyCallingConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "DNISEmergencyCallingConfiguration"
+      ( \x ->
+          DNISEmergencyCallingConfiguration'
+            Prelude.<$> (x Data..:? "TestPhoneNumber")
+            Prelude.<*> (x Data..: "EmergencyPhoneNumber")
+            Prelude.<*> (x Data..: "CallingCountry")
+      )
+
+instance
+  Prelude.Hashable
+    DNISEmergencyCallingConfiguration
+  where
+  hashWithSalt
+    _salt
+    DNISEmergencyCallingConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` testPhoneNumber
+        `Prelude.hashWithSalt` emergencyPhoneNumber
+        `Prelude.hashWithSalt` callingCountry
+
+instance
+  Prelude.NFData
+    DNISEmergencyCallingConfiguration
+  where
+  rnf DNISEmergencyCallingConfiguration' {..} =
+    Prelude.rnf testPhoneNumber
+      `Prelude.seq` Prelude.rnf emergencyPhoneNumber
+      `Prelude.seq` Prelude.rnf callingCountry
+
+instance
+  Data.ToJSON
+    DNISEmergencyCallingConfiguration
+  where
+  toJSON DNISEmergencyCallingConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("TestPhoneNumber" Data..=)
+              Prelude.<$> testPhoneNumber,
+            Prelude.Just
+              ( "EmergencyPhoneNumber"
+                  Data..= emergencyPhoneNumber
+              ),
+            Prelude.Just
+              ("CallingCountry" Data..= callingCountry)
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/EmailStatus.hs b/gen/Amazonka/Chime/Types/EmailStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/EmailStatus.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.EmailStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.EmailStatus
+  ( EmailStatus
+      ( ..,
+        EmailStatus_Failed,
+        EmailStatus_NotSent,
+        EmailStatus_Sent
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype EmailStatus = EmailStatus'
+  { fromEmailStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern EmailStatus_Failed :: EmailStatus
+pattern EmailStatus_Failed = EmailStatus' "Failed"
+
+pattern EmailStatus_NotSent :: EmailStatus
+pattern EmailStatus_NotSent = EmailStatus' "NotSent"
+
+pattern EmailStatus_Sent :: EmailStatus
+pattern EmailStatus_Sent = EmailStatus' "Sent"
+
+{-# COMPLETE
+  EmailStatus_Failed,
+  EmailStatus_NotSent,
+  EmailStatus_Sent,
+  EmailStatus'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/EmergencyCallingConfiguration.hs b/gen/Amazonka/Chime/Types/EmergencyCallingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/EmergencyCallingConfiguration.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.EmergencyCallingConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.EmergencyCallingConfiguration where
+
+import Amazonka.Chime.Types.DNISEmergencyCallingConfiguration
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The emergency calling configuration details associated with an Amazon
+-- Chime Voice Connector.
+--
+-- /See:/ 'newEmergencyCallingConfiguration' smart constructor.
+data EmergencyCallingConfiguration = EmergencyCallingConfiguration'
+  { -- | The Dialed Number Identification Service (DNIS) emergency calling
+    -- configuration details.
+    dnis :: Prelude.Maybe [DNISEmergencyCallingConfiguration]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EmergencyCallingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dnis', 'emergencyCallingConfiguration_dnis' - The Dialed Number Identification Service (DNIS) emergency calling
+-- configuration details.
+newEmergencyCallingConfiguration ::
+  EmergencyCallingConfiguration
+newEmergencyCallingConfiguration =
+  EmergencyCallingConfiguration'
+    { dnis =
+        Prelude.Nothing
+    }
+
+-- | The Dialed Number Identification Service (DNIS) emergency calling
+-- configuration details.
+emergencyCallingConfiguration_dnis :: Lens.Lens' EmergencyCallingConfiguration (Prelude.Maybe [DNISEmergencyCallingConfiguration])
+emergencyCallingConfiguration_dnis = Lens.lens (\EmergencyCallingConfiguration' {dnis} -> dnis) (\s@EmergencyCallingConfiguration' {} a -> s {dnis = a} :: EmergencyCallingConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON EmergencyCallingConfiguration where
+  parseJSON =
+    Data.withObject
+      "EmergencyCallingConfiguration"
+      ( \x ->
+          EmergencyCallingConfiguration'
+            Prelude.<$> (x Data..:? "DNIS" Data..!= Prelude.mempty)
+      )
+
+instance
+  Prelude.Hashable
+    EmergencyCallingConfiguration
+  where
+  hashWithSalt _salt EmergencyCallingConfiguration' {..} =
+    _salt `Prelude.hashWithSalt` dnis
+
+instance Prelude.NFData EmergencyCallingConfiguration where
+  rnf EmergencyCallingConfiguration' {..} =
+    Prelude.rnf dnis
+
+instance Data.ToJSON EmergencyCallingConfiguration where
+  toJSON EmergencyCallingConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("DNIS" Data..=) Prelude.<$> dnis]
+      )
diff --git a/gen/Amazonka/Chime/Types/EngineTranscribeMedicalSettings.hs b/gen/Amazonka/Chime/Types/EngineTranscribeMedicalSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/EngineTranscribeMedicalSettings.hs
@@ -0,0 +1,162 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.EngineTranscribeMedicalSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.EngineTranscribeMedicalSettings where
+
+import Amazonka.Chime.Types.TranscribeMedicalContentIdentificationType
+import Amazonka.Chime.Types.TranscribeMedicalLanguageCode
+import Amazonka.Chime.Types.TranscribeMedicalRegion
+import Amazonka.Chime.Types.TranscribeMedicalSpecialty
+import Amazonka.Chime.Types.TranscribeMedicalType
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings specific to the Amazon Transcribe Medical engine.
+--
+-- /See:/ 'newEngineTranscribeMedicalSettings' smart constructor.
+data EngineTranscribeMedicalSettings = EngineTranscribeMedicalSettings'
+  { -- | Set this field to @PHI@ to identify personal health information in the
+    -- transcription output.
+    contentIdentificationType :: Prelude.Maybe TranscribeMedicalContentIdentificationType,
+    -- | The AWS Region passed to Amazon Transcribe Medical. If you don\'t
+    -- specify a Region, Amazon Chime uses the meeting\'s Region.
+    region :: Prelude.Maybe TranscribeMedicalRegion,
+    -- | The name of the vocabulary passed to Amazon Transcribe Medical.
+    vocabularyName :: Prelude.Maybe Prelude.Text,
+    -- | The language code specified for the Amazon Transcribe Medical engine.
+    languageCode :: TranscribeMedicalLanguageCode,
+    -- | The specialty specified for the Amazon Transcribe Medical engine.
+    specialty :: TranscribeMedicalSpecialty,
+    -- | The type of transcription.
+    type' :: TranscribeMedicalType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EngineTranscribeMedicalSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'contentIdentificationType', 'engineTranscribeMedicalSettings_contentIdentificationType' - Set this field to @PHI@ to identify personal health information in the
+-- transcription output.
+--
+-- 'region', 'engineTranscribeMedicalSettings_region' - The AWS Region passed to Amazon Transcribe Medical. If you don\'t
+-- specify a Region, Amazon Chime uses the meeting\'s Region.
+--
+-- 'vocabularyName', 'engineTranscribeMedicalSettings_vocabularyName' - The name of the vocabulary passed to Amazon Transcribe Medical.
+--
+-- 'languageCode', 'engineTranscribeMedicalSettings_languageCode' - The language code specified for the Amazon Transcribe Medical engine.
+--
+-- 'specialty', 'engineTranscribeMedicalSettings_specialty' - The specialty specified for the Amazon Transcribe Medical engine.
+--
+-- 'type'', 'engineTranscribeMedicalSettings_type' - The type of transcription.
+newEngineTranscribeMedicalSettings ::
+  -- | 'languageCode'
+  TranscribeMedicalLanguageCode ->
+  -- | 'specialty'
+  TranscribeMedicalSpecialty ->
+  -- | 'type''
+  TranscribeMedicalType ->
+  EngineTranscribeMedicalSettings
+newEngineTranscribeMedicalSettings
+  pLanguageCode_
+  pSpecialty_
+  pType_ =
+    EngineTranscribeMedicalSettings'
+      { contentIdentificationType =
+          Prelude.Nothing,
+        region = Prelude.Nothing,
+        vocabularyName = Prelude.Nothing,
+        languageCode = pLanguageCode_,
+        specialty = pSpecialty_,
+        type' = pType_
+      }
+
+-- | Set this field to @PHI@ to identify personal health information in the
+-- transcription output.
+engineTranscribeMedicalSettings_contentIdentificationType :: Lens.Lens' EngineTranscribeMedicalSettings (Prelude.Maybe TranscribeMedicalContentIdentificationType)
+engineTranscribeMedicalSettings_contentIdentificationType = Lens.lens (\EngineTranscribeMedicalSettings' {contentIdentificationType} -> contentIdentificationType) (\s@EngineTranscribeMedicalSettings' {} a -> s {contentIdentificationType = a} :: EngineTranscribeMedicalSettings)
+
+-- | The AWS Region passed to Amazon Transcribe Medical. If you don\'t
+-- specify a Region, Amazon Chime uses the meeting\'s Region.
+engineTranscribeMedicalSettings_region :: Lens.Lens' EngineTranscribeMedicalSettings (Prelude.Maybe TranscribeMedicalRegion)
+engineTranscribeMedicalSettings_region = Lens.lens (\EngineTranscribeMedicalSettings' {region} -> region) (\s@EngineTranscribeMedicalSettings' {} a -> s {region = a} :: EngineTranscribeMedicalSettings)
+
+-- | The name of the vocabulary passed to Amazon Transcribe Medical.
+engineTranscribeMedicalSettings_vocabularyName :: Lens.Lens' EngineTranscribeMedicalSettings (Prelude.Maybe Prelude.Text)
+engineTranscribeMedicalSettings_vocabularyName = Lens.lens (\EngineTranscribeMedicalSettings' {vocabularyName} -> vocabularyName) (\s@EngineTranscribeMedicalSettings' {} a -> s {vocabularyName = a} :: EngineTranscribeMedicalSettings)
+
+-- | The language code specified for the Amazon Transcribe Medical engine.
+engineTranscribeMedicalSettings_languageCode :: Lens.Lens' EngineTranscribeMedicalSettings TranscribeMedicalLanguageCode
+engineTranscribeMedicalSettings_languageCode = Lens.lens (\EngineTranscribeMedicalSettings' {languageCode} -> languageCode) (\s@EngineTranscribeMedicalSettings' {} a -> s {languageCode = a} :: EngineTranscribeMedicalSettings)
+
+-- | The specialty specified for the Amazon Transcribe Medical engine.
+engineTranscribeMedicalSettings_specialty :: Lens.Lens' EngineTranscribeMedicalSettings TranscribeMedicalSpecialty
+engineTranscribeMedicalSettings_specialty = Lens.lens (\EngineTranscribeMedicalSettings' {specialty} -> specialty) (\s@EngineTranscribeMedicalSettings' {} a -> s {specialty = a} :: EngineTranscribeMedicalSettings)
+
+-- | The type of transcription.
+engineTranscribeMedicalSettings_type :: Lens.Lens' EngineTranscribeMedicalSettings TranscribeMedicalType
+engineTranscribeMedicalSettings_type = Lens.lens (\EngineTranscribeMedicalSettings' {type'} -> type') (\s@EngineTranscribeMedicalSettings' {} a -> s {type' = a} :: EngineTranscribeMedicalSettings)
+
+instance
+  Prelude.Hashable
+    EngineTranscribeMedicalSettings
+  where
+  hashWithSalt
+    _salt
+    EngineTranscribeMedicalSettings' {..} =
+      _salt
+        `Prelude.hashWithSalt` contentIdentificationType
+        `Prelude.hashWithSalt` region
+        `Prelude.hashWithSalt` vocabularyName
+        `Prelude.hashWithSalt` languageCode
+        `Prelude.hashWithSalt` specialty
+        `Prelude.hashWithSalt` type'
+
+instance
+  Prelude.NFData
+    EngineTranscribeMedicalSettings
+  where
+  rnf EngineTranscribeMedicalSettings' {..} =
+    Prelude.rnf contentIdentificationType
+      `Prelude.seq` Prelude.rnf region
+      `Prelude.seq` Prelude.rnf vocabularyName
+      `Prelude.seq` Prelude.rnf languageCode
+      `Prelude.seq` Prelude.rnf specialty
+      `Prelude.seq` Prelude.rnf type'
+
+instance Data.ToJSON EngineTranscribeMedicalSettings where
+  toJSON EngineTranscribeMedicalSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ContentIdentificationType" Data..=)
+              Prelude.<$> contentIdentificationType,
+            ("Region" Data..=) Prelude.<$> region,
+            ("VocabularyName" Data..=)
+              Prelude.<$> vocabularyName,
+            Prelude.Just ("LanguageCode" Data..= languageCode),
+            Prelude.Just ("Specialty" Data..= specialty),
+            Prelude.Just ("Type" Data..= type')
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/EngineTranscribeSettings.hs b/gen/Amazonka/Chime/Types/EngineTranscribeSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/EngineTranscribeSettings.hs
@@ -0,0 +1,261 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.EngineTranscribeSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.EngineTranscribeSettings where
+
+import Amazonka.Chime.Types.TranscribeContentIdentificationType
+import Amazonka.Chime.Types.TranscribeContentRedactionType
+import Amazonka.Chime.Types.TranscribeLanguageCode
+import Amazonka.Chime.Types.TranscribePartialResultsStability
+import Amazonka.Chime.Types.TranscribeRegion
+import Amazonka.Chime.Types.TranscribeVocabularyFilterMethod
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings specific to the Amazon Transcribe engine.
+--
+-- /See:/ 'newEngineTranscribeSettings' smart constructor.
+data EngineTranscribeSettings = EngineTranscribeSettings'
+  { -- | Set this field to @PII@ to identify personally identifiable information
+    -- in the transcription output.
+    contentIdentificationType :: Prelude.Maybe TranscribeContentIdentificationType,
+    -- | Set this field to @PII@ to redact personally identifiable information in
+    -- the transcription output. Content redaction is performed only upon
+    -- complete transcription of the audio segments.
+    contentRedactionType :: Prelude.Maybe TranscribeContentRedactionType,
+    -- | Generates partial transcription results that are less likely to change
+    -- as meeting attendees speak. It does so by only allowing the last few
+    -- words from the partial results to change.
+    enablePartialResultsStabilization :: Prelude.Maybe Prelude.Bool,
+    -- | The name of the language model used during transcription.
+    languageModelName :: Prelude.Maybe Prelude.Text,
+    -- | The stabity level of a partial results transcription. Determines how
+    -- stable you want the transcription results to be. A higher level means
+    -- the transcription results are less likely to change.
+    partialResultsStability :: Prelude.Maybe TranscribePartialResultsStability,
+    -- | Lists the PII entity types you want to identify or redact. To specify
+    -- entity types, you must enable @ContentIdentificationType@ or
+    -- @ContentRedactionType@.
+    --
+    -- @PIIEntityTypes@ must be comma-separated. The available values are:
+    -- @BANK_ACCOUNT_NUMBER@, @BANK_ROUTING, CREDIT_DEBIT_NUMBER@,
+    -- @CREDIT_DEBIT_CVV@, @CREDIT_DEBIT_EXPIRY@, @PIN@, @EMAIL@, @ADDRESS@,
+    -- @NAME@, @PHONE@, @SSN@, and @ALL@.
+    --
+    -- @PiiEntityTypes@ is an optional parameter with a default value of @ALL@.
+    piiEntityTypes :: Prelude.Maybe Prelude.Text,
+    -- | The AWS Region passed to Amazon Transcribe. If you don\'t specify a
+    -- Region, Amazon Chime uses the meeting\'s Region.
+    region :: Prelude.Maybe TranscribeRegion,
+    -- | The filtering method passed to Amazon Transcribe.
+    vocabularyFilterMethod :: Prelude.Maybe TranscribeVocabularyFilterMethod,
+    -- | The name of the vocabulary filter passed to Amazon Transcribe.
+    vocabularyFilterName :: Prelude.Maybe Prelude.Text,
+    -- | The name of the vocabulary passed to Amazon Transcribe.
+    vocabularyName :: Prelude.Maybe Prelude.Text,
+    -- | The language code specified for the Amazon Transcribe engine.
+    languageCode :: TranscribeLanguageCode
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EngineTranscribeSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'contentIdentificationType', 'engineTranscribeSettings_contentIdentificationType' - Set this field to @PII@ to identify personally identifiable information
+-- in the transcription output.
+--
+-- 'contentRedactionType', 'engineTranscribeSettings_contentRedactionType' - Set this field to @PII@ to redact personally identifiable information in
+-- the transcription output. Content redaction is performed only upon
+-- complete transcription of the audio segments.
+--
+-- 'enablePartialResultsStabilization', 'engineTranscribeSettings_enablePartialResultsStabilization' - Generates partial transcription results that are less likely to change
+-- as meeting attendees speak. It does so by only allowing the last few
+-- words from the partial results to change.
+--
+-- 'languageModelName', 'engineTranscribeSettings_languageModelName' - The name of the language model used during transcription.
+--
+-- 'partialResultsStability', 'engineTranscribeSettings_partialResultsStability' - The stabity level of a partial results transcription. Determines how
+-- stable you want the transcription results to be. A higher level means
+-- the transcription results are less likely to change.
+--
+-- 'piiEntityTypes', 'engineTranscribeSettings_piiEntityTypes' - Lists the PII entity types you want to identify or redact. To specify
+-- entity types, you must enable @ContentIdentificationType@ or
+-- @ContentRedactionType@.
+--
+-- @PIIEntityTypes@ must be comma-separated. The available values are:
+-- @BANK_ACCOUNT_NUMBER@, @BANK_ROUTING, CREDIT_DEBIT_NUMBER@,
+-- @CREDIT_DEBIT_CVV@, @CREDIT_DEBIT_EXPIRY@, @PIN@, @EMAIL@, @ADDRESS@,
+-- @NAME@, @PHONE@, @SSN@, and @ALL@.
+--
+-- @PiiEntityTypes@ is an optional parameter with a default value of @ALL@.
+--
+-- 'region', 'engineTranscribeSettings_region' - The AWS Region passed to Amazon Transcribe. If you don\'t specify a
+-- Region, Amazon Chime uses the meeting\'s Region.
+--
+-- 'vocabularyFilterMethod', 'engineTranscribeSettings_vocabularyFilterMethod' - The filtering method passed to Amazon Transcribe.
+--
+-- 'vocabularyFilterName', 'engineTranscribeSettings_vocabularyFilterName' - The name of the vocabulary filter passed to Amazon Transcribe.
+--
+-- 'vocabularyName', 'engineTranscribeSettings_vocabularyName' - The name of the vocabulary passed to Amazon Transcribe.
+--
+-- 'languageCode', 'engineTranscribeSettings_languageCode' - The language code specified for the Amazon Transcribe engine.
+newEngineTranscribeSettings ::
+  -- | 'languageCode'
+  TranscribeLanguageCode ->
+  EngineTranscribeSettings
+newEngineTranscribeSettings pLanguageCode_ =
+  EngineTranscribeSettings'
+    { contentIdentificationType =
+        Prelude.Nothing,
+      contentRedactionType = Prelude.Nothing,
+      enablePartialResultsStabilization =
+        Prelude.Nothing,
+      languageModelName = Prelude.Nothing,
+      partialResultsStability = Prelude.Nothing,
+      piiEntityTypes = Prelude.Nothing,
+      region = Prelude.Nothing,
+      vocabularyFilterMethod = Prelude.Nothing,
+      vocabularyFilterName = Prelude.Nothing,
+      vocabularyName = Prelude.Nothing,
+      languageCode = pLanguageCode_
+    }
+
+-- | Set this field to @PII@ to identify personally identifiable information
+-- in the transcription output.
+engineTranscribeSettings_contentIdentificationType :: Lens.Lens' EngineTranscribeSettings (Prelude.Maybe TranscribeContentIdentificationType)
+engineTranscribeSettings_contentIdentificationType = Lens.lens (\EngineTranscribeSettings' {contentIdentificationType} -> contentIdentificationType) (\s@EngineTranscribeSettings' {} a -> s {contentIdentificationType = a} :: EngineTranscribeSettings)
+
+-- | Set this field to @PII@ to redact personally identifiable information in
+-- the transcription output. Content redaction is performed only upon
+-- complete transcription of the audio segments.
+engineTranscribeSettings_contentRedactionType :: Lens.Lens' EngineTranscribeSettings (Prelude.Maybe TranscribeContentRedactionType)
+engineTranscribeSettings_contentRedactionType = Lens.lens (\EngineTranscribeSettings' {contentRedactionType} -> contentRedactionType) (\s@EngineTranscribeSettings' {} a -> s {contentRedactionType = a} :: EngineTranscribeSettings)
+
+-- | Generates partial transcription results that are less likely to change
+-- as meeting attendees speak. It does so by only allowing the last few
+-- words from the partial results to change.
+engineTranscribeSettings_enablePartialResultsStabilization :: Lens.Lens' EngineTranscribeSettings (Prelude.Maybe Prelude.Bool)
+engineTranscribeSettings_enablePartialResultsStabilization = Lens.lens (\EngineTranscribeSettings' {enablePartialResultsStabilization} -> enablePartialResultsStabilization) (\s@EngineTranscribeSettings' {} a -> s {enablePartialResultsStabilization = a} :: EngineTranscribeSettings)
+
+-- | The name of the language model used during transcription.
+engineTranscribeSettings_languageModelName :: Lens.Lens' EngineTranscribeSettings (Prelude.Maybe Prelude.Text)
+engineTranscribeSettings_languageModelName = Lens.lens (\EngineTranscribeSettings' {languageModelName} -> languageModelName) (\s@EngineTranscribeSettings' {} a -> s {languageModelName = a} :: EngineTranscribeSettings)
+
+-- | The stabity level of a partial results transcription. Determines how
+-- stable you want the transcription results to be. A higher level means
+-- the transcription results are less likely to change.
+engineTranscribeSettings_partialResultsStability :: Lens.Lens' EngineTranscribeSettings (Prelude.Maybe TranscribePartialResultsStability)
+engineTranscribeSettings_partialResultsStability = Lens.lens (\EngineTranscribeSettings' {partialResultsStability} -> partialResultsStability) (\s@EngineTranscribeSettings' {} a -> s {partialResultsStability = a} :: EngineTranscribeSettings)
+
+-- | Lists the PII entity types you want to identify or redact. To specify
+-- entity types, you must enable @ContentIdentificationType@ or
+-- @ContentRedactionType@.
+--
+-- @PIIEntityTypes@ must be comma-separated. The available values are:
+-- @BANK_ACCOUNT_NUMBER@, @BANK_ROUTING, CREDIT_DEBIT_NUMBER@,
+-- @CREDIT_DEBIT_CVV@, @CREDIT_DEBIT_EXPIRY@, @PIN@, @EMAIL@, @ADDRESS@,
+-- @NAME@, @PHONE@, @SSN@, and @ALL@.
+--
+-- @PiiEntityTypes@ is an optional parameter with a default value of @ALL@.
+engineTranscribeSettings_piiEntityTypes :: Lens.Lens' EngineTranscribeSettings (Prelude.Maybe Prelude.Text)
+engineTranscribeSettings_piiEntityTypes = Lens.lens (\EngineTranscribeSettings' {piiEntityTypes} -> piiEntityTypes) (\s@EngineTranscribeSettings' {} a -> s {piiEntityTypes = a} :: EngineTranscribeSettings)
+
+-- | The AWS Region passed to Amazon Transcribe. If you don\'t specify a
+-- Region, Amazon Chime uses the meeting\'s Region.
+engineTranscribeSettings_region :: Lens.Lens' EngineTranscribeSettings (Prelude.Maybe TranscribeRegion)
+engineTranscribeSettings_region = Lens.lens (\EngineTranscribeSettings' {region} -> region) (\s@EngineTranscribeSettings' {} a -> s {region = a} :: EngineTranscribeSettings)
+
+-- | The filtering method passed to Amazon Transcribe.
+engineTranscribeSettings_vocabularyFilterMethod :: Lens.Lens' EngineTranscribeSettings (Prelude.Maybe TranscribeVocabularyFilterMethod)
+engineTranscribeSettings_vocabularyFilterMethod = Lens.lens (\EngineTranscribeSettings' {vocabularyFilterMethod} -> vocabularyFilterMethod) (\s@EngineTranscribeSettings' {} a -> s {vocabularyFilterMethod = a} :: EngineTranscribeSettings)
+
+-- | The name of the vocabulary filter passed to Amazon Transcribe.
+engineTranscribeSettings_vocabularyFilterName :: Lens.Lens' EngineTranscribeSettings (Prelude.Maybe Prelude.Text)
+engineTranscribeSettings_vocabularyFilterName = Lens.lens (\EngineTranscribeSettings' {vocabularyFilterName} -> vocabularyFilterName) (\s@EngineTranscribeSettings' {} a -> s {vocabularyFilterName = a} :: EngineTranscribeSettings)
+
+-- | The name of the vocabulary passed to Amazon Transcribe.
+engineTranscribeSettings_vocabularyName :: Lens.Lens' EngineTranscribeSettings (Prelude.Maybe Prelude.Text)
+engineTranscribeSettings_vocabularyName = Lens.lens (\EngineTranscribeSettings' {vocabularyName} -> vocabularyName) (\s@EngineTranscribeSettings' {} a -> s {vocabularyName = a} :: EngineTranscribeSettings)
+
+-- | The language code specified for the Amazon Transcribe engine.
+engineTranscribeSettings_languageCode :: Lens.Lens' EngineTranscribeSettings TranscribeLanguageCode
+engineTranscribeSettings_languageCode = Lens.lens (\EngineTranscribeSettings' {languageCode} -> languageCode) (\s@EngineTranscribeSettings' {} a -> s {languageCode = a} :: EngineTranscribeSettings)
+
+instance Prelude.Hashable EngineTranscribeSettings where
+  hashWithSalt _salt EngineTranscribeSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` contentIdentificationType
+      `Prelude.hashWithSalt` contentRedactionType
+      `Prelude.hashWithSalt` enablePartialResultsStabilization
+      `Prelude.hashWithSalt` languageModelName
+      `Prelude.hashWithSalt` partialResultsStability
+      `Prelude.hashWithSalt` piiEntityTypes
+      `Prelude.hashWithSalt` region
+      `Prelude.hashWithSalt` vocabularyFilterMethod
+      `Prelude.hashWithSalt` vocabularyFilterName
+      `Prelude.hashWithSalt` vocabularyName
+      `Prelude.hashWithSalt` languageCode
+
+instance Prelude.NFData EngineTranscribeSettings where
+  rnf EngineTranscribeSettings' {..} =
+    Prelude.rnf contentIdentificationType
+      `Prelude.seq` Prelude.rnf contentRedactionType
+      `Prelude.seq` Prelude.rnf enablePartialResultsStabilization
+      `Prelude.seq` Prelude.rnf languageModelName
+      `Prelude.seq` Prelude.rnf partialResultsStability
+      `Prelude.seq` Prelude.rnf piiEntityTypes
+      `Prelude.seq` Prelude.rnf region
+      `Prelude.seq` Prelude.rnf vocabularyFilterMethod
+      `Prelude.seq` Prelude.rnf vocabularyFilterName
+      `Prelude.seq` Prelude.rnf vocabularyName
+      `Prelude.seq` Prelude.rnf languageCode
+
+instance Data.ToJSON EngineTranscribeSettings where
+  toJSON EngineTranscribeSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ContentIdentificationType" Data..=)
+              Prelude.<$> contentIdentificationType,
+            ("ContentRedactionType" Data..=)
+              Prelude.<$> contentRedactionType,
+            ("EnablePartialResultsStabilization" Data..=)
+              Prelude.<$> enablePartialResultsStabilization,
+            ("LanguageModelName" Data..=)
+              Prelude.<$> languageModelName,
+            ("PartialResultsStability" Data..=)
+              Prelude.<$> partialResultsStability,
+            ("PiiEntityTypes" Data..=)
+              Prelude.<$> piiEntityTypes,
+            ("Region" Data..=) Prelude.<$> region,
+            ("VocabularyFilterMethod" Data..=)
+              Prelude.<$> vocabularyFilterMethod,
+            ("VocabularyFilterName" Data..=)
+              Prelude.<$> vocabularyFilterName,
+            ("VocabularyName" Data..=)
+              Prelude.<$> vocabularyName,
+            Prelude.Just ("LanguageCode" Data..= languageCode)
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/ErrorCode.hs b/gen/Amazonka/Chime/Types/ErrorCode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/ErrorCode.hs
@@ -0,0 +1,136 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.ErrorCode
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.ErrorCode
+  ( ErrorCode
+      ( ..,
+        ErrorCode_AccessDenied,
+        ErrorCode_BadRequest,
+        ErrorCode_Conflict,
+        ErrorCode_Forbidden,
+        ErrorCode_NotFound,
+        ErrorCode_PhoneNumberAssociationsExist,
+        ErrorCode_PreconditionFailed,
+        ErrorCode_ResourceLimitExceeded,
+        ErrorCode_ServiceFailure,
+        ErrorCode_ServiceUnavailable,
+        ErrorCode_Throttled,
+        ErrorCode_Throttling,
+        ErrorCode_Unauthorized,
+        ErrorCode_Unprocessable,
+        ErrorCode_VoiceConnectorGroupAssociationsExist
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ErrorCode = ErrorCode'
+  { fromErrorCode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ErrorCode_AccessDenied :: ErrorCode
+pattern ErrorCode_AccessDenied = ErrorCode' "AccessDenied"
+
+pattern ErrorCode_BadRequest :: ErrorCode
+pattern ErrorCode_BadRequest = ErrorCode' "BadRequest"
+
+pattern ErrorCode_Conflict :: ErrorCode
+pattern ErrorCode_Conflict = ErrorCode' "Conflict"
+
+pattern ErrorCode_Forbidden :: ErrorCode
+pattern ErrorCode_Forbidden = ErrorCode' "Forbidden"
+
+pattern ErrorCode_NotFound :: ErrorCode
+pattern ErrorCode_NotFound = ErrorCode' "NotFound"
+
+pattern ErrorCode_PhoneNumberAssociationsExist :: ErrorCode
+pattern ErrorCode_PhoneNumberAssociationsExist = ErrorCode' "PhoneNumberAssociationsExist"
+
+pattern ErrorCode_PreconditionFailed :: ErrorCode
+pattern ErrorCode_PreconditionFailed = ErrorCode' "PreconditionFailed"
+
+pattern ErrorCode_ResourceLimitExceeded :: ErrorCode
+pattern ErrorCode_ResourceLimitExceeded = ErrorCode' "ResourceLimitExceeded"
+
+pattern ErrorCode_ServiceFailure :: ErrorCode
+pattern ErrorCode_ServiceFailure = ErrorCode' "ServiceFailure"
+
+pattern ErrorCode_ServiceUnavailable :: ErrorCode
+pattern ErrorCode_ServiceUnavailable = ErrorCode' "ServiceUnavailable"
+
+pattern ErrorCode_Throttled :: ErrorCode
+pattern ErrorCode_Throttled = ErrorCode' "Throttled"
+
+pattern ErrorCode_Throttling :: ErrorCode
+pattern ErrorCode_Throttling = ErrorCode' "Throttling"
+
+pattern ErrorCode_Unauthorized :: ErrorCode
+pattern ErrorCode_Unauthorized = ErrorCode' "Unauthorized"
+
+pattern ErrorCode_Unprocessable :: ErrorCode
+pattern ErrorCode_Unprocessable = ErrorCode' "Unprocessable"
+
+pattern ErrorCode_VoiceConnectorGroupAssociationsExist :: ErrorCode
+pattern ErrorCode_VoiceConnectorGroupAssociationsExist = ErrorCode' "VoiceConnectorGroupAssociationsExist"
+
+{-# COMPLETE
+  ErrorCode_AccessDenied,
+  ErrorCode_BadRequest,
+  ErrorCode_Conflict,
+  ErrorCode_Forbidden,
+  ErrorCode_NotFound,
+  ErrorCode_PhoneNumberAssociationsExist,
+  ErrorCode_PreconditionFailed,
+  ErrorCode_ResourceLimitExceeded,
+  ErrorCode_ServiceFailure,
+  ErrorCode_ServiceUnavailable,
+  ErrorCode_Throttled,
+  ErrorCode_Throttling,
+  ErrorCode_Unauthorized,
+  ErrorCode_Unprocessable,
+  ErrorCode_VoiceConnectorGroupAssociationsExist,
+  ErrorCode'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/EventsConfiguration.hs b/gen/Amazonka/Chime/Types/EventsConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/EventsConfiguration.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.EventsConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.EventsConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration that allows a bot to receive outgoing events. Can be
+-- either an HTTPS endpoint or a Lambda function ARN.
+--
+-- /See:/ 'newEventsConfiguration' smart constructor.
+data EventsConfiguration = EventsConfiguration'
+  { -- | The bot ID.
+    botId :: Prelude.Maybe Prelude.Text,
+    -- | Lambda function ARN that allows a bot to receive outgoing events.
+    lambdaFunctionArn :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | HTTPS endpoint that allows a bot to receive outgoing events.
+    outboundEventsHTTPSEndpoint :: Prelude.Maybe (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EventsConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'botId', 'eventsConfiguration_botId' - The bot ID.
+--
+-- 'lambdaFunctionArn', 'eventsConfiguration_lambdaFunctionArn' - Lambda function ARN that allows a bot to receive outgoing events.
+--
+-- 'outboundEventsHTTPSEndpoint', 'eventsConfiguration_outboundEventsHTTPSEndpoint' - HTTPS endpoint that allows a bot to receive outgoing events.
+newEventsConfiguration ::
+  EventsConfiguration
+newEventsConfiguration =
+  EventsConfiguration'
+    { botId = Prelude.Nothing,
+      lambdaFunctionArn = Prelude.Nothing,
+      outboundEventsHTTPSEndpoint = Prelude.Nothing
+    }
+
+-- | The bot ID.
+eventsConfiguration_botId :: Lens.Lens' EventsConfiguration (Prelude.Maybe Prelude.Text)
+eventsConfiguration_botId = Lens.lens (\EventsConfiguration' {botId} -> botId) (\s@EventsConfiguration' {} a -> s {botId = a} :: EventsConfiguration)
+
+-- | Lambda function ARN that allows a bot to receive outgoing events.
+eventsConfiguration_lambdaFunctionArn :: Lens.Lens' EventsConfiguration (Prelude.Maybe Prelude.Text)
+eventsConfiguration_lambdaFunctionArn = Lens.lens (\EventsConfiguration' {lambdaFunctionArn} -> lambdaFunctionArn) (\s@EventsConfiguration' {} a -> s {lambdaFunctionArn = a} :: EventsConfiguration) Prelude.. Lens.mapping Data._Sensitive
+
+-- | HTTPS endpoint that allows a bot to receive outgoing events.
+eventsConfiguration_outboundEventsHTTPSEndpoint :: Lens.Lens' EventsConfiguration (Prelude.Maybe Prelude.Text)
+eventsConfiguration_outboundEventsHTTPSEndpoint = Lens.lens (\EventsConfiguration' {outboundEventsHTTPSEndpoint} -> outboundEventsHTTPSEndpoint) (\s@EventsConfiguration' {} a -> s {outboundEventsHTTPSEndpoint = a} :: EventsConfiguration) Prelude.. Lens.mapping Data._Sensitive
+
+instance Data.FromJSON EventsConfiguration where
+  parseJSON =
+    Data.withObject
+      "EventsConfiguration"
+      ( \x ->
+          EventsConfiguration'
+            Prelude.<$> (x Data..:? "BotId")
+            Prelude.<*> (x Data..:? "LambdaFunctionArn")
+            Prelude.<*> (x Data..:? "OutboundEventsHTTPSEndpoint")
+      )
+
+instance Prelude.Hashable EventsConfiguration where
+  hashWithSalt _salt EventsConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` botId
+      `Prelude.hashWithSalt` lambdaFunctionArn
+      `Prelude.hashWithSalt` outboundEventsHTTPSEndpoint
+
+instance Prelude.NFData EventsConfiguration where
+  rnf EventsConfiguration' {..} =
+    Prelude.rnf botId
+      `Prelude.seq` Prelude.rnf lambdaFunctionArn
+      `Prelude.seq` Prelude.rnf outboundEventsHTTPSEndpoint
diff --git a/gen/Amazonka/Chime/Types/GeoMatchLevel.hs b/gen/Amazonka/Chime/Types/GeoMatchLevel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/GeoMatchLevel.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.GeoMatchLevel
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.GeoMatchLevel
+  ( GeoMatchLevel
+      ( ..,
+        GeoMatchLevel_AreaCode,
+        GeoMatchLevel_Country
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype GeoMatchLevel = GeoMatchLevel'
+  { fromGeoMatchLevel ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern GeoMatchLevel_AreaCode :: GeoMatchLevel
+pattern GeoMatchLevel_AreaCode = GeoMatchLevel' "AreaCode"
+
+pattern GeoMatchLevel_Country :: GeoMatchLevel
+pattern GeoMatchLevel_Country = GeoMatchLevel' "Country"
+
+{-# COMPLETE
+  GeoMatchLevel_AreaCode,
+  GeoMatchLevel_Country,
+  GeoMatchLevel'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/GeoMatchParams.hs b/gen/Amazonka/Chime/Types/GeoMatchParams.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/GeoMatchParams.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.GeoMatchParams
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.GeoMatchParams where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The country and area code for a proxy phone number in a proxy phone
+-- session.
+--
+-- /See:/ 'newGeoMatchParams' smart constructor.
+data GeoMatchParams = GeoMatchParams'
+  { -- | The country.
+    country :: Prelude.Text,
+    -- | The area code.
+    areaCode :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GeoMatchParams' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'country', 'geoMatchParams_country' - The country.
+--
+-- 'areaCode', 'geoMatchParams_areaCode' - The area code.
+newGeoMatchParams ::
+  -- | 'country'
+  Prelude.Text ->
+  -- | 'areaCode'
+  Prelude.Text ->
+  GeoMatchParams
+newGeoMatchParams pCountry_ pAreaCode_ =
+  GeoMatchParams'
+    { country = pCountry_,
+      areaCode = pAreaCode_
+    }
+
+-- | The country.
+geoMatchParams_country :: Lens.Lens' GeoMatchParams Prelude.Text
+geoMatchParams_country = Lens.lens (\GeoMatchParams' {country} -> country) (\s@GeoMatchParams' {} a -> s {country = a} :: GeoMatchParams)
+
+-- | The area code.
+geoMatchParams_areaCode :: Lens.Lens' GeoMatchParams Prelude.Text
+geoMatchParams_areaCode = Lens.lens (\GeoMatchParams' {areaCode} -> areaCode) (\s@GeoMatchParams' {} a -> s {areaCode = a} :: GeoMatchParams)
+
+instance Data.FromJSON GeoMatchParams where
+  parseJSON =
+    Data.withObject
+      "GeoMatchParams"
+      ( \x ->
+          GeoMatchParams'
+            Prelude.<$> (x Data..: "Country")
+            Prelude.<*> (x Data..: "AreaCode")
+      )
+
+instance Prelude.Hashable GeoMatchParams where
+  hashWithSalt _salt GeoMatchParams' {..} =
+    _salt
+      `Prelude.hashWithSalt` country
+      `Prelude.hashWithSalt` areaCode
+
+instance Prelude.NFData GeoMatchParams where
+  rnf GeoMatchParams' {..} =
+    Prelude.rnf country
+      `Prelude.seq` Prelude.rnf areaCode
+
+instance Data.ToJSON GeoMatchParams where
+  toJSON GeoMatchParams' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Country" Data..= country),
+            Prelude.Just ("AreaCode" Data..= areaCode)
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/Identity.hs b/gen/Amazonka/Chime/Types/Identity.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/Identity.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.Identity
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.Identity where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The details of a user.
+--
+-- /See:/ 'newIdentity' smart constructor.
+data Identity = Identity'
+  { -- | The ARN in an Identity.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The name in an Identity.
+    name :: Prelude.Maybe (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Identity' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'identity_arn' - The ARN in an Identity.
+--
+-- 'name', 'identity_name' - The name in an Identity.
+newIdentity ::
+  Identity
+newIdentity =
+  Identity'
+    { arn = Prelude.Nothing,
+      name = Prelude.Nothing
+    }
+
+-- | The ARN in an Identity.
+identity_arn :: Lens.Lens' Identity (Prelude.Maybe Prelude.Text)
+identity_arn = Lens.lens (\Identity' {arn} -> arn) (\s@Identity' {} a -> s {arn = a} :: Identity)
+
+-- | The name in an Identity.
+identity_name :: Lens.Lens' Identity (Prelude.Maybe Prelude.Text)
+identity_name = Lens.lens (\Identity' {name} -> name) (\s@Identity' {} a -> s {name = a} :: Identity) Prelude.. Lens.mapping Data._Sensitive
+
+instance Data.FromJSON Identity where
+  parseJSON =
+    Data.withObject
+      "Identity"
+      ( \x ->
+          Identity'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "Name")
+      )
+
+instance Prelude.Hashable Identity where
+  hashWithSalt _salt Identity' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData Identity where
+  rnf Identity' {..} =
+    Prelude.rnf arn `Prelude.seq` Prelude.rnf name
diff --git a/gen/Amazonka/Chime/Types/Invite.hs b/gen/Amazonka/Chime/Types/Invite.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/Invite.hs
@@ -0,0 +1,111 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.Invite
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.Invite where
+
+import Amazonka.Chime.Types.EmailStatus
+import Amazonka.Chime.Types.InviteStatus
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Invitation object returned after emailing users to invite them to join
+-- the Amazon Chime @Team@ account.
+--
+-- /See:/ 'newInvite' smart constructor.
+data Invite = Invite'
+  { -- | The email address to which the invite is sent.
+    emailAddress :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The status of the invite email.
+    emailStatus :: Prelude.Maybe EmailStatus,
+    -- | The invite ID.
+    inviteId :: Prelude.Maybe Prelude.Text,
+    -- | The status of the invite.
+    status :: Prelude.Maybe InviteStatus
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Invite' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'emailAddress', 'invite_emailAddress' - The email address to which the invite is sent.
+--
+-- 'emailStatus', 'invite_emailStatus' - The status of the invite email.
+--
+-- 'inviteId', 'invite_inviteId' - The invite ID.
+--
+-- 'status', 'invite_status' - The status of the invite.
+newInvite ::
+  Invite
+newInvite =
+  Invite'
+    { emailAddress = Prelude.Nothing,
+      emailStatus = Prelude.Nothing,
+      inviteId = Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+-- | The email address to which the invite is sent.
+invite_emailAddress :: Lens.Lens' Invite (Prelude.Maybe Prelude.Text)
+invite_emailAddress = Lens.lens (\Invite' {emailAddress} -> emailAddress) (\s@Invite' {} a -> s {emailAddress = a} :: Invite) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The status of the invite email.
+invite_emailStatus :: Lens.Lens' Invite (Prelude.Maybe EmailStatus)
+invite_emailStatus = Lens.lens (\Invite' {emailStatus} -> emailStatus) (\s@Invite' {} a -> s {emailStatus = a} :: Invite)
+
+-- | The invite ID.
+invite_inviteId :: Lens.Lens' Invite (Prelude.Maybe Prelude.Text)
+invite_inviteId = Lens.lens (\Invite' {inviteId} -> inviteId) (\s@Invite' {} a -> s {inviteId = a} :: Invite)
+
+-- | The status of the invite.
+invite_status :: Lens.Lens' Invite (Prelude.Maybe InviteStatus)
+invite_status = Lens.lens (\Invite' {status} -> status) (\s@Invite' {} a -> s {status = a} :: Invite)
+
+instance Data.FromJSON Invite where
+  parseJSON =
+    Data.withObject
+      "Invite"
+      ( \x ->
+          Invite'
+            Prelude.<$> (x Data..:? "EmailAddress")
+            Prelude.<*> (x Data..:? "EmailStatus")
+            Prelude.<*> (x Data..:? "InviteId")
+            Prelude.<*> (x Data..:? "Status")
+      )
+
+instance Prelude.Hashable Invite where
+  hashWithSalt _salt Invite' {..} =
+    _salt
+      `Prelude.hashWithSalt` emailAddress
+      `Prelude.hashWithSalt` emailStatus
+      `Prelude.hashWithSalt` inviteId
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData Invite where
+  rnf Invite' {..} =
+    Prelude.rnf emailAddress
+      `Prelude.seq` Prelude.rnf emailStatus
+      `Prelude.seq` Prelude.rnf inviteId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/Chime/Types/InviteStatus.hs b/gen/Amazonka/Chime/Types/InviteStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/InviteStatus.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.InviteStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.InviteStatus
+  ( InviteStatus
+      ( ..,
+        InviteStatus_Accepted,
+        InviteStatus_Failed,
+        InviteStatus_Pending
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype InviteStatus = InviteStatus'
+  { fromInviteStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern InviteStatus_Accepted :: InviteStatus
+pattern InviteStatus_Accepted = InviteStatus' "Accepted"
+
+pattern InviteStatus_Failed :: InviteStatus
+pattern InviteStatus_Failed = InviteStatus' "Failed"
+
+pattern InviteStatus_Pending :: InviteStatus
+pattern InviteStatus_Pending = InviteStatus' "Pending"
+
+{-# COMPLETE
+  InviteStatus_Accepted,
+  InviteStatus_Failed,
+  InviteStatus_Pending,
+  InviteStatus'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/License.hs b/gen/Amazonka/Chime/Types/License.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/License.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.License
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.License
+  ( License
+      ( ..,
+        License_Basic,
+        License_Plus,
+        License_Pro,
+        License_ProTrial
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype License = License' {fromLicense :: Data.Text}
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern License_Basic :: License
+pattern License_Basic = License' "Basic"
+
+pattern License_Plus :: License
+pattern License_Plus = License' "Plus"
+
+pattern License_Pro :: License
+pattern License_Pro = License' "Pro"
+
+pattern License_ProTrial :: License
+pattern License_ProTrial = License' "ProTrial"
+
+{-# COMPLETE
+  License_Basic,
+  License_Plus,
+  License_Pro,
+  License_ProTrial,
+  License'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/LoggingConfiguration.hs b/gen/Amazonka/Chime/Types/LoggingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/LoggingConfiguration.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.LoggingConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.LoggingConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The logging configuration associated with an Amazon Chime Voice
+-- Connector. Specifies whether SIP message logs are enabled for sending to
+-- Amazon CloudWatch Logs.
+--
+-- /See:/ 'newLoggingConfiguration' smart constructor.
+data LoggingConfiguration = LoggingConfiguration'
+  { -- | Boolean that enables the logging of Voice Connector metrics to
+    -- Cloudwatch.
+    enableMediaMetricLogs :: Prelude.Maybe Prelude.Bool,
+    -- | When true, enables SIP message logs for sending to Amazon CloudWatch
+    -- Logs.
+    enableSIPLogs :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LoggingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'enableMediaMetricLogs', 'loggingConfiguration_enableMediaMetricLogs' - Boolean that enables the logging of Voice Connector metrics to
+-- Cloudwatch.
+--
+-- 'enableSIPLogs', 'loggingConfiguration_enableSIPLogs' - When true, enables SIP message logs for sending to Amazon CloudWatch
+-- Logs.
+newLoggingConfiguration ::
+  LoggingConfiguration
+newLoggingConfiguration =
+  LoggingConfiguration'
+    { enableMediaMetricLogs =
+        Prelude.Nothing,
+      enableSIPLogs = Prelude.Nothing
+    }
+
+-- | Boolean that enables the logging of Voice Connector metrics to
+-- Cloudwatch.
+loggingConfiguration_enableMediaMetricLogs :: Lens.Lens' LoggingConfiguration (Prelude.Maybe Prelude.Bool)
+loggingConfiguration_enableMediaMetricLogs = Lens.lens (\LoggingConfiguration' {enableMediaMetricLogs} -> enableMediaMetricLogs) (\s@LoggingConfiguration' {} a -> s {enableMediaMetricLogs = a} :: LoggingConfiguration)
+
+-- | When true, enables SIP message logs for sending to Amazon CloudWatch
+-- Logs.
+loggingConfiguration_enableSIPLogs :: Lens.Lens' LoggingConfiguration (Prelude.Maybe Prelude.Bool)
+loggingConfiguration_enableSIPLogs = Lens.lens (\LoggingConfiguration' {enableSIPLogs} -> enableSIPLogs) (\s@LoggingConfiguration' {} a -> s {enableSIPLogs = a} :: LoggingConfiguration)
+
+instance Data.FromJSON LoggingConfiguration where
+  parseJSON =
+    Data.withObject
+      "LoggingConfiguration"
+      ( \x ->
+          LoggingConfiguration'
+            Prelude.<$> (x Data..:? "EnableMediaMetricLogs")
+            Prelude.<*> (x Data..:? "EnableSIPLogs")
+      )
+
+instance Prelude.Hashable LoggingConfiguration where
+  hashWithSalt _salt LoggingConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` enableMediaMetricLogs
+      `Prelude.hashWithSalt` enableSIPLogs
+
+instance Prelude.NFData LoggingConfiguration where
+  rnf LoggingConfiguration' {..} =
+    Prelude.rnf enableMediaMetricLogs
+      `Prelude.seq` Prelude.rnf enableSIPLogs
+
+instance Data.ToJSON LoggingConfiguration where
+  toJSON LoggingConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("EnableMediaMetricLogs" Data..=)
+              Prelude.<$> enableMediaMetricLogs,
+            ("EnableSIPLogs" Data..=) Prelude.<$> enableSIPLogs
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/MediaCapturePipeline.hs b/gen/Amazonka/Chime/Types/MediaCapturePipeline.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/MediaCapturePipeline.hs
@@ -0,0 +1,183 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.MediaCapturePipeline
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.MediaCapturePipeline where
+
+import Amazonka.Chime.Types.ChimeSdkMeetingConfiguration
+import Amazonka.Chime.Types.MediaPipelineSinkType
+import Amazonka.Chime.Types.MediaPipelineSourceType
+import Amazonka.Chime.Types.MediaPipelineStatus
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A media capture pipeline object consisting of an ID, source type, source
+-- ARN, a sink type, a sink ARN, and a configuration object.
+--
+-- /See:/ 'newMediaCapturePipeline' smart constructor.
+data MediaCapturePipeline = MediaCapturePipeline'
+  { -- | The configuration for a specified media capture pipeline. @SourceType@
+    -- must be @ChimeSdkMeeting@.
+    chimeSdkMeetingConfiguration :: Prelude.Maybe ChimeSdkMeetingConfiguration,
+    -- | The time at which the capture pipeline was created, in ISO 8601 format.
+    createdTimestamp :: Prelude.Maybe Data.ISO8601,
+    -- | The ID of a media capture pipeline.
+    mediaPipelineId :: Prelude.Maybe Prelude.Text,
+    -- | ARN of the destination to which the media artifacts are saved.
+    sinkArn :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | Destination type to which the media artifacts are saved. You must use an
+    -- S3 Bucket.
+    sinkType :: Prelude.Maybe MediaPipelineSinkType,
+    -- | ARN of the source from which the media artifacts will be saved.
+    sourceArn :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | Source type from which media artifacts are saved. You must use
+    -- @ChimeMeeting@.
+    sourceType :: Prelude.Maybe MediaPipelineSourceType,
+    -- | The status of the media capture pipeline.
+    status :: Prelude.Maybe MediaPipelineStatus,
+    -- | The time at which the capture pipeline was updated, in ISO 8601 format.
+    updatedTimestamp :: Prelude.Maybe Data.ISO8601
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MediaCapturePipeline' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chimeSdkMeetingConfiguration', 'mediaCapturePipeline_chimeSdkMeetingConfiguration' - The configuration for a specified media capture pipeline. @SourceType@
+-- must be @ChimeSdkMeeting@.
+--
+-- 'createdTimestamp', 'mediaCapturePipeline_createdTimestamp' - The time at which the capture pipeline was created, in ISO 8601 format.
+--
+-- 'mediaPipelineId', 'mediaCapturePipeline_mediaPipelineId' - The ID of a media capture pipeline.
+--
+-- 'sinkArn', 'mediaCapturePipeline_sinkArn' - ARN of the destination to which the media artifacts are saved.
+--
+-- 'sinkType', 'mediaCapturePipeline_sinkType' - Destination type to which the media artifacts are saved. You must use an
+-- S3 Bucket.
+--
+-- 'sourceArn', 'mediaCapturePipeline_sourceArn' - ARN of the source from which the media artifacts will be saved.
+--
+-- 'sourceType', 'mediaCapturePipeline_sourceType' - Source type from which media artifacts are saved. You must use
+-- @ChimeMeeting@.
+--
+-- 'status', 'mediaCapturePipeline_status' - The status of the media capture pipeline.
+--
+-- 'updatedTimestamp', 'mediaCapturePipeline_updatedTimestamp' - The time at which the capture pipeline was updated, in ISO 8601 format.
+newMediaCapturePipeline ::
+  MediaCapturePipeline
+newMediaCapturePipeline =
+  MediaCapturePipeline'
+    { chimeSdkMeetingConfiguration =
+        Prelude.Nothing,
+      createdTimestamp = Prelude.Nothing,
+      mediaPipelineId = Prelude.Nothing,
+      sinkArn = Prelude.Nothing,
+      sinkType = Prelude.Nothing,
+      sourceArn = Prelude.Nothing,
+      sourceType = Prelude.Nothing,
+      status = Prelude.Nothing,
+      updatedTimestamp = Prelude.Nothing
+    }
+
+-- | The configuration for a specified media capture pipeline. @SourceType@
+-- must be @ChimeSdkMeeting@.
+mediaCapturePipeline_chimeSdkMeetingConfiguration :: Lens.Lens' MediaCapturePipeline (Prelude.Maybe ChimeSdkMeetingConfiguration)
+mediaCapturePipeline_chimeSdkMeetingConfiguration = Lens.lens (\MediaCapturePipeline' {chimeSdkMeetingConfiguration} -> chimeSdkMeetingConfiguration) (\s@MediaCapturePipeline' {} a -> s {chimeSdkMeetingConfiguration = a} :: MediaCapturePipeline)
+
+-- | The time at which the capture pipeline was created, in ISO 8601 format.
+mediaCapturePipeline_createdTimestamp :: Lens.Lens' MediaCapturePipeline (Prelude.Maybe Prelude.UTCTime)
+mediaCapturePipeline_createdTimestamp = Lens.lens (\MediaCapturePipeline' {createdTimestamp} -> createdTimestamp) (\s@MediaCapturePipeline' {} a -> s {createdTimestamp = a} :: MediaCapturePipeline) Prelude.. Lens.mapping Data._Time
+
+-- | The ID of a media capture pipeline.
+mediaCapturePipeline_mediaPipelineId :: Lens.Lens' MediaCapturePipeline (Prelude.Maybe Prelude.Text)
+mediaCapturePipeline_mediaPipelineId = Lens.lens (\MediaCapturePipeline' {mediaPipelineId} -> mediaPipelineId) (\s@MediaCapturePipeline' {} a -> s {mediaPipelineId = a} :: MediaCapturePipeline)
+
+-- | ARN of the destination to which the media artifacts are saved.
+mediaCapturePipeline_sinkArn :: Lens.Lens' MediaCapturePipeline (Prelude.Maybe Prelude.Text)
+mediaCapturePipeline_sinkArn = Lens.lens (\MediaCapturePipeline' {sinkArn} -> sinkArn) (\s@MediaCapturePipeline' {} a -> s {sinkArn = a} :: MediaCapturePipeline) Prelude.. Lens.mapping Data._Sensitive
+
+-- | Destination type to which the media artifacts are saved. You must use an
+-- S3 Bucket.
+mediaCapturePipeline_sinkType :: Lens.Lens' MediaCapturePipeline (Prelude.Maybe MediaPipelineSinkType)
+mediaCapturePipeline_sinkType = Lens.lens (\MediaCapturePipeline' {sinkType} -> sinkType) (\s@MediaCapturePipeline' {} a -> s {sinkType = a} :: MediaCapturePipeline)
+
+-- | ARN of the source from which the media artifacts will be saved.
+mediaCapturePipeline_sourceArn :: Lens.Lens' MediaCapturePipeline (Prelude.Maybe Prelude.Text)
+mediaCapturePipeline_sourceArn = Lens.lens (\MediaCapturePipeline' {sourceArn} -> sourceArn) (\s@MediaCapturePipeline' {} a -> s {sourceArn = a} :: MediaCapturePipeline) Prelude.. Lens.mapping Data._Sensitive
+
+-- | Source type from which media artifacts are saved. You must use
+-- @ChimeMeeting@.
+mediaCapturePipeline_sourceType :: Lens.Lens' MediaCapturePipeline (Prelude.Maybe MediaPipelineSourceType)
+mediaCapturePipeline_sourceType = Lens.lens (\MediaCapturePipeline' {sourceType} -> sourceType) (\s@MediaCapturePipeline' {} a -> s {sourceType = a} :: MediaCapturePipeline)
+
+-- | The status of the media capture pipeline.
+mediaCapturePipeline_status :: Lens.Lens' MediaCapturePipeline (Prelude.Maybe MediaPipelineStatus)
+mediaCapturePipeline_status = Lens.lens (\MediaCapturePipeline' {status} -> status) (\s@MediaCapturePipeline' {} a -> s {status = a} :: MediaCapturePipeline)
+
+-- | The time at which the capture pipeline was updated, in ISO 8601 format.
+mediaCapturePipeline_updatedTimestamp :: Lens.Lens' MediaCapturePipeline (Prelude.Maybe Prelude.UTCTime)
+mediaCapturePipeline_updatedTimestamp = Lens.lens (\MediaCapturePipeline' {updatedTimestamp} -> updatedTimestamp) (\s@MediaCapturePipeline' {} a -> s {updatedTimestamp = a} :: MediaCapturePipeline) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON MediaCapturePipeline where
+  parseJSON =
+    Data.withObject
+      "MediaCapturePipeline"
+      ( \x ->
+          MediaCapturePipeline'
+            Prelude.<$> (x Data..:? "ChimeSdkMeetingConfiguration")
+            Prelude.<*> (x Data..:? "CreatedTimestamp")
+            Prelude.<*> (x Data..:? "MediaPipelineId")
+            Prelude.<*> (x Data..:? "SinkArn")
+            Prelude.<*> (x Data..:? "SinkType")
+            Prelude.<*> (x Data..:? "SourceArn")
+            Prelude.<*> (x Data..:? "SourceType")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "UpdatedTimestamp")
+      )
+
+instance Prelude.Hashable MediaCapturePipeline where
+  hashWithSalt _salt MediaCapturePipeline' {..} =
+    _salt
+      `Prelude.hashWithSalt` chimeSdkMeetingConfiguration
+      `Prelude.hashWithSalt` createdTimestamp
+      `Prelude.hashWithSalt` mediaPipelineId
+      `Prelude.hashWithSalt` sinkArn
+      `Prelude.hashWithSalt` sinkType
+      `Prelude.hashWithSalt` sourceArn
+      `Prelude.hashWithSalt` sourceType
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` updatedTimestamp
+
+instance Prelude.NFData MediaCapturePipeline where
+  rnf MediaCapturePipeline' {..} =
+    Prelude.rnf chimeSdkMeetingConfiguration
+      `Prelude.seq` Prelude.rnf createdTimestamp
+      `Prelude.seq` Prelude.rnf mediaPipelineId
+      `Prelude.seq` Prelude.rnf sinkArn
+      `Prelude.seq` Prelude.rnf sinkType
+      `Prelude.seq` Prelude.rnf sourceArn
+      `Prelude.seq` Prelude.rnf sourceType
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf updatedTimestamp
diff --git a/gen/Amazonka/Chime/Types/MediaPipelineSinkType.hs b/gen/Amazonka/Chime/Types/MediaPipelineSinkType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/MediaPipelineSinkType.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.MediaPipelineSinkType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.MediaPipelineSinkType
+  ( MediaPipelineSinkType
+      ( ..,
+        MediaPipelineSinkType_S3Bucket
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype MediaPipelineSinkType = MediaPipelineSinkType'
+  { fromMediaPipelineSinkType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MediaPipelineSinkType_S3Bucket :: MediaPipelineSinkType
+pattern MediaPipelineSinkType_S3Bucket = MediaPipelineSinkType' "S3Bucket"
+
+{-# COMPLETE
+  MediaPipelineSinkType_S3Bucket,
+  MediaPipelineSinkType'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/MediaPipelineSourceType.hs b/gen/Amazonka/Chime/Types/MediaPipelineSourceType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/MediaPipelineSourceType.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.MediaPipelineSourceType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.MediaPipelineSourceType
+  ( MediaPipelineSourceType
+      ( ..,
+        MediaPipelineSourceType_ChimeSdkMeeting
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype MediaPipelineSourceType = MediaPipelineSourceType'
+  { fromMediaPipelineSourceType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MediaPipelineSourceType_ChimeSdkMeeting :: MediaPipelineSourceType
+pattern MediaPipelineSourceType_ChimeSdkMeeting = MediaPipelineSourceType' "ChimeSdkMeeting"
+
+{-# COMPLETE
+  MediaPipelineSourceType_ChimeSdkMeeting,
+  MediaPipelineSourceType'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/MediaPipelineStatus.hs b/gen/Amazonka/Chime/Types/MediaPipelineStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/MediaPipelineStatus.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.MediaPipelineStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.MediaPipelineStatus
+  ( MediaPipelineStatus
+      ( ..,
+        MediaPipelineStatus_Failed,
+        MediaPipelineStatus_InProgress,
+        MediaPipelineStatus_Initializing,
+        MediaPipelineStatus_Stopped,
+        MediaPipelineStatus_Stopping
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype MediaPipelineStatus = MediaPipelineStatus'
+  { fromMediaPipelineStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MediaPipelineStatus_Failed :: MediaPipelineStatus
+pattern MediaPipelineStatus_Failed = MediaPipelineStatus' "Failed"
+
+pattern MediaPipelineStatus_InProgress :: MediaPipelineStatus
+pattern MediaPipelineStatus_InProgress = MediaPipelineStatus' "InProgress"
+
+pattern MediaPipelineStatus_Initializing :: MediaPipelineStatus
+pattern MediaPipelineStatus_Initializing = MediaPipelineStatus' "Initializing"
+
+pattern MediaPipelineStatus_Stopped :: MediaPipelineStatus
+pattern MediaPipelineStatus_Stopped = MediaPipelineStatus' "Stopped"
+
+pattern MediaPipelineStatus_Stopping :: MediaPipelineStatus
+pattern MediaPipelineStatus_Stopping = MediaPipelineStatus' "Stopping"
+
+{-# COMPLETE
+  MediaPipelineStatus_Failed,
+  MediaPipelineStatus_InProgress,
+  MediaPipelineStatus_Initializing,
+  MediaPipelineStatus_Stopped,
+  MediaPipelineStatus_Stopping,
+  MediaPipelineStatus'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/MediaPlacement.hs b/gen/Amazonka/Chime/Types/MediaPlacement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/MediaPlacement.hs
@@ -0,0 +1,157 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.MediaPlacement
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.MediaPlacement where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A set of endpoints used by clients to connect to the media service group
+-- for an Amazon Chime SDK meeting.
+--
+-- /See:/ 'newMediaPlacement' smart constructor.
+data MediaPlacement = MediaPlacement'
+  { -- | The audio fallback URL.
+    audioFallbackUrl :: Prelude.Maybe Prelude.Text,
+    -- | The audio host URL.
+    audioHostUrl :: Prelude.Maybe Prelude.Text,
+    -- | The event ingestion URL to which you send client meeting events.
+    eventIngestionUrl :: Prelude.Maybe Prelude.Text,
+    -- | The screen data URL.
+    screenDataUrl :: Prelude.Maybe Prelude.Text,
+    -- | The screen sharing URL.
+    screenSharingUrl :: Prelude.Maybe Prelude.Text,
+    -- | The screen viewing URL.
+    screenViewingUrl :: Prelude.Maybe Prelude.Text,
+    -- | The signaling URL.
+    signalingUrl :: Prelude.Maybe Prelude.Text,
+    -- | The turn control URL.
+    turnControlUrl :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MediaPlacement' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'audioFallbackUrl', 'mediaPlacement_audioFallbackUrl' - The audio fallback URL.
+--
+-- 'audioHostUrl', 'mediaPlacement_audioHostUrl' - The audio host URL.
+--
+-- 'eventIngestionUrl', 'mediaPlacement_eventIngestionUrl' - The event ingestion URL to which you send client meeting events.
+--
+-- 'screenDataUrl', 'mediaPlacement_screenDataUrl' - The screen data URL.
+--
+-- 'screenSharingUrl', 'mediaPlacement_screenSharingUrl' - The screen sharing URL.
+--
+-- 'screenViewingUrl', 'mediaPlacement_screenViewingUrl' - The screen viewing URL.
+--
+-- 'signalingUrl', 'mediaPlacement_signalingUrl' - The signaling URL.
+--
+-- 'turnControlUrl', 'mediaPlacement_turnControlUrl' - The turn control URL.
+newMediaPlacement ::
+  MediaPlacement
+newMediaPlacement =
+  MediaPlacement'
+    { audioFallbackUrl = Prelude.Nothing,
+      audioHostUrl = Prelude.Nothing,
+      eventIngestionUrl = Prelude.Nothing,
+      screenDataUrl = Prelude.Nothing,
+      screenSharingUrl = Prelude.Nothing,
+      screenViewingUrl = Prelude.Nothing,
+      signalingUrl = Prelude.Nothing,
+      turnControlUrl = Prelude.Nothing
+    }
+
+-- | The audio fallback URL.
+mediaPlacement_audioFallbackUrl :: Lens.Lens' MediaPlacement (Prelude.Maybe Prelude.Text)
+mediaPlacement_audioFallbackUrl = Lens.lens (\MediaPlacement' {audioFallbackUrl} -> audioFallbackUrl) (\s@MediaPlacement' {} a -> s {audioFallbackUrl = a} :: MediaPlacement)
+
+-- | The audio host URL.
+mediaPlacement_audioHostUrl :: Lens.Lens' MediaPlacement (Prelude.Maybe Prelude.Text)
+mediaPlacement_audioHostUrl = Lens.lens (\MediaPlacement' {audioHostUrl} -> audioHostUrl) (\s@MediaPlacement' {} a -> s {audioHostUrl = a} :: MediaPlacement)
+
+-- | The event ingestion URL to which you send client meeting events.
+mediaPlacement_eventIngestionUrl :: Lens.Lens' MediaPlacement (Prelude.Maybe Prelude.Text)
+mediaPlacement_eventIngestionUrl = Lens.lens (\MediaPlacement' {eventIngestionUrl} -> eventIngestionUrl) (\s@MediaPlacement' {} a -> s {eventIngestionUrl = a} :: MediaPlacement)
+
+-- | The screen data URL.
+mediaPlacement_screenDataUrl :: Lens.Lens' MediaPlacement (Prelude.Maybe Prelude.Text)
+mediaPlacement_screenDataUrl = Lens.lens (\MediaPlacement' {screenDataUrl} -> screenDataUrl) (\s@MediaPlacement' {} a -> s {screenDataUrl = a} :: MediaPlacement)
+
+-- | The screen sharing URL.
+mediaPlacement_screenSharingUrl :: Lens.Lens' MediaPlacement (Prelude.Maybe Prelude.Text)
+mediaPlacement_screenSharingUrl = Lens.lens (\MediaPlacement' {screenSharingUrl} -> screenSharingUrl) (\s@MediaPlacement' {} a -> s {screenSharingUrl = a} :: MediaPlacement)
+
+-- | The screen viewing URL.
+mediaPlacement_screenViewingUrl :: Lens.Lens' MediaPlacement (Prelude.Maybe Prelude.Text)
+mediaPlacement_screenViewingUrl = Lens.lens (\MediaPlacement' {screenViewingUrl} -> screenViewingUrl) (\s@MediaPlacement' {} a -> s {screenViewingUrl = a} :: MediaPlacement)
+
+-- | The signaling URL.
+mediaPlacement_signalingUrl :: Lens.Lens' MediaPlacement (Prelude.Maybe Prelude.Text)
+mediaPlacement_signalingUrl = Lens.lens (\MediaPlacement' {signalingUrl} -> signalingUrl) (\s@MediaPlacement' {} a -> s {signalingUrl = a} :: MediaPlacement)
+
+-- | The turn control URL.
+mediaPlacement_turnControlUrl :: Lens.Lens' MediaPlacement (Prelude.Maybe Prelude.Text)
+mediaPlacement_turnControlUrl = Lens.lens (\MediaPlacement' {turnControlUrl} -> turnControlUrl) (\s@MediaPlacement' {} a -> s {turnControlUrl = a} :: MediaPlacement)
+
+instance Data.FromJSON MediaPlacement where
+  parseJSON =
+    Data.withObject
+      "MediaPlacement"
+      ( \x ->
+          MediaPlacement'
+            Prelude.<$> (x Data..:? "AudioFallbackUrl")
+            Prelude.<*> (x Data..:? "AudioHostUrl")
+            Prelude.<*> (x Data..:? "EventIngestionUrl")
+            Prelude.<*> (x Data..:? "ScreenDataUrl")
+            Prelude.<*> (x Data..:? "ScreenSharingUrl")
+            Prelude.<*> (x Data..:? "ScreenViewingUrl")
+            Prelude.<*> (x Data..:? "SignalingUrl")
+            Prelude.<*> (x Data..:? "TurnControlUrl")
+      )
+
+instance Prelude.Hashable MediaPlacement where
+  hashWithSalt _salt MediaPlacement' {..} =
+    _salt
+      `Prelude.hashWithSalt` audioFallbackUrl
+      `Prelude.hashWithSalt` audioHostUrl
+      `Prelude.hashWithSalt` eventIngestionUrl
+      `Prelude.hashWithSalt` screenDataUrl
+      `Prelude.hashWithSalt` screenSharingUrl
+      `Prelude.hashWithSalt` screenViewingUrl
+      `Prelude.hashWithSalt` signalingUrl
+      `Prelude.hashWithSalt` turnControlUrl
+
+instance Prelude.NFData MediaPlacement where
+  rnf MediaPlacement' {..} =
+    Prelude.rnf audioFallbackUrl
+      `Prelude.seq` Prelude.rnf audioHostUrl
+      `Prelude.seq` Prelude.rnf eventIngestionUrl
+      `Prelude.seq` Prelude.rnf screenDataUrl
+      `Prelude.seq` Prelude.rnf screenSharingUrl
+      `Prelude.seq` Prelude.rnf screenViewingUrl
+      `Prelude.seq` Prelude.rnf signalingUrl
+      `Prelude.seq` Prelude.rnf turnControlUrl
diff --git a/gen/Amazonka/Chime/Types/Meeting.hs b/gen/Amazonka/Chime/Types/Meeting.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/Meeting.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.Meeting
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.Meeting where
+
+import Amazonka.Chime.Types.MediaPlacement
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A meeting created using the Amazon Chime SDK.
+--
+-- /See:/ 'newMeeting' smart constructor.
+data Meeting = Meeting'
+  { -- | The external meeting ID.
+    externalMeetingId :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The media placement for the meeting.
+    mediaPlacement :: Prelude.Maybe MediaPlacement,
+    -- | The Region in which you create the meeting. Available values:
+    -- @af-south-1@, @ap-northeast-1@, @ap-northeast-2@, @ap-south-1@,
+    -- @ap-southeast-1@, @ap-southeast-2@, @ca-central-1@, @eu-central-1@,
+    -- @eu-north-1@, @eu-south-1@, @eu-west-1@, @eu-west-2@, @eu-west-3@,
+    -- @sa-east-1@, @us-east-1@, @us-east-2@, @us-west-1@, @us-west-2@.
+    mediaRegion :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Chime SDK meeting ID.
+    meetingId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Meeting' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'externalMeetingId', 'meeting_externalMeetingId' - The external meeting ID.
+--
+-- 'mediaPlacement', 'meeting_mediaPlacement' - The media placement for the meeting.
+--
+-- 'mediaRegion', 'meeting_mediaRegion' - The Region in which you create the meeting. Available values:
+-- @af-south-1@, @ap-northeast-1@, @ap-northeast-2@, @ap-south-1@,
+-- @ap-southeast-1@, @ap-southeast-2@, @ca-central-1@, @eu-central-1@,
+-- @eu-north-1@, @eu-south-1@, @eu-west-1@, @eu-west-2@, @eu-west-3@,
+-- @sa-east-1@, @us-east-1@, @us-east-2@, @us-west-1@, @us-west-2@.
+--
+-- 'meetingId', 'meeting_meetingId' - The Amazon Chime SDK meeting ID.
+newMeeting ::
+  Meeting
+newMeeting =
+  Meeting'
+    { externalMeetingId = Prelude.Nothing,
+      mediaPlacement = Prelude.Nothing,
+      mediaRegion = Prelude.Nothing,
+      meetingId = Prelude.Nothing
+    }
+
+-- | The external meeting ID.
+meeting_externalMeetingId :: Lens.Lens' Meeting (Prelude.Maybe Prelude.Text)
+meeting_externalMeetingId = Lens.lens (\Meeting' {externalMeetingId} -> externalMeetingId) (\s@Meeting' {} a -> s {externalMeetingId = a} :: Meeting) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The media placement for the meeting.
+meeting_mediaPlacement :: Lens.Lens' Meeting (Prelude.Maybe MediaPlacement)
+meeting_mediaPlacement = Lens.lens (\Meeting' {mediaPlacement} -> mediaPlacement) (\s@Meeting' {} a -> s {mediaPlacement = a} :: Meeting)
+
+-- | The Region in which you create the meeting. Available values:
+-- @af-south-1@, @ap-northeast-1@, @ap-northeast-2@, @ap-south-1@,
+-- @ap-southeast-1@, @ap-southeast-2@, @ca-central-1@, @eu-central-1@,
+-- @eu-north-1@, @eu-south-1@, @eu-west-1@, @eu-west-2@, @eu-west-3@,
+-- @sa-east-1@, @us-east-1@, @us-east-2@, @us-west-1@, @us-west-2@.
+meeting_mediaRegion :: Lens.Lens' Meeting (Prelude.Maybe Prelude.Text)
+meeting_mediaRegion = Lens.lens (\Meeting' {mediaRegion} -> mediaRegion) (\s@Meeting' {} a -> s {mediaRegion = a} :: Meeting)
+
+-- | The Amazon Chime SDK meeting ID.
+meeting_meetingId :: Lens.Lens' Meeting (Prelude.Maybe Prelude.Text)
+meeting_meetingId = Lens.lens (\Meeting' {meetingId} -> meetingId) (\s@Meeting' {} a -> s {meetingId = a} :: Meeting)
+
+instance Data.FromJSON Meeting where
+  parseJSON =
+    Data.withObject
+      "Meeting"
+      ( \x ->
+          Meeting'
+            Prelude.<$> (x Data..:? "ExternalMeetingId")
+            Prelude.<*> (x Data..:? "MediaPlacement")
+            Prelude.<*> (x Data..:? "MediaRegion")
+            Prelude.<*> (x Data..:? "MeetingId")
+      )
+
+instance Prelude.Hashable Meeting where
+  hashWithSalt _salt Meeting' {..} =
+    _salt
+      `Prelude.hashWithSalt` externalMeetingId
+      `Prelude.hashWithSalt` mediaPlacement
+      `Prelude.hashWithSalt` mediaRegion
+      `Prelude.hashWithSalt` meetingId
+
+instance Prelude.NFData Meeting where
+  rnf Meeting' {..} =
+    Prelude.rnf externalMeetingId
+      `Prelude.seq` Prelude.rnf mediaPlacement
+      `Prelude.seq` Prelude.rnf mediaRegion
+      `Prelude.seq` Prelude.rnf meetingId
diff --git a/gen/Amazonka/Chime/Types/MeetingNotificationConfiguration.hs b/gen/Amazonka/Chime/Types/MeetingNotificationConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/MeetingNotificationConfiguration.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.MeetingNotificationConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.MeetingNotificationConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The resource target configurations for receiving Amazon Chime SDK
+-- meeting and attendee event notifications. The Amazon Chime SDK supports
+-- resource targets located in the US East (N. Virginia) AWS Region
+-- (@us-east-1@).
+--
+-- /See:/ 'newMeetingNotificationConfiguration' smart constructor.
+data MeetingNotificationConfiguration = MeetingNotificationConfiguration'
+  { -- | The SNS topic ARN.
+    snsTopicArn :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The SQS queue ARN.
+    sqsQueueArn :: Prelude.Maybe (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MeetingNotificationConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'snsTopicArn', 'meetingNotificationConfiguration_snsTopicArn' - The SNS topic ARN.
+--
+-- 'sqsQueueArn', 'meetingNotificationConfiguration_sqsQueueArn' - The SQS queue ARN.
+newMeetingNotificationConfiguration ::
+  MeetingNotificationConfiguration
+newMeetingNotificationConfiguration =
+  MeetingNotificationConfiguration'
+    { snsTopicArn =
+        Prelude.Nothing,
+      sqsQueueArn = Prelude.Nothing
+    }
+
+-- | The SNS topic ARN.
+meetingNotificationConfiguration_snsTopicArn :: Lens.Lens' MeetingNotificationConfiguration (Prelude.Maybe Prelude.Text)
+meetingNotificationConfiguration_snsTopicArn = Lens.lens (\MeetingNotificationConfiguration' {snsTopicArn} -> snsTopicArn) (\s@MeetingNotificationConfiguration' {} a -> s {snsTopicArn = a} :: MeetingNotificationConfiguration) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The SQS queue ARN.
+meetingNotificationConfiguration_sqsQueueArn :: Lens.Lens' MeetingNotificationConfiguration (Prelude.Maybe Prelude.Text)
+meetingNotificationConfiguration_sqsQueueArn = Lens.lens (\MeetingNotificationConfiguration' {sqsQueueArn} -> sqsQueueArn) (\s@MeetingNotificationConfiguration' {} a -> s {sqsQueueArn = a} :: MeetingNotificationConfiguration) Prelude.. Lens.mapping Data._Sensitive
+
+instance
+  Prelude.Hashable
+    MeetingNotificationConfiguration
+  where
+  hashWithSalt
+    _salt
+    MeetingNotificationConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` snsTopicArn
+        `Prelude.hashWithSalt` sqsQueueArn
+
+instance
+  Prelude.NFData
+    MeetingNotificationConfiguration
+  where
+  rnf MeetingNotificationConfiguration' {..} =
+    Prelude.rnf snsTopicArn
+      `Prelude.seq` Prelude.rnf sqsQueueArn
+
+instance Data.ToJSON MeetingNotificationConfiguration where
+  toJSON MeetingNotificationConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SnsTopicArn" Data..=) Prelude.<$> snsTopicArn,
+            ("SqsQueueArn" Data..=) Prelude.<$> sqsQueueArn
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/Member.hs b/gen/Amazonka/Chime/Types/Member.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/Member.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.Member
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.Member where
+
+import Amazonka.Chime.Types.MemberType
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The member details, such as email address, name, member ID, and member
+-- type.
+--
+-- /See:/ 'newMember' smart constructor.
+data Member = Member'
+  { -- | The Amazon Chime account ID.
+    accountId :: Prelude.Maybe Prelude.Text,
+    -- | The member email address.
+    email :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The member name.
+    fullName :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The member ID (user ID or bot ID).
+    memberId :: Prelude.Maybe Prelude.Text,
+    -- | The member type.
+    memberType :: Prelude.Maybe MemberType
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Member' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'member_accountId' - The Amazon Chime account ID.
+--
+-- 'email', 'member_email' - The member email address.
+--
+-- 'fullName', 'member_fullName' - The member name.
+--
+-- 'memberId', 'member_memberId' - The member ID (user ID or bot ID).
+--
+-- 'memberType', 'member_memberType' - The member type.
+newMember ::
+  Member
+newMember =
+  Member'
+    { accountId = Prelude.Nothing,
+      email = Prelude.Nothing,
+      fullName = Prelude.Nothing,
+      memberId = Prelude.Nothing,
+      memberType = Prelude.Nothing
+    }
+
+-- | The Amazon Chime account ID.
+member_accountId :: Lens.Lens' Member (Prelude.Maybe Prelude.Text)
+member_accountId = Lens.lens (\Member' {accountId} -> accountId) (\s@Member' {} a -> s {accountId = a} :: Member)
+
+-- | The member email address.
+member_email :: Lens.Lens' Member (Prelude.Maybe Prelude.Text)
+member_email = Lens.lens (\Member' {email} -> email) (\s@Member' {} a -> s {email = a} :: Member) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The member name.
+member_fullName :: Lens.Lens' Member (Prelude.Maybe Prelude.Text)
+member_fullName = Lens.lens (\Member' {fullName} -> fullName) (\s@Member' {} a -> s {fullName = a} :: Member) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The member ID (user ID or bot ID).
+member_memberId :: Lens.Lens' Member (Prelude.Maybe Prelude.Text)
+member_memberId = Lens.lens (\Member' {memberId} -> memberId) (\s@Member' {} a -> s {memberId = a} :: Member)
+
+-- | The member type.
+member_memberType :: Lens.Lens' Member (Prelude.Maybe MemberType)
+member_memberType = Lens.lens (\Member' {memberType} -> memberType) (\s@Member' {} a -> s {memberType = a} :: Member)
+
+instance Data.FromJSON Member where
+  parseJSON =
+    Data.withObject
+      "Member"
+      ( \x ->
+          Member'
+            Prelude.<$> (x Data..:? "AccountId")
+            Prelude.<*> (x Data..:? "Email")
+            Prelude.<*> (x Data..:? "FullName")
+            Prelude.<*> (x Data..:? "MemberId")
+            Prelude.<*> (x Data..:? "MemberType")
+      )
+
+instance Prelude.Hashable Member where
+  hashWithSalt _salt Member' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` email
+      `Prelude.hashWithSalt` fullName
+      `Prelude.hashWithSalt` memberId
+      `Prelude.hashWithSalt` memberType
+
+instance Prelude.NFData Member where
+  rnf Member' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf email
+      `Prelude.seq` Prelude.rnf fullName
+      `Prelude.seq` Prelude.rnf memberId
+      `Prelude.seq` Prelude.rnf memberType
diff --git a/gen/Amazonka/Chime/Types/MemberError.hs b/gen/Amazonka/Chime/Types/MemberError.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/MemberError.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.MemberError
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.MemberError where
+
+import Amazonka.Chime.Types.ErrorCode
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The list of errors returned when a member action results in an error.
+--
+-- /See:/ 'newMemberError' smart constructor.
+data MemberError = MemberError'
+  { -- | The error code.
+    errorCode :: Prelude.Maybe ErrorCode,
+    -- | The error message.
+    errorMessage :: Prelude.Maybe Prelude.Text,
+    -- | The member ID.
+    memberId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MemberError' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'errorCode', 'memberError_errorCode' - The error code.
+--
+-- 'errorMessage', 'memberError_errorMessage' - The error message.
+--
+-- 'memberId', 'memberError_memberId' - The member ID.
+newMemberError ::
+  MemberError
+newMemberError =
+  MemberError'
+    { errorCode = Prelude.Nothing,
+      errorMessage = Prelude.Nothing,
+      memberId = Prelude.Nothing
+    }
+
+-- | The error code.
+memberError_errorCode :: Lens.Lens' MemberError (Prelude.Maybe ErrorCode)
+memberError_errorCode = Lens.lens (\MemberError' {errorCode} -> errorCode) (\s@MemberError' {} a -> s {errorCode = a} :: MemberError)
+
+-- | The error message.
+memberError_errorMessage :: Lens.Lens' MemberError (Prelude.Maybe Prelude.Text)
+memberError_errorMessage = Lens.lens (\MemberError' {errorMessage} -> errorMessage) (\s@MemberError' {} a -> s {errorMessage = a} :: MemberError)
+
+-- | The member ID.
+memberError_memberId :: Lens.Lens' MemberError (Prelude.Maybe Prelude.Text)
+memberError_memberId = Lens.lens (\MemberError' {memberId} -> memberId) (\s@MemberError' {} a -> s {memberId = a} :: MemberError)
+
+instance Data.FromJSON MemberError where
+  parseJSON =
+    Data.withObject
+      "MemberError"
+      ( \x ->
+          MemberError'
+            Prelude.<$> (x Data..:? "ErrorCode")
+            Prelude.<*> (x Data..:? "ErrorMessage")
+            Prelude.<*> (x Data..:? "MemberId")
+      )
+
+instance Prelude.Hashable MemberError where
+  hashWithSalt _salt MemberError' {..} =
+    _salt
+      `Prelude.hashWithSalt` errorCode
+      `Prelude.hashWithSalt` errorMessage
+      `Prelude.hashWithSalt` memberId
+
+instance Prelude.NFData MemberError where
+  rnf MemberError' {..} =
+    Prelude.rnf errorCode
+      `Prelude.seq` Prelude.rnf errorMessage
+      `Prelude.seq` Prelude.rnf memberId
diff --git a/gen/Amazonka/Chime/Types/MemberType.hs b/gen/Amazonka/Chime/Types/MemberType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/MemberType.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.MemberType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.MemberType
+  ( MemberType
+      ( ..,
+        MemberType_Bot,
+        MemberType_User,
+        MemberType_Webhook
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype MemberType = MemberType'
+  { fromMemberType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MemberType_Bot :: MemberType
+pattern MemberType_Bot = MemberType' "Bot"
+
+pattern MemberType_User :: MemberType
+pattern MemberType_User = MemberType' "User"
+
+pattern MemberType_Webhook :: MemberType
+pattern MemberType_Webhook = MemberType' "Webhook"
+
+{-# COMPLETE
+  MemberType_Bot,
+  MemberType_User,
+  MemberType_Webhook,
+  MemberType'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/MembershipItem.hs b/gen/Amazonka/Chime/Types/MembershipItem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/MembershipItem.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.MembershipItem
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.MembershipItem where
+
+import Amazonka.Chime.Types.RoomMembershipRole
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Membership details, such as member ID and member role.
+--
+-- /See:/ 'newMembershipItem' smart constructor.
+data MembershipItem = MembershipItem'
+  { -- | The member ID.
+    memberId :: Prelude.Maybe Prelude.Text,
+    -- | The member role.
+    role' :: Prelude.Maybe RoomMembershipRole
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MembershipItem' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'memberId', 'membershipItem_memberId' - The member ID.
+--
+-- 'role'', 'membershipItem_role' - The member role.
+newMembershipItem ::
+  MembershipItem
+newMembershipItem =
+  MembershipItem'
+    { memberId = Prelude.Nothing,
+      role' = Prelude.Nothing
+    }
+
+-- | The member ID.
+membershipItem_memberId :: Lens.Lens' MembershipItem (Prelude.Maybe Prelude.Text)
+membershipItem_memberId = Lens.lens (\MembershipItem' {memberId} -> memberId) (\s@MembershipItem' {} a -> s {memberId = a} :: MembershipItem)
+
+-- | The member role.
+membershipItem_role :: Lens.Lens' MembershipItem (Prelude.Maybe RoomMembershipRole)
+membershipItem_role = Lens.lens (\MembershipItem' {role'} -> role') (\s@MembershipItem' {} a -> s {role' = a} :: MembershipItem)
+
+instance Prelude.Hashable MembershipItem where
+  hashWithSalt _salt MembershipItem' {..} =
+    _salt
+      `Prelude.hashWithSalt` memberId
+      `Prelude.hashWithSalt` role'
+
+instance Prelude.NFData MembershipItem where
+  rnf MembershipItem' {..} =
+    Prelude.rnf memberId
+      `Prelude.seq` Prelude.rnf role'
+
+instance Data.ToJSON MembershipItem where
+  toJSON MembershipItem' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MemberId" Data..=) Prelude.<$> memberId,
+            ("Role" Data..=) Prelude.<$> role'
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/MessagingSessionEndpoint.hs b/gen/Amazonka/Chime/Types/MessagingSessionEndpoint.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/MessagingSessionEndpoint.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.MessagingSessionEndpoint
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.MessagingSessionEndpoint where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The websocket endpoint used to connect to Amazon Chime SDK messaging.
+--
+-- /See:/ 'newMessagingSessionEndpoint' smart constructor.
+data MessagingSessionEndpoint = MessagingSessionEndpoint'
+  { -- | The endpoint to which you establish a websocket connection.
+    url :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MessagingSessionEndpoint' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'url', 'messagingSessionEndpoint_url' - The endpoint to which you establish a websocket connection.
+newMessagingSessionEndpoint ::
+  MessagingSessionEndpoint
+newMessagingSessionEndpoint =
+  MessagingSessionEndpoint' {url = Prelude.Nothing}
+
+-- | The endpoint to which you establish a websocket connection.
+messagingSessionEndpoint_url :: Lens.Lens' MessagingSessionEndpoint (Prelude.Maybe Prelude.Text)
+messagingSessionEndpoint_url = Lens.lens (\MessagingSessionEndpoint' {url} -> url) (\s@MessagingSessionEndpoint' {} a -> s {url = a} :: MessagingSessionEndpoint)
+
+instance Data.FromJSON MessagingSessionEndpoint where
+  parseJSON =
+    Data.withObject
+      "MessagingSessionEndpoint"
+      ( \x ->
+          MessagingSessionEndpoint'
+            Prelude.<$> (x Data..:? "Url")
+      )
+
+instance Prelude.Hashable MessagingSessionEndpoint where
+  hashWithSalt _salt MessagingSessionEndpoint' {..} =
+    _salt `Prelude.hashWithSalt` url
+
+instance Prelude.NFData MessagingSessionEndpoint where
+  rnf MessagingSessionEndpoint' {..} = Prelude.rnf url
diff --git a/gen/Amazonka/Chime/Types/NotificationTarget.hs b/gen/Amazonka/Chime/Types/NotificationTarget.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/NotificationTarget.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.NotificationTarget
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.NotificationTarget
+  ( NotificationTarget
+      ( ..,
+        NotificationTarget_EventBridge,
+        NotificationTarget_SNS,
+        NotificationTarget_SQS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype NotificationTarget = NotificationTarget'
+  { fromNotificationTarget ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern NotificationTarget_EventBridge :: NotificationTarget
+pattern NotificationTarget_EventBridge = NotificationTarget' "EventBridge"
+
+pattern NotificationTarget_SNS :: NotificationTarget
+pattern NotificationTarget_SNS = NotificationTarget' "SNS"
+
+pattern NotificationTarget_SQS :: NotificationTarget
+pattern NotificationTarget_SQS = NotificationTarget' "SQS"
+
+{-# COMPLETE
+  NotificationTarget_EventBridge,
+  NotificationTarget_SNS,
+  NotificationTarget_SQS,
+  NotificationTarget'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/NumberSelectionBehavior.hs b/gen/Amazonka/Chime/Types/NumberSelectionBehavior.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/NumberSelectionBehavior.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.NumberSelectionBehavior
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.NumberSelectionBehavior
+  ( NumberSelectionBehavior
+      ( ..,
+        NumberSelectionBehavior_AvoidSticky,
+        NumberSelectionBehavior_PreferSticky
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype NumberSelectionBehavior = NumberSelectionBehavior'
+  { fromNumberSelectionBehavior ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern NumberSelectionBehavior_AvoidSticky :: NumberSelectionBehavior
+pattern NumberSelectionBehavior_AvoidSticky = NumberSelectionBehavior' "AvoidSticky"
+
+pattern NumberSelectionBehavior_PreferSticky :: NumberSelectionBehavior
+pattern NumberSelectionBehavior_PreferSticky = NumberSelectionBehavior' "PreferSticky"
+
+{-# COMPLETE
+  NumberSelectionBehavior_AvoidSticky,
+  NumberSelectionBehavior_PreferSticky,
+  NumberSelectionBehavior'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/OrderedPhoneNumber.hs b/gen/Amazonka/Chime/Types/OrderedPhoneNumber.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/OrderedPhoneNumber.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.OrderedPhoneNumber
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.OrderedPhoneNumber where
+
+import Amazonka.Chime.Types.OrderedPhoneNumberStatus
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A phone number for which an order has been placed.
+--
+-- /See:/ 'newOrderedPhoneNumber' smart constructor.
+data OrderedPhoneNumber = OrderedPhoneNumber'
+  { -- | The phone number, in E.164 format.
+    e164PhoneNumber :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The phone number status.
+    status :: Prelude.Maybe OrderedPhoneNumberStatus
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OrderedPhoneNumber' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'e164PhoneNumber', 'orderedPhoneNumber_e164PhoneNumber' - The phone number, in E.164 format.
+--
+-- 'status', 'orderedPhoneNumber_status' - The phone number status.
+newOrderedPhoneNumber ::
+  OrderedPhoneNumber
+newOrderedPhoneNumber =
+  OrderedPhoneNumber'
+    { e164PhoneNumber =
+        Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+-- | The phone number, in E.164 format.
+orderedPhoneNumber_e164PhoneNumber :: Lens.Lens' OrderedPhoneNumber (Prelude.Maybe Prelude.Text)
+orderedPhoneNumber_e164PhoneNumber = Lens.lens (\OrderedPhoneNumber' {e164PhoneNumber} -> e164PhoneNumber) (\s@OrderedPhoneNumber' {} a -> s {e164PhoneNumber = a} :: OrderedPhoneNumber) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The phone number status.
+orderedPhoneNumber_status :: Lens.Lens' OrderedPhoneNumber (Prelude.Maybe OrderedPhoneNumberStatus)
+orderedPhoneNumber_status = Lens.lens (\OrderedPhoneNumber' {status} -> status) (\s@OrderedPhoneNumber' {} a -> s {status = a} :: OrderedPhoneNumber)
+
+instance Data.FromJSON OrderedPhoneNumber where
+  parseJSON =
+    Data.withObject
+      "OrderedPhoneNumber"
+      ( \x ->
+          OrderedPhoneNumber'
+            Prelude.<$> (x Data..:? "E164PhoneNumber")
+            Prelude.<*> (x Data..:? "Status")
+      )
+
+instance Prelude.Hashable OrderedPhoneNumber where
+  hashWithSalt _salt OrderedPhoneNumber' {..} =
+    _salt
+      `Prelude.hashWithSalt` e164PhoneNumber
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData OrderedPhoneNumber where
+  rnf OrderedPhoneNumber' {..} =
+    Prelude.rnf e164PhoneNumber
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/Chime/Types/OrderedPhoneNumberStatus.hs b/gen/Amazonka/Chime/Types/OrderedPhoneNumberStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/OrderedPhoneNumberStatus.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.OrderedPhoneNumberStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.OrderedPhoneNumberStatus
+  ( OrderedPhoneNumberStatus
+      ( ..,
+        OrderedPhoneNumberStatus_Acquired,
+        OrderedPhoneNumberStatus_Failed,
+        OrderedPhoneNumberStatus_Processing
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype OrderedPhoneNumberStatus = OrderedPhoneNumberStatus'
+  { fromOrderedPhoneNumberStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern OrderedPhoneNumberStatus_Acquired :: OrderedPhoneNumberStatus
+pattern OrderedPhoneNumberStatus_Acquired = OrderedPhoneNumberStatus' "Acquired"
+
+pattern OrderedPhoneNumberStatus_Failed :: OrderedPhoneNumberStatus
+pattern OrderedPhoneNumberStatus_Failed = OrderedPhoneNumberStatus' "Failed"
+
+pattern OrderedPhoneNumberStatus_Processing :: OrderedPhoneNumberStatus
+pattern OrderedPhoneNumberStatus_Processing = OrderedPhoneNumberStatus' "Processing"
+
+{-# COMPLETE
+  OrderedPhoneNumberStatus_Acquired,
+  OrderedPhoneNumberStatus_Failed,
+  OrderedPhoneNumberStatus_Processing,
+  OrderedPhoneNumberStatus'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/Origination.hs b/gen/Amazonka/Chime/Types/Origination.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/Origination.hs
@@ -0,0 +1,110 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.Origination
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.Origination where
+
+import Amazonka.Chime.Types.OriginationRoute
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Origination settings enable your SIP hosts to receive inbound calls
+-- using your Amazon Chime Voice Connector.
+--
+-- The parameters listed below are not required, but you must use at least
+-- one.
+--
+-- /See:/ 'newOrigination' smart constructor.
+data Origination = Origination'
+  { -- | When origination settings are disabled, inbound calls are not enabled
+    -- for your Amazon Chime Voice Connector. This parameter is not required,
+    -- but you must specify this parameter or @Routes@.
+    disabled :: Prelude.Maybe Prelude.Bool,
+    -- | The call distribution properties defined for your SIP hosts. Valid
+    -- range: Minimum value of 1. Maximum value of 20. This parameter is not
+    -- required, but you must specify this parameter or @Disabled@.
+    routes :: Prelude.Maybe [OriginationRoute]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Origination' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'disabled', 'origination_disabled' - When origination settings are disabled, inbound calls are not enabled
+-- for your Amazon Chime Voice Connector. This parameter is not required,
+-- but you must specify this parameter or @Routes@.
+--
+-- 'routes', 'origination_routes' - The call distribution properties defined for your SIP hosts. Valid
+-- range: Minimum value of 1. Maximum value of 20. This parameter is not
+-- required, but you must specify this parameter or @Disabled@.
+newOrigination ::
+  Origination
+newOrigination =
+  Origination'
+    { disabled = Prelude.Nothing,
+      routes = Prelude.Nothing
+    }
+
+-- | When origination settings are disabled, inbound calls are not enabled
+-- for your Amazon Chime Voice Connector. This parameter is not required,
+-- but you must specify this parameter or @Routes@.
+origination_disabled :: Lens.Lens' Origination (Prelude.Maybe Prelude.Bool)
+origination_disabled = Lens.lens (\Origination' {disabled} -> disabled) (\s@Origination' {} a -> s {disabled = a} :: Origination)
+
+-- | The call distribution properties defined for your SIP hosts. Valid
+-- range: Minimum value of 1. Maximum value of 20. This parameter is not
+-- required, but you must specify this parameter or @Disabled@.
+origination_routes :: Lens.Lens' Origination (Prelude.Maybe [OriginationRoute])
+origination_routes = Lens.lens (\Origination' {routes} -> routes) (\s@Origination' {} a -> s {routes = a} :: Origination) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON Origination where
+  parseJSON =
+    Data.withObject
+      "Origination"
+      ( \x ->
+          Origination'
+            Prelude.<$> (x Data..:? "Disabled")
+            Prelude.<*> (x Data..:? "Routes" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable Origination where
+  hashWithSalt _salt Origination' {..} =
+    _salt
+      `Prelude.hashWithSalt` disabled
+      `Prelude.hashWithSalt` routes
+
+instance Prelude.NFData Origination where
+  rnf Origination' {..} =
+    Prelude.rnf disabled
+      `Prelude.seq` Prelude.rnf routes
+
+instance Data.ToJSON Origination where
+  toJSON Origination' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Disabled" Data..=) Prelude.<$> disabled,
+            ("Routes" Data..=) Prelude.<$> routes
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/OriginationRoute.hs b/gen/Amazonka/Chime/Types/OriginationRoute.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/OriginationRoute.hs
@@ -0,0 +1,147 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.OriginationRoute
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.OriginationRoute where
+
+import Amazonka.Chime.Types.OriginationRouteProtocol
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Origination routes define call distribution properties for your SIP
+-- hosts to receive inbound calls using your Amazon Chime Voice Connector.
+-- Limit: Ten origination routes for each Amazon Chime Voice Connector.
+--
+-- The parameters listed below are not required, but you must use at least
+-- one.
+--
+-- /See:/ 'newOriginationRoute' smart constructor.
+data OriginationRoute = OriginationRoute'
+  { -- | The FQDN or IP address to contact for origination traffic.
+    host :: Prelude.Maybe Prelude.Text,
+    -- | The designated origination route port. Defaults to 5060.
+    port :: Prelude.Maybe Prelude.Natural,
+    -- | The priority associated with the host, with 1 being the highest
+    -- priority. Higher priority hosts are attempted first.
+    priority :: Prelude.Maybe Prelude.Natural,
+    -- | The protocol to use for the origination route. Encryption-enabled Amazon
+    -- Chime Voice Connectors use TCP protocol by default.
+    protocol :: Prelude.Maybe OriginationRouteProtocol,
+    -- | The weight associated with the host. If hosts are equal in priority,
+    -- calls are redistributed among them based on their relative weight.
+    weight :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OriginationRoute' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'host', 'originationRoute_host' - The FQDN or IP address to contact for origination traffic.
+--
+-- 'port', 'originationRoute_port' - The designated origination route port. Defaults to 5060.
+--
+-- 'priority', 'originationRoute_priority' - The priority associated with the host, with 1 being the highest
+-- priority. Higher priority hosts are attempted first.
+--
+-- 'protocol', 'originationRoute_protocol' - The protocol to use for the origination route. Encryption-enabled Amazon
+-- Chime Voice Connectors use TCP protocol by default.
+--
+-- 'weight', 'originationRoute_weight' - The weight associated with the host. If hosts are equal in priority,
+-- calls are redistributed among them based on their relative weight.
+newOriginationRoute ::
+  OriginationRoute
+newOriginationRoute =
+  OriginationRoute'
+    { host = Prelude.Nothing,
+      port = Prelude.Nothing,
+      priority = Prelude.Nothing,
+      protocol = Prelude.Nothing,
+      weight = Prelude.Nothing
+    }
+
+-- | The FQDN or IP address to contact for origination traffic.
+originationRoute_host :: Lens.Lens' OriginationRoute (Prelude.Maybe Prelude.Text)
+originationRoute_host = Lens.lens (\OriginationRoute' {host} -> host) (\s@OriginationRoute' {} a -> s {host = a} :: OriginationRoute)
+
+-- | The designated origination route port. Defaults to 5060.
+originationRoute_port :: Lens.Lens' OriginationRoute (Prelude.Maybe Prelude.Natural)
+originationRoute_port = Lens.lens (\OriginationRoute' {port} -> port) (\s@OriginationRoute' {} a -> s {port = a} :: OriginationRoute)
+
+-- | The priority associated with the host, with 1 being the highest
+-- priority. Higher priority hosts are attempted first.
+originationRoute_priority :: Lens.Lens' OriginationRoute (Prelude.Maybe Prelude.Natural)
+originationRoute_priority = Lens.lens (\OriginationRoute' {priority} -> priority) (\s@OriginationRoute' {} a -> s {priority = a} :: OriginationRoute)
+
+-- | The protocol to use for the origination route. Encryption-enabled Amazon
+-- Chime Voice Connectors use TCP protocol by default.
+originationRoute_protocol :: Lens.Lens' OriginationRoute (Prelude.Maybe OriginationRouteProtocol)
+originationRoute_protocol = Lens.lens (\OriginationRoute' {protocol} -> protocol) (\s@OriginationRoute' {} a -> s {protocol = a} :: OriginationRoute)
+
+-- | The weight associated with the host. If hosts are equal in priority,
+-- calls are redistributed among them based on their relative weight.
+originationRoute_weight :: Lens.Lens' OriginationRoute (Prelude.Maybe Prelude.Natural)
+originationRoute_weight = Lens.lens (\OriginationRoute' {weight} -> weight) (\s@OriginationRoute' {} a -> s {weight = a} :: OriginationRoute)
+
+instance Data.FromJSON OriginationRoute where
+  parseJSON =
+    Data.withObject
+      "OriginationRoute"
+      ( \x ->
+          OriginationRoute'
+            Prelude.<$> (x Data..:? "Host")
+            Prelude.<*> (x Data..:? "Port")
+            Prelude.<*> (x Data..:? "Priority")
+            Prelude.<*> (x Data..:? "Protocol")
+            Prelude.<*> (x Data..:? "Weight")
+      )
+
+instance Prelude.Hashable OriginationRoute where
+  hashWithSalt _salt OriginationRoute' {..} =
+    _salt
+      `Prelude.hashWithSalt` host
+      `Prelude.hashWithSalt` port
+      `Prelude.hashWithSalt` priority
+      `Prelude.hashWithSalt` protocol
+      `Prelude.hashWithSalt` weight
+
+instance Prelude.NFData OriginationRoute where
+  rnf OriginationRoute' {..} =
+    Prelude.rnf host
+      `Prelude.seq` Prelude.rnf port
+      `Prelude.seq` Prelude.rnf priority
+      `Prelude.seq` Prelude.rnf protocol
+      `Prelude.seq` Prelude.rnf weight
+
+instance Data.ToJSON OriginationRoute where
+  toJSON OriginationRoute' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Host" Data..=) Prelude.<$> host,
+            ("Port" Data..=) Prelude.<$> port,
+            ("Priority" Data..=) Prelude.<$> priority,
+            ("Protocol" Data..=) Prelude.<$> protocol,
+            ("Weight" Data..=) Prelude.<$> weight
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/OriginationRouteProtocol.hs b/gen/Amazonka/Chime/Types/OriginationRouteProtocol.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/OriginationRouteProtocol.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.OriginationRouteProtocol
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.OriginationRouteProtocol
+  ( OriginationRouteProtocol
+      ( ..,
+        OriginationRouteProtocol_TCP,
+        OriginationRouteProtocol_UDP
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype OriginationRouteProtocol = OriginationRouteProtocol'
+  { fromOriginationRouteProtocol ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern OriginationRouteProtocol_TCP :: OriginationRouteProtocol
+pattern OriginationRouteProtocol_TCP = OriginationRouteProtocol' "TCP"
+
+pattern OriginationRouteProtocol_UDP :: OriginationRouteProtocol
+pattern OriginationRouteProtocol_UDP = OriginationRouteProtocol' "UDP"
+
+{-# COMPLETE
+  OriginationRouteProtocol_TCP,
+  OriginationRouteProtocol_UDP,
+  OriginationRouteProtocol'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/Participant.hs b/gen/Amazonka/Chime/Types/Participant.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/Participant.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.Participant
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.Participant where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The phone number and proxy phone number for a participant in an Amazon
+-- Chime Voice Connector proxy session.
+--
+-- /See:/ 'newParticipant' smart constructor.
+data Participant = Participant'
+  { -- | The participant\'s phone number.
+    phoneNumber :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The participant\'s proxy phone number.
+    proxyPhoneNumber :: Prelude.Maybe (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Participant' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'phoneNumber', 'participant_phoneNumber' - The participant\'s phone number.
+--
+-- 'proxyPhoneNumber', 'participant_proxyPhoneNumber' - The participant\'s proxy phone number.
+newParticipant ::
+  Participant
+newParticipant =
+  Participant'
+    { phoneNumber = Prelude.Nothing,
+      proxyPhoneNumber = Prelude.Nothing
+    }
+
+-- | The participant\'s phone number.
+participant_phoneNumber :: Lens.Lens' Participant (Prelude.Maybe Prelude.Text)
+participant_phoneNumber = Lens.lens (\Participant' {phoneNumber} -> phoneNumber) (\s@Participant' {} a -> s {phoneNumber = a} :: Participant) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The participant\'s proxy phone number.
+participant_proxyPhoneNumber :: Lens.Lens' Participant (Prelude.Maybe Prelude.Text)
+participant_proxyPhoneNumber = Lens.lens (\Participant' {proxyPhoneNumber} -> proxyPhoneNumber) (\s@Participant' {} a -> s {proxyPhoneNumber = a} :: Participant) Prelude.. Lens.mapping Data._Sensitive
+
+instance Data.FromJSON Participant where
+  parseJSON =
+    Data.withObject
+      "Participant"
+      ( \x ->
+          Participant'
+            Prelude.<$> (x Data..:? "PhoneNumber")
+            Prelude.<*> (x Data..:? "ProxyPhoneNumber")
+      )
+
+instance Prelude.Hashable Participant where
+  hashWithSalt _salt Participant' {..} =
+    _salt
+      `Prelude.hashWithSalt` phoneNumber
+      `Prelude.hashWithSalt` proxyPhoneNumber
+
+instance Prelude.NFData Participant where
+  rnf Participant' {..} =
+    Prelude.rnf phoneNumber
+      `Prelude.seq` Prelude.rnf proxyPhoneNumber
diff --git a/gen/Amazonka/Chime/Types/PhoneNumber.hs b/gen/Amazonka/Chime/Types/PhoneNumber.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/PhoneNumber.hs
@@ -0,0 +1,223 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.PhoneNumber
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.PhoneNumber where
+
+import Amazonka.Chime.Types.CallingNameStatus
+import Amazonka.Chime.Types.PhoneNumberAssociation
+import Amazonka.Chime.Types.PhoneNumberCapabilities
+import Amazonka.Chime.Types.PhoneNumberProductType
+import Amazonka.Chime.Types.PhoneNumberStatus
+import Amazonka.Chime.Types.PhoneNumberType
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A phone number used for Amazon Chime Business Calling or an Amazon Chime
+-- Voice Connector.
+--
+-- /See:/ 'newPhoneNumber' smart constructor.
+data PhoneNumber = PhoneNumber'
+  { -- | The phone number associations.
+    associations :: Prelude.Maybe [PhoneNumberAssociation],
+    -- | The outbound calling name associated with the phone number.
+    callingName :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The outbound calling name status.
+    callingNameStatus :: Prelude.Maybe CallingNameStatus,
+    -- | The phone number capabilities.
+    capabilities :: Prelude.Maybe PhoneNumberCapabilities,
+    -- | The phone number country. Format: ISO 3166-1 alpha-2.
+    country :: Prelude.Maybe Prelude.Text,
+    -- | The phone number creation timestamp, in ISO 8601 format.
+    createdTimestamp :: Prelude.Maybe Data.ISO8601,
+    -- | The deleted phone number timestamp, in ISO 8601 format.
+    deletionTimestamp :: Prelude.Maybe Data.ISO8601,
+    -- | The phone number, in E.164 format.
+    e164PhoneNumber :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The phone number ID.
+    phoneNumberId :: Prelude.Maybe Prelude.Text,
+    -- | The phone number product type.
+    productType :: Prelude.Maybe PhoneNumberProductType,
+    -- | The phone number status.
+    status :: Prelude.Maybe PhoneNumberStatus,
+    -- | The phone number type.
+    type' :: Prelude.Maybe PhoneNumberType,
+    -- | The updated phone number timestamp, in ISO 8601 format.
+    updatedTimestamp :: Prelude.Maybe Data.ISO8601
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PhoneNumber' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'associations', 'phoneNumber_associations' - The phone number associations.
+--
+-- 'callingName', 'phoneNumber_callingName' - The outbound calling name associated with the phone number.
+--
+-- 'callingNameStatus', 'phoneNumber_callingNameStatus' - The outbound calling name status.
+--
+-- 'capabilities', 'phoneNumber_capabilities' - The phone number capabilities.
+--
+-- 'country', 'phoneNumber_country' - The phone number country. Format: ISO 3166-1 alpha-2.
+--
+-- 'createdTimestamp', 'phoneNumber_createdTimestamp' - The phone number creation timestamp, in ISO 8601 format.
+--
+-- 'deletionTimestamp', 'phoneNumber_deletionTimestamp' - The deleted phone number timestamp, in ISO 8601 format.
+--
+-- 'e164PhoneNumber', 'phoneNumber_e164PhoneNumber' - The phone number, in E.164 format.
+--
+-- 'phoneNumberId', 'phoneNumber_phoneNumberId' - The phone number ID.
+--
+-- 'productType', 'phoneNumber_productType' - The phone number product type.
+--
+-- 'status', 'phoneNumber_status' - The phone number status.
+--
+-- 'type'', 'phoneNumber_type' - The phone number type.
+--
+-- 'updatedTimestamp', 'phoneNumber_updatedTimestamp' - The updated phone number timestamp, in ISO 8601 format.
+newPhoneNumber ::
+  PhoneNumber
+newPhoneNumber =
+  PhoneNumber'
+    { associations = Prelude.Nothing,
+      callingName = Prelude.Nothing,
+      callingNameStatus = Prelude.Nothing,
+      capabilities = Prelude.Nothing,
+      country = Prelude.Nothing,
+      createdTimestamp = Prelude.Nothing,
+      deletionTimestamp = Prelude.Nothing,
+      e164PhoneNumber = Prelude.Nothing,
+      phoneNumberId = Prelude.Nothing,
+      productType = Prelude.Nothing,
+      status = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      updatedTimestamp = Prelude.Nothing
+    }
+
+-- | The phone number associations.
+phoneNumber_associations :: Lens.Lens' PhoneNumber (Prelude.Maybe [PhoneNumberAssociation])
+phoneNumber_associations = Lens.lens (\PhoneNumber' {associations} -> associations) (\s@PhoneNumber' {} a -> s {associations = a} :: PhoneNumber) Prelude.. Lens.mapping Lens.coerced
+
+-- | The outbound calling name associated with the phone number.
+phoneNumber_callingName :: Lens.Lens' PhoneNumber (Prelude.Maybe Prelude.Text)
+phoneNumber_callingName = Lens.lens (\PhoneNumber' {callingName} -> callingName) (\s@PhoneNumber' {} a -> s {callingName = a} :: PhoneNumber) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The outbound calling name status.
+phoneNumber_callingNameStatus :: Lens.Lens' PhoneNumber (Prelude.Maybe CallingNameStatus)
+phoneNumber_callingNameStatus = Lens.lens (\PhoneNumber' {callingNameStatus} -> callingNameStatus) (\s@PhoneNumber' {} a -> s {callingNameStatus = a} :: PhoneNumber)
+
+-- | The phone number capabilities.
+phoneNumber_capabilities :: Lens.Lens' PhoneNumber (Prelude.Maybe PhoneNumberCapabilities)
+phoneNumber_capabilities = Lens.lens (\PhoneNumber' {capabilities} -> capabilities) (\s@PhoneNumber' {} a -> s {capabilities = a} :: PhoneNumber)
+
+-- | The phone number country. Format: ISO 3166-1 alpha-2.
+phoneNumber_country :: Lens.Lens' PhoneNumber (Prelude.Maybe Prelude.Text)
+phoneNumber_country = Lens.lens (\PhoneNumber' {country} -> country) (\s@PhoneNumber' {} a -> s {country = a} :: PhoneNumber)
+
+-- | The phone number creation timestamp, in ISO 8601 format.
+phoneNumber_createdTimestamp :: Lens.Lens' PhoneNumber (Prelude.Maybe Prelude.UTCTime)
+phoneNumber_createdTimestamp = Lens.lens (\PhoneNumber' {createdTimestamp} -> createdTimestamp) (\s@PhoneNumber' {} a -> s {createdTimestamp = a} :: PhoneNumber) Prelude.. Lens.mapping Data._Time
+
+-- | The deleted phone number timestamp, in ISO 8601 format.
+phoneNumber_deletionTimestamp :: Lens.Lens' PhoneNumber (Prelude.Maybe Prelude.UTCTime)
+phoneNumber_deletionTimestamp = Lens.lens (\PhoneNumber' {deletionTimestamp} -> deletionTimestamp) (\s@PhoneNumber' {} a -> s {deletionTimestamp = a} :: PhoneNumber) Prelude.. Lens.mapping Data._Time
+
+-- | The phone number, in E.164 format.
+phoneNumber_e164PhoneNumber :: Lens.Lens' PhoneNumber (Prelude.Maybe Prelude.Text)
+phoneNumber_e164PhoneNumber = Lens.lens (\PhoneNumber' {e164PhoneNumber} -> e164PhoneNumber) (\s@PhoneNumber' {} a -> s {e164PhoneNumber = a} :: PhoneNumber) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The phone number ID.
+phoneNumber_phoneNumberId :: Lens.Lens' PhoneNumber (Prelude.Maybe Prelude.Text)
+phoneNumber_phoneNumberId = Lens.lens (\PhoneNumber' {phoneNumberId} -> phoneNumberId) (\s@PhoneNumber' {} a -> s {phoneNumberId = a} :: PhoneNumber)
+
+-- | The phone number product type.
+phoneNumber_productType :: Lens.Lens' PhoneNumber (Prelude.Maybe PhoneNumberProductType)
+phoneNumber_productType = Lens.lens (\PhoneNumber' {productType} -> productType) (\s@PhoneNumber' {} a -> s {productType = a} :: PhoneNumber)
+
+-- | The phone number status.
+phoneNumber_status :: Lens.Lens' PhoneNumber (Prelude.Maybe PhoneNumberStatus)
+phoneNumber_status = Lens.lens (\PhoneNumber' {status} -> status) (\s@PhoneNumber' {} a -> s {status = a} :: PhoneNumber)
+
+-- | The phone number type.
+phoneNumber_type :: Lens.Lens' PhoneNumber (Prelude.Maybe PhoneNumberType)
+phoneNumber_type = Lens.lens (\PhoneNumber' {type'} -> type') (\s@PhoneNumber' {} a -> s {type' = a} :: PhoneNumber)
+
+-- | The updated phone number timestamp, in ISO 8601 format.
+phoneNumber_updatedTimestamp :: Lens.Lens' PhoneNumber (Prelude.Maybe Prelude.UTCTime)
+phoneNumber_updatedTimestamp = Lens.lens (\PhoneNumber' {updatedTimestamp} -> updatedTimestamp) (\s@PhoneNumber' {} a -> s {updatedTimestamp = a} :: PhoneNumber) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON PhoneNumber where
+  parseJSON =
+    Data.withObject
+      "PhoneNumber"
+      ( \x ->
+          PhoneNumber'
+            Prelude.<$> (x Data..:? "Associations" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "CallingName")
+            Prelude.<*> (x Data..:? "CallingNameStatus")
+            Prelude.<*> (x Data..:? "Capabilities")
+            Prelude.<*> (x Data..:? "Country")
+            Prelude.<*> (x Data..:? "CreatedTimestamp")
+            Prelude.<*> (x Data..:? "DeletionTimestamp")
+            Prelude.<*> (x Data..:? "E164PhoneNumber")
+            Prelude.<*> (x Data..:? "PhoneNumberId")
+            Prelude.<*> (x Data..:? "ProductType")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "Type")
+            Prelude.<*> (x Data..:? "UpdatedTimestamp")
+      )
+
+instance Prelude.Hashable PhoneNumber where
+  hashWithSalt _salt PhoneNumber' {..} =
+    _salt
+      `Prelude.hashWithSalt` associations
+      `Prelude.hashWithSalt` callingName
+      `Prelude.hashWithSalt` callingNameStatus
+      `Prelude.hashWithSalt` capabilities
+      `Prelude.hashWithSalt` country
+      `Prelude.hashWithSalt` createdTimestamp
+      `Prelude.hashWithSalt` deletionTimestamp
+      `Prelude.hashWithSalt` e164PhoneNumber
+      `Prelude.hashWithSalt` phoneNumberId
+      `Prelude.hashWithSalt` productType
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` updatedTimestamp
+
+instance Prelude.NFData PhoneNumber where
+  rnf PhoneNumber' {..} =
+    Prelude.rnf associations
+      `Prelude.seq` Prelude.rnf callingName
+      `Prelude.seq` Prelude.rnf callingNameStatus
+      `Prelude.seq` Prelude.rnf capabilities
+      `Prelude.seq` Prelude.rnf country
+      `Prelude.seq` Prelude.rnf createdTimestamp
+      `Prelude.seq` Prelude.rnf deletionTimestamp
+      `Prelude.seq` Prelude.rnf e164PhoneNumber
+      `Prelude.seq` Prelude.rnf phoneNumberId
+      `Prelude.seq` Prelude.rnf productType
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf updatedTimestamp
diff --git a/gen/Amazonka/Chime/Types/PhoneNumberAssociation.hs b/gen/Amazonka/Chime/Types/PhoneNumberAssociation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/PhoneNumberAssociation.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.PhoneNumberAssociation
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.PhoneNumberAssociation where
+
+import Amazonka.Chime.Types.PhoneNumberAssociationName
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The phone number associations, such as Amazon Chime account ID, Amazon
+-- Chime user ID, Amazon Chime Voice Connector ID, or Amazon Chime Voice
+-- Connector group ID.
+--
+-- /See:/ 'newPhoneNumberAssociation' smart constructor.
+data PhoneNumberAssociation = PhoneNumberAssociation'
+  { -- | The timestamp of the phone number association, in ISO 8601 format.
+    associatedTimestamp :: Prelude.Maybe Data.ISO8601,
+    -- | Defines the association with an Amazon Chime account ID, user ID, Amazon
+    -- Chime Voice Connector ID, or Amazon Chime Voice Connector group ID.
+    name :: Prelude.Maybe PhoneNumberAssociationName,
+    -- | Contains the ID for the entity specified in Name.
+    value :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PhoneNumberAssociation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'associatedTimestamp', 'phoneNumberAssociation_associatedTimestamp' - The timestamp of the phone number association, in ISO 8601 format.
+--
+-- 'name', 'phoneNumberAssociation_name' - Defines the association with an Amazon Chime account ID, user ID, Amazon
+-- Chime Voice Connector ID, or Amazon Chime Voice Connector group ID.
+--
+-- 'value', 'phoneNumberAssociation_value' - Contains the ID for the entity specified in Name.
+newPhoneNumberAssociation ::
+  PhoneNumberAssociation
+newPhoneNumberAssociation =
+  PhoneNumberAssociation'
+    { associatedTimestamp =
+        Prelude.Nothing,
+      name = Prelude.Nothing,
+      value = Prelude.Nothing
+    }
+
+-- | The timestamp of the phone number association, in ISO 8601 format.
+phoneNumberAssociation_associatedTimestamp :: Lens.Lens' PhoneNumberAssociation (Prelude.Maybe Prelude.UTCTime)
+phoneNumberAssociation_associatedTimestamp = Lens.lens (\PhoneNumberAssociation' {associatedTimestamp} -> associatedTimestamp) (\s@PhoneNumberAssociation' {} a -> s {associatedTimestamp = a} :: PhoneNumberAssociation) Prelude.. Lens.mapping Data._Time
+
+-- | Defines the association with an Amazon Chime account ID, user ID, Amazon
+-- Chime Voice Connector ID, or Amazon Chime Voice Connector group ID.
+phoneNumberAssociation_name :: Lens.Lens' PhoneNumberAssociation (Prelude.Maybe PhoneNumberAssociationName)
+phoneNumberAssociation_name = Lens.lens (\PhoneNumberAssociation' {name} -> name) (\s@PhoneNumberAssociation' {} a -> s {name = a} :: PhoneNumberAssociation)
+
+-- | Contains the ID for the entity specified in Name.
+phoneNumberAssociation_value :: Lens.Lens' PhoneNumberAssociation (Prelude.Maybe Prelude.Text)
+phoneNumberAssociation_value = Lens.lens (\PhoneNumberAssociation' {value} -> value) (\s@PhoneNumberAssociation' {} a -> s {value = a} :: PhoneNumberAssociation)
+
+instance Data.FromJSON PhoneNumberAssociation where
+  parseJSON =
+    Data.withObject
+      "PhoneNumberAssociation"
+      ( \x ->
+          PhoneNumberAssociation'
+            Prelude.<$> (x Data..:? "AssociatedTimestamp")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "Value")
+      )
+
+instance Prelude.Hashable PhoneNumberAssociation where
+  hashWithSalt _salt PhoneNumberAssociation' {..} =
+    _salt
+      `Prelude.hashWithSalt` associatedTimestamp
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData PhoneNumberAssociation where
+  rnf PhoneNumberAssociation' {..} =
+    Prelude.rnf associatedTimestamp
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf value
diff --git a/gen/Amazonka/Chime/Types/PhoneNumberAssociationName.hs b/gen/Amazonka/Chime/Types/PhoneNumberAssociationName.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/PhoneNumberAssociationName.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.PhoneNumberAssociationName
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.PhoneNumberAssociationName
+  ( PhoneNumberAssociationName
+      ( ..,
+        PhoneNumberAssociationName_AccountId,
+        PhoneNumberAssociationName_SipRuleId,
+        PhoneNumberAssociationName_UserId,
+        PhoneNumberAssociationName_VoiceConnectorGroupId,
+        PhoneNumberAssociationName_VoiceConnectorId
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PhoneNumberAssociationName = PhoneNumberAssociationName'
+  { fromPhoneNumberAssociationName ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern PhoneNumberAssociationName_AccountId :: PhoneNumberAssociationName
+pattern PhoneNumberAssociationName_AccountId = PhoneNumberAssociationName' "AccountId"
+
+pattern PhoneNumberAssociationName_SipRuleId :: PhoneNumberAssociationName
+pattern PhoneNumberAssociationName_SipRuleId = PhoneNumberAssociationName' "SipRuleId"
+
+pattern PhoneNumberAssociationName_UserId :: PhoneNumberAssociationName
+pattern PhoneNumberAssociationName_UserId = PhoneNumberAssociationName' "UserId"
+
+pattern PhoneNumberAssociationName_VoiceConnectorGroupId :: PhoneNumberAssociationName
+pattern PhoneNumberAssociationName_VoiceConnectorGroupId = PhoneNumberAssociationName' "VoiceConnectorGroupId"
+
+pattern PhoneNumberAssociationName_VoiceConnectorId :: PhoneNumberAssociationName
+pattern PhoneNumberAssociationName_VoiceConnectorId = PhoneNumberAssociationName' "VoiceConnectorId"
+
+{-# COMPLETE
+  PhoneNumberAssociationName_AccountId,
+  PhoneNumberAssociationName_SipRuleId,
+  PhoneNumberAssociationName_UserId,
+  PhoneNumberAssociationName_VoiceConnectorGroupId,
+  PhoneNumberAssociationName_VoiceConnectorId,
+  PhoneNumberAssociationName'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/PhoneNumberCapabilities.hs b/gen/Amazonka/Chime/Types/PhoneNumberCapabilities.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/PhoneNumberCapabilities.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.PhoneNumberCapabilities
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.PhoneNumberCapabilities where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The phone number capabilities for Amazon Chime Business Calling phone
+-- numbers, such as enabled inbound and outbound calling and text
+-- messaging.
+--
+-- /See:/ 'newPhoneNumberCapabilities' smart constructor.
+data PhoneNumberCapabilities = PhoneNumberCapabilities'
+  { -- | Allows or denies inbound calling for the specified phone number.
+    inboundCall :: Prelude.Maybe Prelude.Bool,
+    -- | Allows or denies inbound MMS messaging for the specified phone number.
+    inboundMMS :: Prelude.Maybe Prelude.Bool,
+    -- | Allows or denies inbound SMS messaging for the specified phone number.
+    inboundSMS :: Prelude.Maybe Prelude.Bool,
+    -- | Allows or denies outbound calling for the specified phone number.
+    outboundCall :: Prelude.Maybe Prelude.Bool,
+    -- | Allows or denies outbound MMS messaging for the specified phone number.
+    outboundMMS :: Prelude.Maybe Prelude.Bool,
+    -- | Allows or denies outbound SMS messaging for the specified phone number.
+    outboundSMS :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PhoneNumberCapabilities' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'inboundCall', 'phoneNumberCapabilities_inboundCall' - Allows or denies inbound calling for the specified phone number.
+--
+-- 'inboundMMS', 'phoneNumberCapabilities_inboundMMS' - Allows or denies inbound MMS messaging for the specified phone number.
+--
+-- 'inboundSMS', 'phoneNumberCapabilities_inboundSMS' - Allows or denies inbound SMS messaging for the specified phone number.
+--
+-- 'outboundCall', 'phoneNumberCapabilities_outboundCall' - Allows or denies outbound calling for the specified phone number.
+--
+-- 'outboundMMS', 'phoneNumberCapabilities_outboundMMS' - Allows or denies outbound MMS messaging for the specified phone number.
+--
+-- 'outboundSMS', 'phoneNumberCapabilities_outboundSMS' - Allows or denies outbound SMS messaging for the specified phone number.
+newPhoneNumberCapabilities ::
+  PhoneNumberCapabilities
+newPhoneNumberCapabilities =
+  PhoneNumberCapabilities'
+    { inboundCall =
+        Prelude.Nothing,
+      inboundMMS = Prelude.Nothing,
+      inboundSMS = Prelude.Nothing,
+      outboundCall = Prelude.Nothing,
+      outboundMMS = Prelude.Nothing,
+      outboundSMS = Prelude.Nothing
+    }
+
+-- | Allows or denies inbound calling for the specified phone number.
+phoneNumberCapabilities_inboundCall :: Lens.Lens' PhoneNumberCapabilities (Prelude.Maybe Prelude.Bool)
+phoneNumberCapabilities_inboundCall = Lens.lens (\PhoneNumberCapabilities' {inboundCall} -> inboundCall) (\s@PhoneNumberCapabilities' {} a -> s {inboundCall = a} :: PhoneNumberCapabilities)
+
+-- | Allows or denies inbound MMS messaging for the specified phone number.
+phoneNumberCapabilities_inboundMMS :: Lens.Lens' PhoneNumberCapabilities (Prelude.Maybe Prelude.Bool)
+phoneNumberCapabilities_inboundMMS = Lens.lens (\PhoneNumberCapabilities' {inboundMMS} -> inboundMMS) (\s@PhoneNumberCapabilities' {} a -> s {inboundMMS = a} :: PhoneNumberCapabilities)
+
+-- | Allows or denies inbound SMS messaging for the specified phone number.
+phoneNumberCapabilities_inboundSMS :: Lens.Lens' PhoneNumberCapabilities (Prelude.Maybe Prelude.Bool)
+phoneNumberCapabilities_inboundSMS = Lens.lens (\PhoneNumberCapabilities' {inboundSMS} -> inboundSMS) (\s@PhoneNumberCapabilities' {} a -> s {inboundSMS = a} :: PhoneNumberCapabilities)
+
+-- | Allows or denies outbound calling for the specified phone number.
+phoneNumberCapabilities_outboundCall :: Lens.Lens' PhoneNumberCapabilities (Prelude.Maybe Prelude.Bool)
+phoneNumberCapabilities_outboundCall = Lens.lens (\PhoneNumberCapabilities' {outboundCall} -> outboundCall) (\s@PhoneNumberCapabilities' {} a -> s {outboundCall = a} :: PhoneNumberCapabilities)
+
+-- | Allows or denies outbound MMS messaging for the specified phone number.
+phoneNumberCapabilities_outboundMMS :: Lens.Lens' PhoneNumberCapabilities (Prelude.Maybe Prelude.Bool)
+phoneNumberCapabilities_outboundMMS = Lens.lens (\PhoneNumberCapabilities' {outboundMMS} -> outboundMMS) (\s@PhoneNumberCapabilities' {} a -> s {outboundMMS = a} :: PhoneNumberCapabilities)
+
+-- | Allows or denies outbound SMS messaging for the specified phone number.
+phoneNumberCapabilities_outboundSMS :: Lens.Lens' PhoneNumberCapabilities (Prelude.Maybe Prelude.Bool)
+phoneNumberCapabilities_outboundSMS = Lens.lens (\PhoneNumberCapabilities' {outboundSMS} -> outboundSMS) (\s@PhoneNumberCapabilities' {} a -> s {outboundSMS = a} :: PhoneNumberCapabilities)
+
+instance Data.FromJSON PhoneNumberCapabilities where
+  parseJSON =
+    Data.withObject
+      "PhoneNumberCapabilities"
+      ( \x ->
+          PhoneNumberCapabilities'
+            Prelude.<$> (x Data..:? "InboundCall")
+            Prelude.<*> (x Data..:? "InboundMMS")
+            Prelude.<*> (x Data..:? "InboundSMS")
+            Prelude.<*> (x Data..:? "OutboundCall")
+            Prelude.<*> (x Data..:? "OutboundMMS")
+            Prelude.<*> (x Data..:? "OutboundSMS")
+      )
+
+instance Prelude.Hashable PhoneNumberCapabilities where
+  hashWithSalt _salt PhoneNumberCapabilities' {..} =
+    _salt
+      `Prelude.hashWithSalt` inboundCall
+      `Prelude.hashWithSalt` inboundMMS
+      `Prelude.hashWithSalt` inboundSMS
+      `Prelude.hashWithSalt` outboundCall
+      `Prelude.hashWithSalt` outboundMMS
+      `Prelude.hashWithSalt` outboundSMS
+
+instance Prelude.NFData PhoneNumberCapabilities where
+  rnf PhoneNumberCapabilities' {..} =
+    Prelude.rnf inboundCall
+      `Prelude.seq` Prelude.rnf inboundMMS
+      `Prelude.seq` Prelude.rnf inboundSMS
+      `Prelude.seq` Prelude.rnf outboundCall
+      `Prelude.seq` Prelude.rnf outboundMMS
+      `Prelude.seq` Prelude.rnf outboundSMS
diff --git a/gen/Amazonka/Chime/Types/PhoneNumberCountry.hs b/gen/Amazonka/Chime/Types/PhoneNumberCountry.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/PhoneNumberCountry.hs
@@ -0,0 +1,88 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.PhoneNumberCountry
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.PhoneNumberCountry where
+
+import Amazonka.Chime.Types.PhoneNumberType
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The phone number country.
+--
+-- /See:/ 'newPhoneNumberCountry' smart constructor.
+data PhoneNumberCountry = PhoneNumberCountry'
+  { -- | The phone number country code. Format: ISO 3166-1 alpha-2.
+    countryCode :: Prelude.Maybe Prelude.Text,
+    -- | The supported phone number types.
+    supportedPhoneNumberTypes :: Prelude.Maybe [PhoneNumberType]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PhoneNumberCountry' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'countryCode', 'phoneNumberCountry_countryCode' - The phone number country code. Format: ISO 3166-1 alpha-2.
+--
+-- 'supportedPhoneNumberTypes', 'phoneNumberCountry_supportedPhoneNumberTypes' - The supported phone number types.
+newPhoneNumberCountry ::
+  PhoneNumberCountry
+newPhoneNumberCountry =
+  PhoneNumberCountry'
+    { countryCode = Prelude.Nothing,
+      supportedPhoneNumberTypes = Prelude.Nothing
+    }
+
+-- | The phone number country code. Format: ISO 3166-1 alpha-2.
+phoneNumberCountry_countryCode :: Lens.Lens' PhoneNumberCountry (Prelude.Maybe Prelude.Text)
+phoneNumberCountry_countryCode = Lens.lens (\PhoneNumberCountry' {countryCode} -> countryCode) (\s@PhoneNumberCountry' {} a -> s {countryCode = a} :: PhoneNumberCountry)
+
+-- | The supported phone number types.
+phoneNumberCountry_supportedPhoneNumberTypes :: Lens.Lens' PhoneNumberCountry (Prelude.Maybe [PhoneNumberType])
+phoneNumberCountry_supportedPhoneNumberTypes = Lens.lens (\PhoneNumberCountry' {supportedPhoneNumberTypes} -> supportedPhoneNumberTypes) (\s@PhoneNumberCountry' {} a -> s {supportedPhoneNumberTypes = a} :: PhoneNumberCountry) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON PhoneNumberCountry where
+  parseJSON =
+    Data.withObject
+      "PhoneNumberCountry"
+      ( \x ->
+          PhoneNumberCountry'
+            Prelude.<$> (x Data..:? "CountryCode")
+            Prelude.<*> ( x
+                            Data..:? "SupportedPhoneNumberTypes"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable PhoneNumberCountry where
+  hashWithSalt _salt PhoneNumberCountry' {..} =
+    _salt
+      `Prelude.hashWithSalt` countryCode
+      `Prelude.hashWithSalt` supportedPhoneNumberTypes
+
+instance Prelude.NFData PhoneNumberCountry where
+  rnf PhoneNumberCountry' {..} =
+    Prelude.rnf countryCode
+      `Prelude.seq` Prelude.rnf supportedPhoneNumberTypes
diff --git a/gen/Amazonka/Chime/Types/PhoneNumberError.hs b/gen/Amazonka/Chime/Types/PhoneNumberError.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/PhoneNumberError.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.PhoneNumberError
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.PhoneNumberError where
+
+import Amazonka.Chime.Types.ErrorCode
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | If the phone number action fails for one or more of the phone numbers in
+-- the request, a list of the phone numbers is returned, along with error
+-- codes and error messages.
+--
+-- /See:/ 'newPhoneNumberError' smart constructor.
+data PhoneNumberError = PhoneNumberError'
+  { -- | The error code.
+    errorCode :: Prelude.Maybe ErrorCode,
+    -- | The error message.
+    errorMessage :: Prelude.Maybe Prelude.Text,
+    -- | The phone number ID for which the action failed.
+    phoneNumberId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PhoneNumberError' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'errorCode', 'phoneNumberError_errorCode' - The error code.
+--
+-- 'errorMessage', 'phoneNumberError_errorMessage' - The error message.
+--
+-- 'phoneNumberId', 'phoneNumberError_phoneNumberId' - The phone number ID for which the action failed.
+newPhoneNumberError ::
+  PhoneNumberError
+newPhoneNumberError =
+  PhoneNumberError'
+    { errorCode = Prelude.Nothing,
+      errorMessage = Prelude.Nothing,
+      phoneNumberId = Prelude.Nothing
+    }
+
+-- | The error code.
+phoneNumberError_errorCode :: Lens.Lens' PhoneNumberError (Prelude.Maybe ErrorCode)
+phoneNumberError_errorCode = Lens.lens (\PhoneNumberError' {errorCode} -> errorCode) (\s@PhoneNumberError' {} a -> s {errorCode = a} :: PhoneNumberError)
+
+-- | The error message.
+phoneNumberError_errorMessage :: Lens.Lens' PhoneNumberError (Prelude.Maybe Prelude.Text)
+phoneNumberError_errorMessage = Lens.lens (\PhoneNumberError' {errorMessage} -> errorMessage) (\s@PhoneNumberError' {} a -> s {errorMessage = a} :: PhoneNumberError)
+
+-- | The phone number ID for which the action failed.
+phoneNumberError_phoneNumberId :: Lens.Lens' PhoneNumberError (Prelude.Maybe Prelude.Text)
+phoneNumberError_phoneNumberId = Lens.lens (\PhoneNumberError' {phoneNumberId} -> phoneNumberId) (\s@PhoneNumberError' {} a -> s {phoneNumberId = a} :: PhoneNumberError)
+
+instance Data.FromJSON PhoneNumberError where
+  parseJSON =
+    Data.withObject
+      "PhoneNumberError"
+      ( \x ->
+          PhoneNumberError'
+            Prelude.<$> (x Data..:? "ErrorCode")
+            Prelude.<*> (x Data..:? "ErrorMessage")
+            Prelude.<*> (x Data..:? "PhoneNumberId")
+      )
+
+instance Prelude.Hashable PhoneNumberError where
+  hashWithSalt _salt PhoneNumberError' {..} =
+    _salt
+      `Prelude.hashWithSalt` errorCode
+      `Prelude.hashWithSalt` errorMessage
+      `Prelude.hashWithSalt` phoneNumberId
+
+instance Prelude.NFData PhoneNumberError where
+  rnf PhoneNumberError' {..} =
+    Prelude.rnf errorCode
+      `Prelude.seq` Prelude.rnf errorMessage
+      `Prelude.seq` Prelude.rnf phoneNumberId
diff --git a/gen/Amazonka/Chime/Types/PhoneNumberOrder.hs b/gen/Amazonka/Chime/Types/PhoneNumberOrder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/PhoneNumberOrder.hs
@@ -0,0 +1,142 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.PhoneNumberOrder
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.PhoneNumberOrder where
+
+import Amazonka.Chime.Types.OrderedPhoneNumber
+import Amazonka.Chime.Types.PhoneNumberOrderStatus
+import Amazonka.Chime.Types.PhoneNumberProductType
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The details of a phone number order created for Amazon Chime.
+--
+-- /See:/ 'newPhoneNumberOrder' smart constructor.
+data PhoneNumberOrder = PhoneNumberOrder'
+  { -- | The phone number order creation time stamp, in ISO 8601 format.
+    createdTimestamp :: Prelude.Maybe Data.ISO8601,
+    -- | The ordered phone number details, such as the phone number in E.164
+    -- format and the phone number status.
+    orderedPhoneNumbers :: Prelude.Maybe [OrderedPhoneNumber],
+    -- | The phone number order ID.
+    phoneNumberOrderId :: Prelude.Maybe Prelude.Text,
+    -- | The phone number order product type.
+    productType :: Prelude.Maybe PhoneNumberProductType,
+    -- | The status of the phone number order.
+    status :: Prelude.Maybe PhoneNumberOrderStatus,
+    -- | The updated phone number order time stamp, in ISO 8601 format.
+    updatedTimestamp :: Prelude.Maybe Data.ISO8601
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PhoneNumberOrder' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'createdTimestamp', 'phoneNumberOrder_createdTimestamp' - The phone number order creation time stamp, in ISO 8601 format.
+--
+-- 'orderedPhoneNumbers', 'phoneNumberOrder_orderedPhoneNumbers' - The ordered phone number details, such as the phone number in E.164
+-- format and the phone number status.
+--
+-- 'phoneNumberOrderId', 'phoneNumberOrder_phoneNumberOrderId' - The phone number order ID.
+--
+-- 'productType', 'phoneNumberOrder_productType' - The phone number order product type.
+--
+-- 'status', 'phoneNumberOrder_status' - The status of the phone number order.
+--
+-- 'updatedTimestamp', 'phoneNumberOrder_updatedTimestamp' - The updated phone number order time stamp, in ISO 8601 format.
+newPhoneNumberOrder ::
+  PhoneNumberOrder
+newPhoneNumberOrder =
+  PhoneNumberOrder'
+    { createdTimestamp =
+        Prelude.Nothing,
+      orderedPhoneNumbers = Prelude.Nothing,
+      phoneNumberOrderId = Prelude.Nothing,
+      productType = Prelude.Nothing,
+      status = Prelude.Nothing,
+      updatedTimestamp = Prelude.Nothing
+    }
+
+-- | The phone number order creation time stamp, in ISO 8601 format.
+phoneNumberOrder_createdTimestamp :: Lens.Lens' PhoneNumberOrder (Prelude.Maybe Prelude.UTCTime)
+phoneNumberOrder_createdTimestamp = Lens.lens (\PhoneNumberOrder' {createdTimestamp} -> createdTimestamp) (\s@PhoneNumberOrder' {} a -> s {createdTimestamp = a} :: PhoneNumberOrder) Prelude.. Lens.mapping Data._Time
+
+-- | The ordered phone number details, such as the phone number in E.164
+-- format and the phone number status.
+phoneNumberOrder_orderedPhoneNumbers :: Lens.Lens' PhoneNumberOrder (Prelude.Maybe [OrderedPhoneNumber])
+phoneNumberOrder_orderedPhoneNumbers = Lens.lens (\PhoneNumberOrder' {orderedPhoneNumbers} -> orderedPhoneNumbers) (\s@PhoneNumberOrder' {} a -> s {orderedPhoneNumbers = a} :: PhoneNumberOrder) Prelude.. Lens.mapping Lens.coerced
+
+-- | The phone number order ID.
+phoneNumberOrder_phoneNumberOrderId :: Lens.Lens' PhoneNumberOrder (Prelude.Maybe Prelude.Text)
+phoneNumberOrder_phoneNumberOrderId = Lens.lens (\PhoneNumberOrder' {phoneNumberOrderId} -> phoneNumberOrderId) (\s@PhoneNumberOrder' {} a -> s {phoneNumberOrderId = a} :: PhoneNumberOrder)
+
+-- | The phone number order product type.
+phoneNumberOrder_productType :: Lens.Lens' PhoneNumberOrder (Prelude.Maybe PhoneNumberProductType)
+phoneNumberOrder_productType = Lens.lens (\PhoneNumberOrder' {productType} -> productType) (\s@PhoneNumberOrder' {} a -> s {productType = a} :: PhoneNumberOrder)
+
+-- | The status of the phone number order.
+phoneNumberOrder_status :: Lens.Lens' PhoneNumberOrder (Prelude.Maybe PhoneNumberOrderStatus)
+phoneNumberOrder_status = Lens.lens (\PhoneNumberOrder' {status} -> status) (\s@PhoneNumberOrder' {} a -> s {status = a} :: PhoneNumberOrder)
+
+-- | The updated phone number order time stamp, in ISO 8601 format.
+phoneNumberOrder_updatedTimestamp :: Lens.Lens' PhoneNumberOrder (Prelude.Maybe Prelude.UTCTime)
+phoneNumberOrder_updatedTimestamp = Lens.lens (\PhoneNumberOrder' {updatedTimestamp} -> updatedTimestamp) (\s@PhoneNumberOrder' {} a -> s {updatedTimestamp = a} :: PhoneNumberOrder) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON PhoneNumberOrder where
+  parseJSON =
+    Data.withObject
+      "PhoneNumberOrder"
+      ( \x ->
+          PhoneNumberOrder'
+            Prelude.<$> (x Data..:? "CreatedTimestamp")
+            Prelude.<*> ( x
+                            Data..:? "OrderedPhoneNumbers"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "PhoneNumberOrderId")
+            Prelude.<*> (x Data..:? "ProductType")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "UpdatedTimestamp")
+      )
+
+instance Prelude.Hashable PhoneNumberOrder where
+  hashWithSalt _salt PhoneNumberOrder' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdTimestamp
+      `Prelude.hashWithSalt` orderedPhoneNumbers
+      `Prelude.hashWithSalt` phoneNumberOrderId
+      `Prelude.hashWithSalt` productType
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` updatedTimestamp
+
+instance Prelude.NFData PhoneNumberOrder where
+  rnf PhoneNumberOrder' {..} =
+    Prelude.rnf createdTimestamp
+      `Prelude.seq` Prelude.rnf orderedPhoneNumbers
+      `Prelude.seq` Prelude.rnf phoneNumberOrderId
+      `Prelude.seq` Prelude.rnf productType
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf updatedTimestamp
diff --git a/gen/Amazonka/Chime/Types/PhoneNumberOrderStatus.hs b/gen/Amazonka/Chime/Types/PhoneNumberOrderStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/PhoneNumberOrderStatus.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.PhoneNumberOrderStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.PhoneNumberOrderStatus
+  ( PhoneNumberOrderStatus
+      ( ..,
+        PhoneNumberOrderStatus_Failed,
+        PhoneNumberOrderStatus_Partial,
+        PhoneNumberOrderStatus_Processing,
+        PhoneNumberOrderStatus_Successful
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PhoneNumberOrderStatus = PhoneNumberOrderStatus'
+  { fromPhoneNumberOrderStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern PhoneNumberOrderStatus_Failed :: PhoneNumberOrderStatus
+pattern PhoneNumberOrderStatus_Failed = PhoneNumberOrderStatus' "Failed"
+
+pattern PhoneNumberOrderStatus_Partial :: PhoneNumberOrderStatus
+pattern PhoneNumberOrderStatus_Partial = PhoneNumberOrderStatus' "Partial"
+
+pattern PhoneNumberOrderStatus_Processing :: PhoneNumberOrderStatus
+pattern PhoneNumberOrderStatus_Processing = PhoneNumberOrderStatus' "Processing"
+
+pattern PhoneNumberOrderStatus_Successful :: PhoneNumberOrderStatus
+pattern PhoneNumberOrderStatus_Successful = PhoneNumberOrderStatus' "Successful"
+
+{-# COMPLETE
+  PhoneNumberOrderStatus_Failed,
+  PhoneNumberOrderStatus_Partial,
+  PhoneNumberOrderStatus_Processing,
+  PhoneNumberOrderStatus_Successful,
+  PhoneNumberOrderStatus'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/PhoneNumberProductType.hs b/gen/Amazonka/Chime/Types/PhoneNumberProductType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/PhoneNumberProductType.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.PhoneNumberProductType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.PhoneNumberProductType
+  ( PhoneNumberProductType
+      ( ..,
+        PhoneNumberProductType_BusinessCalling,
+        PhoneNumberProductType_SipMediaApplicationDialIn,
+        PhoneNumberProductType_VoiceConnector
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PhoneNumberProductType = PhoneNumberProductType'
+  { fromPhoneNumberProductType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern PhoneNumberProductType_BusinessCalling :: PhoneNumberProductType
+pattern PhoneNumberProductType_BusinessCalling = PhoneNumberProductType' "BusinessCalling"
+
+pattern PhoneNumberProductType_SipMediaApplicationDialIn :: PhoneNumberProductType
+pattern PhoneNumberProductType_SipMediaApplicationDialIn = PhoneNumberProductType' "SipMediaApplicationDialIn"
+
+pattern PhoneNumberProductType_VoiceConnector :: PhoneNumberProductType
+pattern PhoneNumberProductType_VoiceConnector = PhoneNumberProductType' "VoiceConnector"
+
+{-# COMPLETE
+  PhoneNumberProductType_BusinessCalling,
+  PhoneNumberProductType_SipMediaApplicationDialIn,
+  PhoneNumberProductType_VoiceConnector,
+  PhoneNumberProductType'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/PhoneNumberStatus.hs b/gen/Amazonka/Chime/Types/PhoneNumberStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/PhoneNumberStatus.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.PhoneNumberStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.PhoneNumberStatus
+  ( PhoneNumberStatus
+      ( ..,
+        PhoneNumberStatus_AcquireFailed,
+        PhoneNumberStatus_AcquireInProgress,
+        PhoneNumberStatus_Assigned,
+        PhoneNumberStatus_DeleteFailed,
+        PhoneNumberStatus_DeleteInProgress,
+        PhoneNumberStatus_ReleaseFailed,
+        PhoneNumberStatus_ReleaseInProgress,
+        PhoneNumberStatus_Unassigned
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PhoneNumberStatus = PhoneNumberStatus'
+  { fromPhoneNumberStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern PhoneNumberStatus_AcquireFailed :: PhoneNumberStatus
+pattern PhoneNumberStatus_AcquireFailed = PhoneNumberStatus' "AcquireFailed"
+
+pattern PhoneNumberStatus_AcquireInProgress :: PhoneNumberStatus
+pattern PhoneNumberStatus_AcquireInProgress = PhoneNumberStatus' "AcquireInProgress"
+
+pattern PhoneNumberStatus_Assigned :: PhoneNumberStatus
+pattern PhoneNumberStatus_Assigned = PhoneNumberStatus' "Assigned"
+
+pattern PhoneNumberStatus_DeleteFailed :: PhoneNumberStatus
+pattern PhoneNumberStatus_DeleteFailed = PhoneNumberStatus' "DeleteFailed"
+
+pattern PhoneNumberStatus_DeleteInProgress :: PhoneNumberStatus
+pattern PhoneNumberStatus_DeleteInProgress = PhoneNumberStatus' "DeleteInProgress"
+
+pattern PhoneNumberStatus_ReleaseFailed :: PhoneNumberStatus
+pattern PhoneNumberStatus_ReleaseFailed = PhoneNumberStatus' "ReleaseFailed"
+
+pattern PhoneNumberStatus_ReleaseInProgress :: PhoneNumberStatus
+pattern PhoneNumberStatus_ReleaseInProgress = PhoneNumberStatus' "ReleaseInProgress"
+
+pattern PhoneNumberStatus_Unassigned :: PhoneNumberStatus
+pattern PhoneNumberStatus_Unassigned = PhoneNumberStatus' "Unassigned"
+
+{-# COMPLETE
+  PhoneNumberStatus_AcquireFailed,
+  PhoneNumberStatus_AcquireInProgress,
+  PhoneNumberStatus_Assigned,
+  PhoneNumberStatus_DeleteFailed,
+  PhoneNumberStatus_DeleteInProgress,
+  PhoneNumberStatus_ReleaseFailed,
+  PhoneNumberStatus_ReleaseInProgress,
+  PhoneNumberStatus_Unassigned,
+  PhoneNumberStatus'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/PhoneNumberType.hs b/gen/Amazonka/Chime/Types/PhoneNumberType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/PhoneNumberType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.PhoneNumberType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.PhoneNumberType
+  ( PhoneNumberType
+      ( ..,
+        PhoneNumberType_Local,
+        PhoneNumberType_TollFree
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PhoneNumberType = PhoneNumberType'
+  { fromPhoneNumberType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern PhoneNumberType_Local :: PhoneNumberType
+pattern PhoneNumberType_Local = PhoneNumberType' "Local"
+
+pattern PhoneNumberType_TollFree :: PhoneNumberType
+pattern PhoneNumberType_TollFree = PhoneNumberType' "TollFree"
+
+{-# COMPLETE
+  PhoneNumberType_Local,
+  PhoneNumberType_TollFree,
+  PhoneNumberType'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/Proxy.hs b/gen/Amazonka/Chime/Types/Proxy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/Proxy.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.Proxy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.Proxy where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The proxy configuration for an Amazon Chime Voice Connector.
+--
+-- /See:/ 'newProxy' smart constructor.
+data Proxy = Proxy'
+  { -- | The default number of minutes allowed for proxy sessions.
+    defaultSessionExpiryMinutes :: Prelude.Maybe Prelude.Int,
+    -- | When true, stops proxy sessions from being created on the specified
+    -- Amazon Chime Voice Connector.
+    disabled :: Prelude.Maybe Prelude.Bool,
+    -- | The phone number to route calls to after a proxy session expires.
+    fallBackPhoneNumber :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The countries for proxy phone numbers to be selected from.
+    phoneNumberCountries :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Proxy' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'defaultSessionExpiryMinutes', 'proxy_defaultSessionExpiryMinutes' - The default number of minutes allowed for proxy sessions.
+--
+-- 'disabled', 'proxy_disabled' - When true, stops proxy sessions from being created on the specified
+-- Amazon Chime Voice Connector.
+--
+-- 'fallBackPhoneNumber', 'proxy_fallBackPhoneNumber' - The phone number to route calls to after a proxy session expires.
+--
+-- 'phoneNumberCountries', 'proxy_phoneNumberCountries' - The countries for proxy phone numbers to be selected from.
+newProxy ::
+  Proxy
+newProxy =
+  Proxy'
+    { defaultSessionExpiryMinutes =
+        Prelude.Nothing,
+      disabled = Prelude.Nothing,
+      fallBackPhoneNumber = Prelude.Nothing,
+      phoneNumberCountries = Prelude.Nothing
+    }
+
+-- | The default number of minutes allowed for proxy sessions.
+proxy_defaultSessionExpiryMinutes :: Lens.Lens' Proxy (Prelude.Maybe Prelude.Int)
+proxy_defaultSessionExpiryMinutes = Lens.lens (\Proxy' {defaultSessionExpiryMinutes} -> defaultSessionExpiryMinutes) (\s@Proxy' {} a -> s {defaultSessionExpiryMinutes = a} :: Proxy)
+
+-- | When true, stops proxy sessions from being created on the specified
+-- Amazon Chime Voice Connector.
+proxy_disabled :: Lens.Lens' Proxy (Prelude.Maybe Prelude.Bool)
+proxy_disabled = Lens.lens (\Proxy' {disabled} -> disabled) (\s@Proxy' {} a -> s {disabled = a} :: Proxy)
+
+-- | The phone number to route calls to after a proxy session expires.
+proxy_fallBackPhoneNumber :: Lens.Lens' Proxy (Prelude.Maybe Prelude.Text)
+proxy_fallBackPhoneNumber = Lens.lens (\Proxy' {fallBackPhoneNumber} -> fallBackPhoneNumber) (\s@Proxy' {} a -> s {fallBackPhoneNumber = a} :: Proxy) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The countries for proxy phone numbers to be selected from.
+proxy_phoneNumberCountries :: Lens.Lens' Proxy (Prelude.Maybe [Prelude.Text])
+proxy_phoneNumberCountries = Lens.lens (\Proxy' {phoneNumberCountries} -> phoneNumberCountries) (\s@Proxy' {} a -> s {phoneNumberCountries = a} :: Proxy) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON Proxy where
+  parseJSON =
+    Data.withObject
+      "Proxy"
+      ( \x ->
+          Proxy'
+            Prelude.<$> (x Data..:? "DefaultSessionExpiryMinutes")
+            Prelude.<*> (x Data..:? "Disabled")
+            Prelude.<*> (x Data..:? "FallBackPhoneNumber")
+            Prelude.<*> ( x
+                            Data..:? "PhoneNumberCountries"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable Proxy where
+  hashWithSalt _salt Proxy' {..} =
+    _salt
+      `Prelude.hashWithSalt` defaultSessionExpiryMinutes
+      `Prelude.hashWithSalt` disabled
+      `Prelude.hashWithSalt` fallBackPhoneNumber
+      `Prelude.hashWithSalt` phoneNumberCountries
+
+instance Prelude.NFData Proxy where
+  rnf Proxy' {..} =
+    Prelude.rnf defaultSessionExpiryMinutes
+      `Prelude.seq` Prelude.rnf disabled
+      `Prelude.seq` Prelude.rnf fallBackPhoneNumber
+      `Prelude.seq` Prelude.rnf phoneNumberCountries
diff --git a/gen/Amazonka/Chime/Types/ProxySession.hs b/gen/Amazonka/Chime/Types/ProxySession.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/ProxySession.hs
@@ -0,0 +1,228 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.ProxySession
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.ProxySession where
+
+import Amazonka.Chime.Types.Capability
+import Amazonka.Chime.Types.GeoMatchLevel
+import Amazonka.Chime.Types.GeoMatchParams
+import Amazonka.Chime.Types.NumberSelectionBehavior
+import Amazonka.Chime.Types.Participant
+import Amazonka.Chime.Types.ProxySessionStatus
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The proxy session for an Amazon Chime Voice Connector.
+--
+-- /See:/ 'newProxySession' smart constructor.
+data ProxySession = ProxySession'
+  { -- | The proxy session capabilities.
+    capabilities :: Prelude.Maybe [Capability],
+    -- | The created time stamp, in ISO 8601 format.
+    createdTimestamp :: Prelude.Maybe Data.ISO8601,
+    -- | The ended time stamp, in ISO 8601 format.
+    endedTimestamp :: Prelude.Maybe Data.ISO8601,
+    -- | The number of minutes allowed for the proxy session.
+    expiryMinutes :: Prelude.Maybe Prelude.Natural,
+    -- | The preference for matching the country or area code of the proxy phone
+    -- number with that of the first participant.
+    geoMatchLevel :: Prelude.Maybe GeoMatchLevel,
+    -- | The country and area code for the proxy phone number.
+    geoMatchParams :: Prelude.Maybe GeoMatchParams,
+    -- | The name of the proxy session.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The preference for proxy phone number reuse, or stickiness, between the
+    -- same participants across sessions.
+    numberSelectionBehavior :: Prelude.Maybe NumberSelectionBehavior,
+    -- | The proxy session participants.
+    participants :: Prelude.Maybe [Participant],
+    -- | The proxy session ID.
+    proxySessionId :: Prelude.Maybe Prelude.Text,
+    -- | The status of the proxy session.
+    status :: Prelude.Maybe ProxySessionStatus,
+    -- | The updated time stamp, in ISO 8601 format.
+    updatedTimestamp :: Prelude.Maybe Data.ISO8601,
+    -- | The Amazon Chime voice connector ID.
+    voiceConnectorId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ProxySession' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'capabilities', 'proxySession_capabilities' - The proxy session capabilities.
+--
+-- 'createdTimestamp', 'proxySession_createdTimestamp' - The created time stamp, in ISO 8601 format.
+--
+-- 'endedTimestamp', 'proxySession_endedTimestamp' - The ended time stamp, in ISO 8601 format.
+--
+-- 'expiryMinutes', 'proxySession_expiryMinutes' - The number of minutes allowed for the proxy session.
+--
+-- 'geoMatchLevel', 'proxySession_geoMatchLevel' - The preference for matching the country or area code of the proxy phone
+-- number with that of the first participant.
+--
+-- 'geoMatchParams', 'proxySession_geoMatchParams' - The country and area code for the proxy phone number.
+--
+-- 'name', 'proxySession_name' - The name of the proxy session.
+--
+-- 'numberSelectionBehavior', 'proxySession_numberSelectionBehavior' - The preference for proxy phone number reuse, or stickiness, between the
+-- same participants across sessions.
+--
+-- 'participants', 'proxySession_participants' - The proxy session participants.
+--
+-- 'proxySessionId', 'proxySession_proxySessionId' - The proxy session ID.
+--
+-- 'status', 'proxySession_status' - The status of the proxy session.
+--
+-- 'updatedTimestamp', 'proxySession_updatedTimestamp' - The updated time stamp, in ISO 8601 format.
+--
+-- 'voiceConnectorId', 'proxySession_voiceConnectorId' - The Amazon Chime voice connector ID.
+newProxySession ::
+  ProxySession
+newProxySession =
+  ProxySession'
+    { capabilities = Prelude.Nothing,
+      createdTimestamp = Prelude.Nothing,
+      endedTimestamp = Prelude.Nothing,
+      expiryMinutes = Prelude.Nothing,
+      geoMatchLevel = Prelude.Nothing,
+      geoMatchParams = Prelude.Nothing,
+      name = Prelude.Nothing,
+      numberSelectionBehavior = Prelude.Nothing,
+      participants = Prelude.Nothing,
+      proxySessionId = Prelude.Nothing,
+      status = Prelude.Nothing,
+      updatedTimestamp = Prelude.Nothing,
+      voiceConnectorId = Prelude.Nothing
+    }
+
+-- | The proxy session capabilities.
+proxySession_capabilities :: Lens.Lens' ProxySession (Prelude.Maybe [Capability])
+proxySession_capabilities = Lens.lens (\ProxySession' {capabilities} -> capabilities) (\s@ProxySession' {} a -> s {capabilities = a} :: ProxySession) Prelude.. Lens.mapping Lens.coerced
+
+-- | The created time stamp, in ISO 8601 format.
+proxySession_createdTimestamp :: Lens.Lens' ProxySession (Prelude.Maybe Prelude.UTCTime)
+proxySession_createdTimestamp = Lens.lens (\ProxySession' {createdTimestamp} -> createdTimestamp) (\s@ProxySession' {} a -> s {createdTimestamp = a} :: ProxySession) Prelude.. Lens.mapping Data._Time
+
+-- | The ended time stamp, in ISO 8601 format.
+proxySession_endedTimestamp :: Lens.Lens' ProxySession (Prelude.Maybe Prelude.UTCTime)
+proxySession_endedTimestamp = Lens.lens (\ProxySession' {endedTimestamp} -> endedTimestamp) (\s@ProxySession' {} a -> s {endedTimestamp = a} :: ProxySession) Prelude.. Lens.mapping Data._Time
+
+-- | The number of minutes allowed for the proxy session.
+proxySession_expiryMinutes :: Lens.Lens' ProxySession (Prelude.Maybe Prelude.Natural)
+proxySession_expiryMinutes = Lens.lens (\ProxySession' {expiryMinutes} -> expiryMinutes) (\s@ProxySession' {} a -> s {expiryMinutes = a} :: ProxySession)
+
+-- | The preference for matching the country or area code of the proxy phone
+-- number with that of the first participant.
+proxySession_geoMatchLevel :: Lens.Lens' ProxySession (Prelude.Maybe GeoMatchLevel)
+proxySession_geoMatchLevel = Lens.lens (\ProxySession' {geoMatchLevel} -> geoMatchLevel) (\s@ProxySession' {} a -> s {geoMatchLevel = a} :: ProxySession)
+
+-- | The country and area code for the proxy phone number.
+proxySession_geoMatchParams :: Lens.Lens' ProxySession (Prelude.Maybe GeoMatchParams)
+proxySession_geoMatchParams = Lens.lens (\ProxySession' {geoMatchParams} -> geoMatchParams) (\s@ProxySession' {} a -> s {geoMatchParams = a} :: ProxySession)
+
+-- | The name of the proxy session.
+proxySession_name :: Lens.Lens' ProxySession (Prelude.Maybe Prelude.Text)
+proxySession_name = Lens.lens (\ProxySession' {name} -> name) (\s@ProxySession' {} a -> s {name = a} :: ProxySession)
+
+-- | The preference for proxy phone number reuse, or stickiness, between the
+-- same participants across sessions.
+proxySession_numberSelectionBehavior :: Lens.Lens' ProxySession (Prelude.Maybe NumberSelectionBehavior)
+proxySession_numberSelectionBehavior = Lens.lens (\ProxySession' {numberSelectionBehavior} -> numberSelectionBehavior) (\s@ProxySession' {} a -> s {numberSelectionBehavior = a} :: ProxySession)
+
+-- | The proxy session participants.
+proxySession_participants :: Lens.Lens' ProxySession (Prelude.Maybe [Participant])
+proxySession_participants = Lens.lens (\ProxySession' {participants} -> participants) (\s@ProxySession' {} a -> s {participants = a} :: ProxySession) Prelude.. Lens.mapping Lens.coerced
+
+-- | The proxy session ID.
+proxySession_proxySessionId :: Lens.Lens' ProxySession (Prelude.Maybe Prelude.Text)
+proxySession_proxySessionId = Lens.lens (\ProxySession' {proxySessionId} -> proxySessionId) (\s@ProxySession' {} a -> s {proxySessionId = a} :: ProxySession)
+
+-- | The status of the proxy session.
+proxySession_status :: Lens.Lens' ProxySession (Prelude.Maybe ProxySessionStatus)
+proxySession_status = Lens.lens (\ProxySession' {status} -> status) (\s@ProxySession' {} a -> s {status = a} :: ProxySession)
+
+-- | The updated time stamp, in ISO 8601 format.
+proxySession_updatedTimestamp :: Lens.Lens' ProxySession (Prelude.Maybe Prelude.UTCTime)
+proxySession_updatedTimestamp = Lens.lens (\ProxySession' {updatedTimestamp} -> updatedTimestamp) (\s@ProxySession' {} a -> s {updatedTimestamp = a} :: ProxySession) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Chime voice connector ID.
+proxySession_voiceConnectorId :: Lens.Lens' ProxySession (Prelude.Maybe Prelude.Text)
+proxySession_voiceConnectorId = Lens.lens (\ProxySession' {voiceConnectorId} -> voiceConnectorId) (\s@ProxySession' {} a -> s {voiceConnectorId = a} :: ProxySession)
+
+instance Data.FromJSON ProxySession where
+  parseJSON =
+    Data.withObject
+      "ProxySession"
+      ( \x ->
+          ProxySession'
+            Prelude.<$> (x Data..:? "Capabilities" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "CreatedTimestamp")
+            Prelude.<*> (x Data..:? "EndedTimestamp")
+            Prelude.<*> (x Data..:? "ExpiryMinutes")
+            Prelude.<*> (x Data..:? "GeoMatchLevel")
+            Prelude.<*> (x Data..:? "GeoMatchParams")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "NumberSelectionBehavior")
+            Prelude.<*> (x Data..:? "Participants" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ProxySessionId")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "UpdatedTimestamp")
+            Prelude.<*> (x Data..:? "VoiceConnectorId")
+      )
+
+instance Prelude.Hashable ProxySession where
+  hashWithSalt _salt ProxySession' {..} =
+    _salt
+      `Prelude.hashWithSalt` capabilities
+      `Prelude.hashWithSalt` createdTimestamp
+      `Prelude.hashWithSalt` endedTimestamp
+      `Prelude.hashWithSalt` expiryMinutes
+      `Prelude.hashWithSalt` geoMatchLevel
+      `Prelude.hashWithSalt` geoMatchParams
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` numberSelectionBehavior
+      `Prelude.hashWithSalt` participants
+      `Prelude.hashWithSalt` proxySessionId
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` updatedTimestamp
+      `Prelude.hashWithSalt` voiceConnectorId
+
+instance Prelude.NFData ProxySession where
+  rnf ProxySession' {..} =
+    Prelude.rnf capabilities
+      `Prelude.seq` Prelude.rnf createdTimestamp
+      `Prelude.seq` Prelude.rnf endedTimestamp
+      `Prelude.seq` Prelude.rnf expiryMinutes
+      `Prelude.seq` Prelude.rnf geoMatchLevel
+      `Prelude.seq` Prelude.rnf geoMatchParams
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf numberSelectionBehavior
+      `Prelude.seq` Prelude.rnf participants
+      `Prelude.seq` Prelude.rnf proxySessionId
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf updatedTimestamp
+      `Prelude.seq` Prelude.rnf voiceConnectorId
diff --git a/gen/Amazonka/Chime/Types/ProxySessionStatus.hs b/gen/Amazonka/Chime/Types/ProxySessionStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/ProxySessionStatus.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.ProxySessionStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.ProxySessionStatus
+  ( ProxySessionStatus
+      ( ..,
+        ProxySessionStatus_Closed,
+        ProxySessionStatus_InProgress,
+        ProxySessionStatus_Open
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ProxySessionStatus = ProxySessionStatus'
+  { fromProxySessionStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ProxySessionStatus_Closed :: ProxySessionStatus
+pattern ProxySessionStatus_Closed = ProxySessionStatus' "Closed"
+
+pattern ProxySessionStatus_InProgress :: ProxySessionStatus
+pattern ProxySessionStatus_InProgress = ProxySessionStatus' "InProgress"
+
+pattern ProxySessionStatus_Open :: ProxySessionStatus
+pattern ProxySessionStatus_Open = ProxySessionStatus' "Open"
+
+{-# COMPLETE
+  ProxySessionStatus_Closed,
+  ProxySessionStatus_InProgress,
+  ProxySessionStatus_Open,
+  ProxySessionStatus'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/RegistrationStatus.hs b/gen/Amazonka/Chime/Types/RegistrationStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/RegistrationStatus.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.RegistrationStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.RegistrationStatus
+  ( RegistrationStatus
+      ( ..,
+        RegistrationStatus_Registered,
+        RegistrationStatus_Suspended,
+        RegistrationStatus_Unregistered
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RegistrationStatus = RegistrationStatus'
+  { fromRegistrationStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern RegistrationStatus_Registered :: RegistrationStatus
+pattern RegistrationStatus_Registered = RegistrationStatus' "Registered"
+
+pattern RegistrationStatus_Suspended :: RegistrationStatus
+pattern RegistrationStatus_Suspended = RegistrationStatus' "Suspended"
+
+pattern RegistrationStatus_Unregistered :: RegistrationStatus
+pattern RegistrationStatus_Unregistered = RegistrationStatus' "Unregistered"
+
+{-# COMPLETE
+  RegistrationStatus_Registered,
+  RegistrationStatus_Suspended,
+  RegistrationStatus_Unregistered,
+  RegistrationStatus'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/RetentionSettings.hs b/gen/Amazonka/Chime/Types/RetentionSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/RetentionSettings.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.RetentionSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.RetentionSettings where
+
+import Amazonka.Chime.Types.ConversationRetentionSettings
+import Amazonka.Chime.Types.RoomRetentionSettings
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The retention settings for an Amazon Chime Enterprise account that
+-- determine how long to retain items such as chat-room messages and
+-- chat-conversation messages.
+--
+-- /See:/ 'newRetentionSettings' smart constructor.
+data RetentionSettings = RetentionSettings'
+  { -- | The chat conversation retention settings.
+    conversationRetentionSettings :: Prelude.Maybe ConversationRetentionSettings,
+    -- | The chat room retention settings.
+    roomRetentionSettings :: Prelude.Maybe RoomRetentionSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RetentionSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'conversationRetentionSettings', 'retentionSettings_conversationRetentionSettings' - The chat conversation retention settings.
+--
+-- 'roomRetentionSettings', 'retentionSettings_roomRetentionSettings' - The chat room retention settings.
+newRetentionSettings ::
+  RetentionSettings
+newRetentionSettings =
+  RetentionSettings'
+    { conversationRetentionSettings =
+        Prelude.Nothing,
+      roomRetentionSettings = Prelude.Nothing
+    }
+
+-- | The chat conversation retention settings.
+retentionSettings_conversationRetentionSettings :: Lens.Lens' RetentionSettings (Prelude.Maybe ConversationRetentionSettings)
+retentionSettings_conversationRetentionSettings = Lens.lens (\RetentionSettings' {conversationRetentionSettings} -> conversationRetentionSettings) (\s@RetentionSettings' {} a -> s {conversationRetentionSettings = a} :: RetentionSettings)
+
+-- | The chat room retention settings.
+retentionSettings_roomRetentionSettings :: Lens.Lens' RetentionSettings (Prelude.Maybe RoomRetentionSettings)
+retentionSettings_roomRetentionSettings = Lens.lens (\RetentionSettings' {roomRetentionSettings} -> roomRetentionSettings) (\s@RetentionSettings' {} a -> s {roomRetentionSettings = a} :: RetentionSettings)
+
+instance Data.FromJSON RetentionSettings where
+  parseJSON =
+    Data.withObject
+      "RetentionSettings"
+      ( \x ->
+          RetentionSettings'
+            Prelude.<$> (x Data..:? "ConversationRetentionSettings")
+            Prelude.<*> (x Data..:? "RoomRetentionSettings")
+      )
+
+instance Prelude.Hashable RetentionSettings where
+  hashWithSalt _salt RetentionSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` conversationRetentionSettings
+      `Prelude.hashWithSalt` roomRetentionSettings
+
+instance Prelude.NFData RetentionSettings where
+  rnf RetentionSettings' {..} =
+    Prelude.rnf conversationRetentionSettings
+      `Prelude.seq` Prelude.rnf roomRetentionSettings
+
+instance Data.ToJSON RetentionSettings where
+  toJSON RetentionSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ConversationRetentionSettings" Data..=)
+              Prelude.<$> conversationRetentionSettings,
+            ("RoomRetentionSettings" Data..=)
+              Prelude.<$> roomRetentionSettings
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/Room.hs b/gen/Amazonka/Chime/Types/Room.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/Room.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.Room
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.Room where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The Amazon Chime chat room details.
+--
+-- /See:/ 'newRoom' smart constructor.
+data Room = Room'
+  { -- | The Amazon Chime account ID.
+    accountId :: Prelude.Maybe Prelude.Text,
+    -- | The identifier of the room creator.
+    createdBy :: Prelude.Maybe Prelude.Text,
+    -- | The room creation timestamp, in ISO 8601 format.
+    createdTimestamp :: Prelude.Maybe Data.ISO8601,
+    -- | The room name.
+    name :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The room ID.
+    roomId :: Prelude.Maybe Prelude.Text,
+    -- | The room update timestamp, in ISO 8601 format.
+    updatedTimestamp :: Prelude.Maybe Data.ISO8601
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Room' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'room_accountId' - The Amazon Chime account ID.
+--
+-- 'createdBy', 'room_createdBy' - The identifier of the room creator.
+--
+-- 'createdTimestamp', 'room_createdTimestamp' - The room creation timestamp, in ISO 8601 format.
+--
+-- 'name', 'room_name' - The room name.
+--
+-- 'roomId', 'room_roomId' - The room ID.
+--
+-- 'updatedTimestamp', 'room_updatedTimestamp' - The room update timestamp, in ISO 8601 format.
+newRoom ::
+  Room
+newRoom =
+  Room'
+    { accountId = Prelude.Nothing,
+      createdBy = Prelude.Nothing,
+      createdTimestamp = Prelude.Nothing,
+      name = Prelude.Nothing,
+      roomId = Prelude.Nothing,
+      updatedTimestamp = Prelude.Nothing
+    }
+
+-- | The Amazon Chime account ID.
+room_accountId :: Lens.Lens' Room (Prelude.Maybe Prelude.Text)
+room_accountId = Lens.lens (\Room' {accountId} -> accountId) (\s@Room' {} a -> s {accountId = a} :: Room)
+
+-- | The identifier of the room creator.
+room_createdBy :: Lens.Lens' Room (Prelude.Maybe Prelude.Text)
+room_createdBy = Lens.lens (\Room' {createdBy} -> createdBy) (\s@Room' {} a -> s {createdBy = a} :: Room)
+
+-- | The room creation timestamp, in ISO 8601 format.
+room_createdTimestamp :: Lens.Lens' Room (Prelude.Maybe Prelude.UTCTime)
+room_createdTimestamp = Lens.lens (\Room' {createdTimestamp} -> createdTimestamp) (\s@Room' {} a -> s {createdTimestamp = a} :: Room) Prelude.. Lens.mapping Data._Time
+
+-- | The room name.
+room_name :: Lens.Lens' Room (Prelude.Maybe Prelude.Text)
+room_name = Lens.lens (\Room' {name} -> name) (\s@Room' {} a -> s {name = a} :: Room) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The room ID.
+room_roomId :: Lens.Lens' Room (Prelude.Maybe Prelude.Text)
+room_roomId = Lens.lens (\Room' {roomId} -> roomId) (\s@Room' {} a -> s {roomId = a} :: Room)
+
+-- | The room update timestamp, in ISO 8601 format.
+room_updatedTimestamp :: Lens.Lens' Room (Prelude.Maybe Prelude.UTCTime)
+room_updatedTimestamp = Lens.lens (\Room' {updatedTimestamp} -> updatedTimestamp) (\s@Room' {} a -> s {updatedTimestamp = a} :: Room) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON Room where
+  parseJSON =
+    Data.withObject
+      "Room"
+      ( \x ->
+          Room'
+            Prelude.<$> (x Data..:? "AccountId")
+            Prelude.<*> (x Data..:? "CreatedBy")
+            Prelude.<*> (x Data..:? "CreatedTimestamp")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "RoomId")
+            Prelude.<*> (x Data..:? "UpdatedTimestamp")
+      )
+
+instance Prelude.Hashable Room where
+  hashWithSalt _salt Room' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` createdBy
+      `Prelude.hashWithSalt` createdTimestamp
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` roomId
+      `Prelude.hashWithSalt` updatedTimestamp
+
+instance Prelude.NFData Room where
+  rnf Room' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf createdTimestamp
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf roomId
+      `Prelude.seq` Prelude.rnf updatedTimestamp
diff --git a/gen/Amazonka/Chime/Types/RoomMembership.hs b/gen/Amazonka/Chime/Types/RoomMembership.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/RoomMembership.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.RoomMembership
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.RoomMembership where
+
+import Amazonka.Chime.Types.Member
+import Amazonka.Chime.Types.RoomMembershipRole
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The room membership details.
+--
+-- /See:/ 'newRoomMembership' smart constructor.
+data RoomMembership = RoomMembership'
+  { -- | The identifier of the user that invited the room member.
+    invitedBy :: Prelude.Maybe Prelude.Text,
+    member :: Prelude.Maybe Member,
+    -- | The membership role.
+    role' :: Prelude.Maybe RoomMembershipRole,
+    -- | The room ID.
+    roomId :: Prelude.Maybe Prelude.Text,
+    -- | The room membership update timestamp, in ISO 8601 format.
+    updatedTimestamp :: Prelude.Maybe Data.ISO8601
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RoomMembership' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'invitedBy', 'roomMembership_invitedBy' - The identifier of the user that invited the room member.
+--
+-- 'member', 'roomMembership_member' - Undocumented member.
+--
+-- 'role'', 'roomMembership_role' - The membership role.
+--
+-- 'roomId', 'roomMembership_roomId' - The room ID.
+--
+-- 'updatedTimestamp', 'roomMembership_updatedTimestamp' - The room membership update timestamp, in ISO 8601 format.
+newRoomMembership ::
+  RoomMembership
+newRoomMembership =
+  RoomMembership'
+    { invitedBy = Prelude.Nothing,
+      member = Prelude.Nothing,
+      role' = Prelude.Nothing,
+      roomId = Prelude.Nothing,
+      updatedTimestamp = Prelude.Nothing
+    }
+
+-- | The identifier of the user that invited the room member.
+roomMembership_invitedBy :: Lens.Lens' RoomMembership (Prelude.Maybe Prelude.Text)
+roomMembership_invitedBy = Lens.lens (\RoomMembership' {invitedBy} -> invitedBy) (\s@RoomMembership' {} a -> s {invitedBy = a} :: RoomMembership)
+
+-- | Undocumented member.
+roomMembership_member :: Lens.Lens' RoomMembership (Prelude.Maybe Member)
+roomMembership_member = Lens.lens (\RoomMembership' {member} -> member) (\s@RoomMembership' {} a -> s {member = a} :: RoomMembership)
+
+-- | The membership role.
+roomMembership_role :: Lens.Lens' RoomMembership (Prelude.Maybe RoomMembershipRole)
+roomMembership_role = Lens.lens (\RoomMembership' {role'} -> role') (\s@RoomMembership' {} a -> s {role' = a} :: RoomMembership)
+
+-- | The room ID.
+roomMembership_roomId :: Lens.Lens' RoomMembership (Prelude.Maybe Prelude.Text)
+roomMembership_roomId = Lens.lens (\RoomMembership' {roomId} -> roomId) (\s@RoomMembership' {} a -> s {roomId = a} :: RoomMembership)
+
+-- | The room membership update timestamp, in ISO 8601 format.
+roomMembership_updatedTimestamp :: Lens.Lens' RoomMembership (Prelude.Maybe Prelude.UTCTime)
+roomMembership_updatedTimestamp = Lens.lens (\RoomMembership' {updatedTimestamp} -> updatedTimestamp) (\s@RoomMembership' {} a -> s {updatedTimestamp = a} :: RoomMembership) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON RoomMembership where
+  parseJSON =
+    Data.withObject
+      "RoomMembership"
+      ( \x ->
+          RoomMembership'
+            Prelude.<$> (x Data..:? "InvitedBy")
+            Prelude.<*> (x Data..:? "Member")
+            Prelude.<*> (x Data..:? "Role")
+            Prelude.<*> (x Data..:? "RoomId")
+            Prelude.<*> (x Data..:? "UpdatedTimestamp")
+      )
+
+instance Prelude.Hashable RoomMembership where
+  hashWithSalt _salt RoomMembership' {..} =
+    _salt
+      `Prelude.hashWithSalt` invitedBy
+      `Prelude.hashWithSalt` member
+      `Prelude.hashWithSalt` role'
+      `Prelude.hashWithSalt` roomId
+      `Prelude.hashWithSalt` updatedTimestamp
+
+instance Prelude.NFData RoomMembership where
+  rnf RoomMembership' {..} =
+    Prelude.rnf invitedBy
+      `Prelude.seq` Prelude.rnf member
+      `Prelude.seq` Prelude.rnf role'
+      `Prelude.seq` Prelude.rnf roomId
+      `Prelude.seq` Prelude.rnf updatedTimestamp
diff --git a/gen/Amazonka/Chime/Types/RoomMembershipRole.hs b/gen/Amazonka/Chime/Types/RoomMembershipRole.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/RoomMembershipRole.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.RoomMembershipRole
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.RoomMembershipRole
+  ( RoomMembershipRole
+      ( ..,
+        RoomMembershipRole_Administrator,
+        RoomMembershipRole_Member
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RoomMembershipRole = RoomMembershipRole'
+  { fromRoomMembershipRole ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern RoomMembershipRole_Administrator :: RoomMembershipRole
+pattern RoomMembershipRole_Administrator = RoomMembershipRole' "Administrator"
+
+pattern RoomMembershipRole_Member :: RoomMembershipRole
+pattern RoomMembershipRole_Member = RoomMembershipRole' "Member"
+
+{-# COMPLETE
+  RoomMembershipRole_Administrator,
+  RoomMembershipRole_Member,
+  RoomMembershipRole'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/RoomRetentionSettings.hs b/gen/Amazonka/Chime/Types/RoomRetentionSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/RoomRetentionSettings.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.RoomRetentionSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.RoomRetentionSettings where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The retention settings that determine how long to retain chat-room
+-- messages for an Amazon Chime Enterprise account.
+--
+-- /See:/ 'newRoomRetentionSettings' smart constructor.
+data RoomRetentionSettings = RoomRetentionSettings'
+  { -- | The number of days for which to retain chat-room messages.
+    retentionDays :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RoomRetentionSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'retentionDays', 'roomRetentionSettings_retentionDays' - The number of days for which to retain chat-room messages.
+newRoomRetentionSettings ::
+  RoomRetentionSettings
+newRoomRetentionSettings =
+  RoomRetentionSettings'
+    { retentionDays =
+        Prelude.Nothing
+    }
+
+-- | The number of days for which to retain chat-room messages.
+roomRetentionSettings_retentionDays :: Lens.Lens' RoomRetentionSettings (Prelude.Maybe Prelude.Natural)
+roomRetentionSettings_retentionDays = Lens.lens (\RoomRetentionSettings' {retentionDays} -> retentionDays) (\s@RoomRetentionSettings' {} a -> s {retentionDays = a} :: RoomRetentionSettings)
+
+instance Data.FromJSON RoomRetentionSettings where
+  parseJSON =
+    Data.withObject
+      "RoomRetentionSettings"
+      ( \x ->
+          RoomRetentionSettings'
+            Prelude.<$> (x Data..:? "RetentionDays")
+      )
+
+instance Prelude.Hashable RoomRetentionSettings where
+  hashWithSalt _salt RoomRetentionSettings' {..} =
+    _salt `Prelude.hashWithSalt` retentionDays
+
+instance Prelude.NFData RoomRetentionSettings where
+  rnf RoomRetentionSettings' {..} =
+    Prelude.rnf retentionDays
+
+instance Data.ToJSON RoomRetentionSettings where
+  toJSON RoomRetentionSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("RetentionDays" Data..=)
+              Prelude.<$> retentionDays
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/SelectedVideoStreams.hs b/gen/Amazonka/Chime/Types/SelectedVideoStreams.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/SelectedVideoStreams.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.SelectedVideoStreams
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.SelectedVideoStreams where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The video streams to capture for a specified media capture pipeline. The
+-- total number of video streams can\'t exceed 25.
+--
+-- /See:/ 'newSelectedVideoStreams' smart constructor.
+data SelectedVideoStreams = SelectedVideoStreams'
+  { -- | The attendee IDs of the streams selected for a media capture pipeline.
+    attendeeIds :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | The external user IDs of the streams selected for a media capture
+    -- pipeline.
+    externalUserIds :: Prelude.Maybe (Prelude.NonEmpty (Data.Sensitive Prelude.Text))
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SelectedVideoStreams' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'attendeeIds', 'selectedVideoStreams_attendeeIds' - The attendee IDs of the streams selected for a media capture pipeline.
+--
+-- 'externalUserIds', 'selectedVideoStreams_externalUserIds' - The external user IDs of the streams selected for a media capture
+-- pipeline.
+newSelectedVideoStreams ::
+  SelectedVideoStreams
+newSelectedVideoStreams =
+  SelectedVideoStreams'
+    { attendeeIds =
+        Prelude.Nothing,
+      externalUserIds = Prelude.Nothing
+    }
+
+-- | The attendee IDs of the streams selected for a media capture pipeline.
+selectedVideoStreams_attendeeIds :: Lens.Lens' SelectedVideoStreams (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+selectedVideoStreams_attendeeIds = Lens.lens (\SelectedVideoStreams' {attendeeIds} -> attendeeIds) (\s@SelectedVideoStreams' {} a -> s {attendeeIds = a} :: SelectedVideoStreams) Prelude.. Lens.mapping Lens.coerced
+
+-- | The external user IDs of the streams selected for a media capture
+-- pipeline.
+selectedVideoStreams_externalUserIds :: Lens.Lens' SelectedVideoStreams (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+selectedVideoStreams_externalUserIds = Lens.lens (\SelectedVideoStreams' {externalUserIds} -> externalUserIds) (\s@SelectedVideoStreams' {} a -> s {externalUserIds = a} :: SelectedVideoStreams) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON SelectedVideoStreams where
+  parseJSON =
+    Data.withObject
+      "SelectedVideoStreams"
+      ( \x ->
+          SelectedVideoStreams'
+            Prelude.<$> (x Data..:? "AttendeeIds")
+            Prelude.<*> (x Data..:? "ExternalUserIds")
+      )
+
+instance Prelude.Hashable SelectedVideoStreams where
+  hashWithSalt _salt SelectedVideoStreams' {..} =
+    _salt
+      `Prelude.hashWithSalt` attendeeIds
+      `Prelude.hashWithSalt` externalUserIds
+
+instance Prelude.NFData SelectedVideoStreams where
+  rnf SelectedVideoStreams' {..} =
+    Prelude.rnf attendeeIds
+      `Prelude.seq` Prelude.rnf externalUserIds
+
+instance Data.ToJSON SelectedVideoStreams where
+  toJSON SelectedVideoStreams' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AttendeeIds" Data..=) Prelude.<$> attendeeIds,
+            ("ExternalUserIds" Data..=)
+              Prelude.<$> externalUserIds
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/SigninDelegateGroup.hs b/gen/Amazonka/Chime/Types/SigninDelegateGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/SigninDelegateGroup.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.SigninDelegateGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.SigninDelegateGroup where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | An Active Directory (AD) group whose members are granted permission to
+-- act as delegates.
+--
+-- /See:/ 'newSigninDelegateGroup' smart constructor.
+data SigninDelegateGroup = SigninDelegateGroup'
+  { -- | The group name.
+    groupName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SigninDelegateGroup' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'groupName', 'signinDelegateGroup_groupName' - The group name.
+newSigninDelegateGroup ::
+  SigninDelegateGroup
+newSigninDelegateGroup =
+  SigninDelegateGroup' {groupName = Prelude.Nothing}
+
+-- | The group name.
+signinDelegateGroup_groupName :: Lens.Lens' SigninDelegateGroup (Prelude.Maybe Prelude.Text)
+signinDelegateGroup_groupName = Lens.lens (\SigninDelegateGroup' {groupName} -> groupName) (\s@SigninDelegateGroup' {} a -> s {groupName = a} :: SigninDelegateGroup)
+
+instance Data.FromJSON SigninDelegateGroup where
+  parseJSON =
+    Data.withObject
+      "SigninDelegateGroup"
+      ( \x ->
+          SigninDelegateGroup'
+            Prelude.<$> (x Data..:? "GroupName")
+      )
+
+instance Prelude.Hashable SigninDelegateGroup where
+  hashWithSalt _salt SigninDelegateGroup' {..} =
+    _salt `Prelude.hashWithSalt` groupName
+
+instance Prelude.NFData SigninDelegateGroup where
+  rnf SigninDelegateGroup' {..} = Prelude.rnf groupName
+
+instance Data.ToJSON SigninDelegateGroup where
+  toJSON SigninDelegateGroup' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("GroupName" Data..=) Prelude.<$> groupName]
+      )
diff --git a/gen/Amazonka/Chime/Types/SipMediaApplication.hs b/gen/Amazonka/Chime/Types/SipMediaApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/SipMediaApplication.hs
@@ -0,0 +1,137 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.SipMediaApplication
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.SipMediaApplication where
+
+import Amazonka.Chime.Types.SipMediaApplicationEndpoint
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The details of the SIP media application, including name and endpoints.
+-- An AWS account can have multiple SIP media applications.
+--
+-- /See:/ 'newSipMediaApplication' smart constructor.
+data SipMediaApplication = SipMediaApplication'
+  { -- | The AWS Region in which the SIP media application is created.
+    awsRegion :: Prelude.Maybe Prelude.Text,
+    -- | The SIP media application creation timestamp, in ISO 8601 format.
+    createdTimestamp :: Prelude.Maybe Data.ISO8601,
+    -- | List of endpoints for SIP media application. Currently, only one
+    -- endpoint per SIP media application is permitted.
+    endpoints :: Prelude.Maybe (Prelude.NonEmpty SipMediaApplicationEndpoint),
+    -- | The name of the SIP media application.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The SIP media application ID.
+    sipMediaApplicationId :: Prelude.Maybe Prelude.Text,
+    -- | The SIP media application updated timestamp, in ISO 8601 format.
+    updatedTimestamp :: Prelude.Maybe Data.ISO8601
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SipMediaApplication' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsRegion', 'sipMediaApplication_awsRegion' - The AWS Region in which the SIP media application is created.
+--
+-- 'createdTimestamp', 'sipMediaApplication_createdTimestamp' - The SIP media application creation timestamp, in ISO 8601 format.
+--
+-- 'endpoints', 'sipMediaApplication_endpoints' - List of endpoints for SIP media application. Currently, only one
+-- endpoint per SIP media application is permitted.
+--
+-- 'name', 'sipMediaApplication_name' - The name of the SIP media application.
+--
+-- 'sipMediaApplicationId', 'sipMediaApplication_sipMediaApplicationId' - The SIP media application ID.
+--
+-- 'updatedTimestamp', 'sipMediaApplication_updatedTimestamp' - The SIP media application updated timestamp, in ISO 8601 format.
+newSipMediaApplication ::
+  SipMediaApplication
+newSipMediaApplication =
+  SipMediaApplication'
+    { awsRegion = Prelude.Nothing,
+      createdTimestamp = Prelude.Nothing,
+      endpoints = Prelude.Nothing,
+      name = Prelude.Nothing,
+      sipMediaApplicationId = Prelude.Nothing,
+      updatedTimestamp = Prelude.Nothing
+    }
+
+-- | The AWS Region in which the SIP media application is created.
+sipMediaApplication_awsRegion :: Lens.Lens' SipMediaApplication (Prelude.Maybe Prelude.Text)
+sipMediaApplication_awsRegion = Lens.lens (\SipMediaApplication' {awsRegion} -> awsRegion) (\s@SipMediaApplication' {} a -> s {awsRegion = a} :: SipMediaApplication)
+
+-- | The SIP media application creation timestamp, in ISO 8601 format.
+sipMediaApplication_createdTimestamp :: Lens.Lens' SipMediaApplication (Prelude.Maybe Prelude.UTCTime)
+sipMediaApplication_createdTimestamp = Lens.lens (\SipMediaApplication' {createdTimestamp} -> createdTimestamp) (\s@SipMediaApplication' {} a -> s {createdTimestamp = a} :: SipMediaApplication) Prelude.. Lens.mapping Data._Time
+
+-- | List of endpoints for SIP media application. Currently, only one
+-- endpoint per SIP media application is permitted.
+sipMediaApplication_endpoints :: Lens.Lens' SipMediaApplication (Prelude.Maybe (Prelude.NonEmpty SipMediaApplicationEndpoint))
+sipMediaApplication_endpoints = Lens.lens (\SipMediaApplication' {endpoints} -> endpoints) (\s@SipMediaApplication' {} a -> s {endpoints = a} :: SipMediaApplication) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the SIP media application.
+sipMediaApplication_name :: Lens.Lens' SipMediaApplication (Prelude.Maybe Prelude.Text)
+sipMediaApplication_name = Lens.lens (\SipMediaApplication' {name} -> name) (\s@SipMediaApplication' {} a -> s {name = a} :: SipMediaApplication)
+
+-- | The SIP media application ID.
+sipMediaApplication_sipMediaApplicationId :: Lens.Lens' SipMediaApplication (Prelude.Maybe Prelude.Text)
+sipMediaApplication_sipMediaApplicationId = Lens.lens (\SipMediaApplication' {sipMediaApplicationId} -> sipMediaApplicationId) (\s@SipMediaApplication' {} a -> s {sipMediaApplicationId = a} :: SipMediaApplication)
+
+-- | The SIP media application updated timestamp, in ISO 8601 format.
+sipMediaApplication_updatedTimestamp :: Lens.Lens' SipMediaApplication (Prelude.Maybe Prelude.UTCTime)
+sipMediaApplication_updatedTimestamp = Lens.lens (\SipMediaApplication' {updatedTimestamp} -> updatedTimestamp) (\s@SipMediaApplication' {} a -> s {updatedTimestamp = a} :: SipMediaApplication) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON SipMediaApplication where
+  parseJSON =
+    Data.withObject
+      "SipMediaApplication"
+      ( \x ->
+          SipMediaApplication'
+            Prelude.<$> (x Data..:? "AwsRegion")
+            Prelude.<*> (x Data..:? "CreatedTimestamp")
+            Prelude.<*> (x Data..:? "Endpoints")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "SipMediaApplicationId")
+            Prelude.<*> (x Data..:? "UpdatedTimestamp")
+      )
+
+instance Prelude.Hashable SipMediaApplication where
+  hashWithSalt _salt SipMediaApplication' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsRegion
+      `Prelude.hashWithSalt` createdTimestamp
+      `Prelude.hashWithSalt` endpoints
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` sipMediaApplicationId
+      `Prelude.hashWithSalt` updatedTimestamp
+
+instance Prelude.NFData SipMediaApplication where
+  rnf SipMediaApplication' {..} =
+    Prelude.rnf awsRegion
+      `Prelude.seq` Prelude.rnf createdTimestamp
+      `Prelude.seq` Prelude.rnf endpoints
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf sipMediaApplicationId
+      `Prelude.seq` Prelude.rnf updatedTimestamp
diff --git a/gen/Amazonka/Chime/Types/SipMediaApplicationCall.hs b/gen/Amazonka/Chime/Types/SipMediaApplicationCall.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/SipMediaApplicationCall.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.SipMediaApplicationCall
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.SipMediaApplicationCall where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A @Call@ instance for a SIP media application.
+--
+-- /See:/ 'newSipMediaApplicationCall' smart constructor.
+data SipMediaApplicationCall = SipMediaApplicationCall'
+  { -- | The transaction ID of a call.
+    transactionId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SipMediaApplicationCall' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'transactionId', 'sipMediaApplicationCall_transactionId' - The transaction ID of a call.
+newSipMediaApplicationCall ::
+  SipMediaApplicationCall
+newSipMediaApplicationCall =
+  SipMediaApplicationCall'
+    { transactionId =
+        Prelude.Nothing
+    }
+
+-- | The transaction ID of a call.
+sipMediaApplicationCall_transactionId :: Lens.Lens' SipMediaApplicationCall (Prelude.Maybe Prelude.Text)
+sipMediaApplicationCall_transactionId = Lens.lens (\SipMediaApplicationCall' {transactionId} -> transactionId) (\s@SipMediaApplicationCall' {} a -> s {transactionId = a} :: SipMediaApplicationCall)
+
+instance Data.FromJSON SipMediaApplicationCall where
+  parseJSON =
+    Data.withObject
+      "SipMediaApplicationCall"
+      ( \x ->
+          SipMediaApplicationCall'
+            Prelude.<$> (x Data..:? "TransactionId")
+      )
+
+instance Prelude.Hashable SipMediaApplicationCall where
+  hashWithSalt _salt SipMediaApplicationCall' {..} =
+    _salt `Prelude.hashWithSalt` transactionId
+
+instance Prelude.NFData SipMediaApplicationCall where
+  rnf SipMediaApplicationCall' {..} =
+    Prelude.rnf transactionId
diff --git a/gen/Amazonka/Chime/Types/SipMediaApplicationEndpoint.hs b/gen/Amazonka/Chime/Types/SipMediaApplicationEndpoint.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/SipMediaApplicationEndpoint.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.SipMediaApplicationEndpoint
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.SipMediaApplicationEndpoint where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The endpoint assigned to the SIP media application.
+--
+-- /See:/ 'newSipMediaApplicationEndpoint' smart constructor.
+data SipMediaApplicationEndpoint = SipMediaApplicationEndpoint'
+  { -- | Valid Amazon Resource Name (ARN) of the Lambda function. The function
+    -- must be created in the same AWS Region as the SIP media application.
+    lambdaArn :: Prelude.Maybe (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SipMediaApplicationEndpoint' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lambdaArn', 'sipMediaApplicationEndpoint_lambdaArn' - Valid Amazon Resource Name (ARN) of the Lambda function. The function
+-- must be created in the same AWS Region as the SIP media application.
+newSipMediaApplicationEndpoint ::
+  SipMediaApplicationEndpoint
+newSipMediaApplicationEndpoint =
+  SipMediaApplicationEndpoint'
+    { lambdaArn =
+        Prelude.Nothing
+    }
+
+-- | Valid Amazon Resource Name (ARN) of the Lambda function. The function
+-- must be created in the same AWS Region as the SIP media application.
+sipMediaApplicationEndpoint_lambdaArn :: Lens.Lens' SipMediaApplicationEndpoint (Prelude.Maybe Prelude.Text)
+sipMediaApplicationEndpoint_lambdaArn = Lens.lens (\SipMediaApplicationEndpoint' {lambdaArn} -> lambdaArn) (\s@SipMediaApplicationEndpoint' {} a -> s {lambdaArn = a} :: SipMediaApplicationEndpoint) Prelude.. Lens.mapping Data._Sensitive
+
+instance Data.FromJSON SipMediaApplicationEndpoint where
+  parseJSON =
+    Data.withObject
+      "SipMediaApplicationEndpoint"
+      ( \x ->
+          SipMediaApplicationEndpoint'
+            Prelude.<$> (x Data..:? "LambdaArn")
+      )
+
+instance Prelude.Hashable SipMediaApplicationEndpoint where
+  hashWithSalt _salt SipMediaApplicationEndpoint' {..} =
+    _salt `Prelude.hashWithSalt` lambdaArn
+
+instance Prelude.NFData SipMediaApplicationEndpoint where
+  rnf SipMediaApplicationEndpoint' {..} =
+    Prelude.rnf lambdaArn
+
+instance Data.ToJSON SipMediaApplicationEndpoint where
+  toJSON SipMediaApplicationEndpoint' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("LambdaArn" Data..=) Prelude.<$> lambdaArn]
+      )
diff --git a/gen/Amazonka/Chime/Types/SipMediaApplicationLoggingConfiguration.hs b/gen/Amazonka/Chime/Types/SipMediaApplicationLoggingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/SipMediaApplicationLoggingConfiguration.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.SipMediaApplicationLoggingConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.SipMediaApplicationLoggingConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Logging configuration of the SIP media application.
+--
+-- /See:/ 'newSipMediaApplicationLoggingConfiguration' smart constructor.
+data SipMediaApplicationLoggingConfiguration = SipMediaApplicationLoggingConfiguration'
+  { -- | Enables application message logs for the SIP media application.
+    enableSipMediaApplicationMessageLogs :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SipMediaApplicationLoggingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'enableSipMediaApplicationMessageLogs', 'sipMediaApplicationLoggingConfiguration_enableSipMediaApplicationMessageLogs' - Enables application message logs for the SIP media application.
+newSipMediaApplicationLoggingConfiguration ::
+  SipMediaApplicationLoggingConfiguration
+newSipMediaApplicationLoggingConfiguration =
+  SipMediaApplicationLoggingConfiguration'
+    { enableSipMediaApplicationMessageLogs =
+        Prelude.Nothing
+    }
+
+-- | Enables application message logs for the SIP media application.
+sipMediaApplicationLoggingConfiguration_enableSipMediaApplicationMessageLogs :: Lens.Lens' SipMediaApplicationLoggingConfiguration (Prelude.Maybe Prelude.Bool)
+sipMediaApplicationLoggingConfiguration_enableSipMediaApplicationMessageLogs = Lens.lens (\SipMediaApplicationLoggingConfiguration' {enableSipMediaApplicationMessageLogs} -> enableSipMediaApplicationMessageLogs) (\s@SipMediaApplicationLoggingConfiguration' {} a -> s {enableSipMediaApplicationMessageLogs = a} :: SipMediaApplicationLoggingConfiguration)
+
+instance
+  Data.FromJSON
+    SipMediaApplicationLoggingConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "SipMediaApplicationLoggingConfiguration"
+      ( \x ->
+          SipMediaApplicationLoggingConfiguration'
+            Prelude.<$> (x Data..:? "EnableSipMediaApplicationMessageLogs")
+      )
+
+instance
+  Prelude.Hashable
+    SipMediaApplicationLoggingConfiguration
+  where
+  hashWithSalt
+    _salt
+    SipMediaApplicationLoggingConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` enableSipMediaApplicationMessageLogs
+
+instance
+  Prelude.NFData
+    SipMediaApplicationLoggingConfiguration
+  where
+  rnf SipMediaApplicationLoggingConfiguration' {..} =
+    Prelude.rnf enableSipMediaApplicationMessageLogs
+
+instance
+  Data.ToJSON
+    SipMediaApplicationLoggingConfiguration
+  where
+  toJSON SipMediaApplicationLoggingConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("EnableSipMediaApplicationMessageLogs" Data..=)
+              Prelude.<$> enableSipMediaApplicationMessageLogs
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/SipRule.hs b/gen/Amazonka/Chime/Types/SipRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/SipRule.hs
@@ -0,0 +1,183 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.SipRule
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.SipRule where
+
+import Amazonka.Chime.Types.SipRuleTargetApplication
+import Amazonka.Chime.Types.SipRuleTriggerType
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The SIP rule details, including name, triggers, and target applications.
+-- An AWS account can have multiple SIP rules.
+--
+-- /See:/ 'newSipRule' smart constructor.
+data SipRule = SipRule'
+  { -- | The time at which the SIP rule was created, in ISO 8601 format.
+    createdTimestamp :: Prelude.Maybe Data.ISO8601,
+    -- | Indicates whether the SIP rule is enabled or disabled. You must disable
+    -- a rule before you can delete it.
+    disabled :: Prelude.Maybe Prelude.Bool,
+    -- | The name of the SIP rule.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The SIP rule ID.
+    sipRuleId :: Prelude.Maybe Prelude.Text,
+    -- | Target SIP media application and other details, such as priority and AWS
+    -- Region, to be specified in the SIP rule. Only one SIP rule per AWS
+    -- Region can be provided.
+    targetApplications :: Prelude.Maybe (Prelude.NonEmpty SipRuleTargetApplication),
+    -- | The type of trigger assigned to the SIP rule in @TriggerValue@,
+    -- currently @RequestUriHostname@ or @ToPhoneNumber@.
+    triggerType :: Prelude.Maybe SipRuleTriggerType,
+    -- | If @TriggerType@ is @RequestUriHostname@, then the value can be the
+    -- outbound host name of the Amazon Chime Voice Connector. If @TriggerType@
+    -- is @ToPhoneNumber@, then the value can be a customer-owned phone number
+    -- in E164 format. @SipRule@ is triggered when a SIP rule requests host
+    -- name or @ToPhoneNumber@ matches in the incoming SIP request.
+    triggerValue :: Prelude.Maybe Prelude.Text,
+    -- | The time at which the SIP rule was last updated, in ISO 8601 format.
+    updatedTimestamp :: Prelude.Maybe Data.ISO8601
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SipRule' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'createdTimestamp', 'sipRule_createdTimestamp' - The time at which the SIP rule was created, in ISO 8601 format.
+--
+-- 'disabled', 'sipRule_disabled' - Indicates whether the SIP rule is enabled or disabled. You must disable
+-- a rule before you can delete it.
+--
+-- 'name', 'sipRule_name' - The name of the SIP rule.
+--
+-- 'sipRuleId', 'sipRule_sipRuleId' - The SIP rule ID.
+--
+-- 'targetApplications', 'sipRule_targetApplications' - Target SIP media application and other details, such as priority and AWS
+-- Region, to be specified in the SIP rule. Only one SIP rule per AWS
+-- Region can be provided.
+--
+-- 'triggerType', 'sipRule_triggerType' - The type of trigger assigned to the SIP rule in @TriggerValue@,
+-- currently @RequestUriHostname@ or @ToPhoneNumber@.
+--
+-- 'triggerValue', 'sipRule_triggerValue' - If @TriggerType@ is @RequestUriHostname@, then the value can be the
+-- outbound host name of the Amazon Chime Voice Connector. If @TriggerType@
+-- is @ToPhoneNumber@, then the value can be a customer-owned phone number
+-- in E164 format. @SipRule@ is triggered when a SIP rule requests host
+-- name or @ToPhoneNumber@ matches in the incoming SIP request.
+--
+-- 'updatedTimestamp', 'sipRule_updatedTimestamp' - The time at which the SIP rule was last updated, in ISO 8601 format.
+newSipRule ::
+  SipRule
+newSipRule =
+  SipRule'
+    { createdTimestamp = Prelude.Nothing,
+      disabled = Prelude.Nothing,
+      name = Prelude.Nothing,
+      sipRuleId = Prelude.Nothing,
+      targetApplications = Prelude.Nothing,
+      triggerType = Prelude.Nothing,
+      triggerValue = Prelude.Nothing,
+      updatedTimestamp = Prelude.Nothing
+    }
+
+-- | The time at which the SIP rule was created, in ISO 8601 format.
+sipRule_createdTimestamp :: Lens.Lens' SipRule (Prelude.Maybe Prelude.UTCTime)
+sipRule_createdTimestamp = Lens.lens (\SipRule' {createdTimestamp} -> createdTimestamp) (\s@SipRule' {} a -> s {createdTimestamp = a} :: SipRule) Prelude.. Lens.mapping Data._Time
+
+-- | Indicates whether the SIP rule is enabled or disabled. You must disable
+-- a rule before you can delete it.
+sipRule_disabled :: Lens.Lens' SipRule (Prelude.Maybe Prelude.Bool)
+sipRule_disabled = Lens.lens (\SipRule' {disabled} -> disabled) (\s@SipRule' {} a -> s {disabled = a} :: SipRule)
+
+-- | The name of the SIP rule.
+sipRule_name :: Lens.Lens' SipRule (Prelude.Maybe Prelude.Text)
+sipRule_name = Lens.lens (\SipRule' {name} -> name) (\s@SipRule' {} a -> s {name = a} :: SipRule)
+
+-- | The SIP rule ID.
+sipRule_sipRuleId :: Lens.Lens' SipRule (Prelude.Maybe Prelude.Text)
+sipRule_sipRuleId = Lens.lens (\SipRule' {sipRuleId} -> sipRuleId) (\s@SipRule' {} a -> s {sipRuleId = a} :: SipRule)
+
+-- | Target SIP media application and other details, such as priority and AWS
+-- Region, to be specified in the SIP rule. Only one SIP rule per AWS
+-- Region can be provided.
+sipRule_targetApplications :: Lens.Lens' SipRule (Prelude.Maybe (Prelude.NonEmpty SipRuleTargetApplication))
+sipRule_targetApplications = Lens.lens (\SipRule' {targetApplications} -> targetApplications) (\s@SipRule' {} a -> s {targetApplications = a} :: SipRule) Prelude.. Lens.mapping Lens.coerced
+
+-- | The type of trigger assigned to the SIP rule in @TriggerValue@,
+-- currently @RequestUriHostname@ or @ToPhoneNumber@.
+sipRule_triggerType :: Lens.Lens' SipRule (Prelude.Maybe SipRuleTriggerType)
+sipRule_triggerType = Lens.lens (\SipRule' {triggerType} -> triggerType) (\s@SipRule' {} a -> s {triggerType = a} :: SipRule)
+
+-- | If @TriggerType@ is @RequestUriHostname@, then the value can be the
+-- outbound host name of the Amazon Chime Voice Connector. If @TriggerType@
+-- is @ToPhoneNumber@, then the value can be a customer-owned phone number
+-- in E164 format. @SipRule@ is triggered when a SIP rule requests host
+-- name or @ToPhoneNumber@ matches in the incoming SIP request.
+sipRule_triggerValue :: Lens.Lens' SipRule (Prelude.Maybe Prelude.Text)
+sipRule_triggerValue = Lens.lens (\SipRule' {triggerValue} -> triggerValue) (\s@SipRule' {} a -> s {triggerValue = a} :: SipRule)
+
+-- | The time at which the SIP rule was last updated, in ISO 8601 format.
+sipRule_updatedTimestamp :: Lens.Lens' SipRule (Prelude.Maybe Prelude.UTCTime)
+sipRule_updatedTimestamp = Lens.lens (\SipRule' {updatedTimestamp} -> updatedTimestamp) (\s@SipRule' {} a -> s {updatedTimestamp = a} :: SipRule) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON SipRule where
+  parseJSON =
+    Data.withObject
+      "SipRule"
+      ( \x ->
+          SipRule'
+            Prelude.<$> (x Data..:? "CreatedTimestamp")
+            Prelude.<*> (x Data..:? "Disabled")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "SipRuleId")
+            Prelude.<*> (x Data..:? "TargetApplications")
+            Prelude.<*> (x Data..:? "TriggerType")
+            Prelude.<*> (x Data..:? "TriggerValue")
+            Prelude.<*> (x Data..:? "UpdatedTimestamp")
+      )
+
+instance Prelude.Hashable SipRule where
+  hashWithSalt _salt SipRule' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdTimestamp
+      `Prelude.hashWithSalt` disabled
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` sipRuleId
+      `Prelude.hashWithSalt` targetApplications
+      `Prelude.hashWithSalt` triggerType
+      `Prelude.hashWithSalt` triggerValue
+      `Prelude.hashWithSalt` updatedTimestamp
+
+instance Prelude.NFData SipRule where
+  rnf SipRule' {..} =
+    Prelude.rnf createdTimestamp
+      `Prelude.seq` Prelude.rnf disabled
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf sipRuleId
+      `Prelude.seq` Prelude.rnf targetApplications
+      `Prelude.seq` Prelude.rnf triggerType
+      `Prelude.seq` Prelude.rnf triggerValue
+      `Prelude.seq` Prelude.rnf updatedTimestamp
diff --git a/gen/Amazonka/Chime/Types/SipRuleTargetApplication.hs b/gen/Amazonka/Chime/Types/SipRuleTargetApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/SipRuleTargetApplication.hs
@@ -0,0 +1,110 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.SipRuleTargetApplication
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.SipRuleTargetApplication where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Target SIP media application and other details, such as priority and AWS
+-- Region, to be specified in the SIP rule. Only one SIP rule per AWS
+-- Region can be provided.
+--
+-- /See:/ 'newSipRuleTargetApplication' smart constructor.
+data SipRuleTargetApplication = SipRuleTargetApplication'
+  { -- | The AWS Region of the target application.
+    awsRegion :: Prelude.Maybe Prelude.Text,
+    -- | Priority of the SIP media application in the target list.
+    priority :: Prelude.Maybe Prelude.Natural,
+    -- | The SIP media application ID.
+    sipMediaApplicationId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SipRuleTargetApplication' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsRegion', 'sipRuleTargetApplication_awsRegion' - The AWS Region of the target application.
+--
+-- 'priority', 'sipRuleTargetApplication_priority' - Priority of the SIP media application in the target list.
+--
+-- 'sipMediaApplicationId', 'sipRuleTargetApplication_sipMediaApplicationId' - The SIP media application ID.
+newSipRuleTargetApplication ::
+  SipRuleTargetApplication
+newSipRuleTargetApplication =
+  SipRuleTargetApplication'
+    { awsRegion =
+        Prelude.Nothing,
+      priority = Prelude.Nothing,
+      sipMediaApplicationId = Prelude.Nothing
+    }
+
+-- | The AWS Region of the target application.
+sipRuleTargetApplication_awsRegion :: Lens.Lens' SipRuleTargetApplication (Prelude.Maybe Prelude.Text)
+sipRuleTargetApplication_awsRegion = Lens.lens (\SipRuleTargetApplication' {awsRegion} -> awsRegion) (\s@SipRuleTargetApplication' {} a -> s {awsRegion = a} :: SipRuleTargetApplication)
+
+-- | Priority of the SIP media application in the target list.
+sipRuleTargetApplication_priority :: Lens.Lens' SipRuleTargetApplication (Prelude.Maybe Prelude.Natural)
+sipRuleTargetApplication_priority = Lens.lens (\SipRuleTargetApplication' {priority} -> priority) (\s@SipRuleTargetApplication' {} a -> s {priority = a} :: SipRuleTargetApplication)
+
+-- | The SIP media application ID.
+sipRuleTargetApplication_sipMediaApplicationId :: Lens.Lens' SipRuleTargetApplication (Prelude.Maybe Prelude.Text)
+sipRuleTargetApplication_sipMediaApplicationId = Lens.lens (\SipRuleTargetApplication' {sipMediaApplicationId} -> sipMediaApplicationId) (\s@SipRuleTargetApplication' {} a -> s {sipMediaApplicationId = a} :: SipRuleTargetApplication)
+
+instance Data.FromJSON SipRuleTargetApplication where
+  parseJSON =
+    Data.withObject
+      "SipRuleTargetApplication"
+      ( \x ->
+          SipRuleTargetApplication'
+            Prelude.<$> (x Data..:? "AwsRegion")
+            Prelude.<*> (x Data..:? "Priority")
+            Prelude.<*> (x Data..:? "SipMediaApplicationId")
+      )
+
+instance Prelude.Hashable SipRuleTargetApplication where
+  hashWithSalt _salt SipRuleTargetApplication' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsRegion
+      `Prelude.hashWithSalt` priority
+      `Prelude.hashWithSalt` sipMediaApplicationId
+
+instance Prelude.NFData SipRuleTargetApplication where
+  rnf SipRuleTargetApplication' {..} =
+    Prelude.rnf awsRegion
+      `Prelude.seq` Prelude.rnf priority
+      `Prelude.seq` Prelude.rnf sipMediaApplicationId
+
+instance Data.ToJSON SipRuleTargetApplication where
+  toJSON SipRuleTargetApplication' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AwsRegion" Data..=) Prelude.<$> awsRegion,
+            ("Priority" Data..=) Prelude.<$> priority,
+            ("SipMediaApplicationId" Data..=)
+              Prelude.<$> sipMediaApplicationId
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/SipRuleTriggerType.hs b/gen/Amazonka/Chime/Types/SipRuleTriggerType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/SipRuleTriggerType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.SipRuleTriggerType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.SipRuleTriggerType
+  ( SipRuleTriggerType
+      ( ..,
+        SipRuleTriggerType_RequestUriHostname,
+        SipRuleTriggerType_ToPhoneNumber
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SipRuleTriggerType = SipRuleTriggerType'
+  { fromSipRuleTriggerType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern SipRuleTriggerType_RequestUriHostname :: SipRuleTriggerType
+pattern SipRuleTriggerType_RequestUriHostname = SipRuleTriggerType' "RequestUriHostname"
+
+pattern SipRuleTriggerType_ToPhoneNumber :: SipRuleTriggerType
+pattern SipRuleTriggerType_ToPhoneNumber = SipRuleTriggerType' "ToPhoneNumber"
+
+{-# COMPLETE
+  SipRuleTriggerType_RequestUriHostname,
+  SipRuleTriggerType_ToPhoneNumber,
+  SipRuleTriggerType'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/SortOrder.hs b/gen/Amazonka/Chime/Types/SortOrder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/SortOrder.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.SortOrder
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.SortOrder
+  ( SortOrder
+      ( ..,
+        SortOrder_ASCENDING,
+        SortOrder_DESCENDING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SortOrder = SortOrder'
+  { fromSortOrder ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern SortOrder_ASCENDING :: SortOrder
+pattern SortOrder_ASCENDING = SortOrder' "ASCENDING"
+
+pattern SortOrder_DESCENDING :: SortOrder
+pattern SortOrder_DESCENDING = SortOrder' "DESCENDING"
+
+{-# COMPLETE
+  SortOrder_ASCENDING,
+  SortOrder_DESCENDING,
+  SortOrder'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/SourceConfiguration.hs b/gen/Amazonka/Chime/Types/SourceConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/SourceConfiguration.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.SourceConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.SourceConfiguration where
+
+import Amazonka.Chime.Types.SelectedVideoStreams
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Source configuration for a specified media capture pipeline.
+--
+-- /See:/ 'newSourceConfiguration' smart constructor.
+data SourceConfiguration = SourceConfiguration'
+  { -- | The selected video streams to capture for a specified media capture
+    -- pipeline. The number of video streams can\'t exceed 25.
+    selectedVideoStreams :: Prelude.Maybe SelectedVideoStreams
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SourceConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'selectedVideoStreams', 'sourceConfiguration_selectedVideoStreams' - The selected video streams to capture for a specified media capture
+-- pipeline. The number of video streams can\'t exceed 25.
+newSourceConfiguration ::
+  SourceConfiguration
+newSourceConfiguration =
+  SourceConfiguration'
+    { selectedVideoStreams =
+        Prelude.Nothing
+    }
+
+-- | The selected video streams to capture for a specified media capture
+-- pipeline. The number of video streams can\'t exceed 25.
+sourceConfiguration_selectedVideoStreams :: Lens.Lens' SourceConfiguration (Prelude.Maybe SelectedVideoStreams)
+sourceConfiguration_selectedVideoStreams = Lens.lens (\SourceConfiguration' {selectedVideoStreams} -> selectedVideoStreams) (\s@SourceConfiguration' {} a -> s {selectedVideoStreams = a} :: SourceConfiguration)
+
+instance Data.FromJSON SourceConfiguration where
+  parseJSON =
+    Data.withObject
+      "SourceConfiguration"
+      ( \x ->
+          SourceConfiguration'
+            Prelude.<$> (x Data..:? "SelectedVideoStreams")
+      )
+
+instance Prelude.Hashable SourceConfiguration where
+  hashWithSalt _salt SourceConfiguration' {..} =
+    _salt `Prelude.hashWithSalt` selectedVideoStreams
+
+instance Prelude.NFData SourceConfiguration where
+  rnf SourceConfiguration' {..} =
+    Prelude.rnf selectedVideoStreams
+
+instance Data.ToJSON SourceConfiguration where
+  toJSON SourceConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SelectedVideoStreams" Data..=)
+              Prelude.<$> selectedVideoStreams
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/StreamingConfiguration.hs b/gen/Amazonka/Chime/Types/StreamingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/StreamingConfiguration.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.StreamingConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.StreamingConfiguration where
+
+import Amazonka.Chime.Types.StreamingNotificationTarget
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The streaming configuration associated with an Amazon Chime Voice
+-- Connector. Specifies whether media streaming is enabled for sending to
+-- Amazon Kinesis, and shows the retention period for the Amazon Kinesis
+-- data, in hours.
+--
+-- /See:/ 'newStreamingConfiguration' smart constructor.
+data StreamingConfiguration = StreamingConfiguration'
+  { -- | When true, media streaming to Amazon Kinesis is turned off.
+    disabled :: Prelude.Maybe Prelude.Bool,
+    -- | The streaming notification targets.
+    streamingNotificationTargets :: Prelude.Maybe (Prelude.NonEmpty StreamingNotificationTarget),
+    -- | The retention period, in hours, for the Amazon Kinesis data.
+    dataRetentionInHours :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StreamingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'disabled', 'streamingConfiguration_disabled' - When true, media streaming to Amazon Kinesis is turned off.
+--
+-- 'streamingNotificationTargets', 'streamingConfiguration_streamingNotificationTargets' - The streaming notification targets.
+--
+-- 'dataRetentionInHours', 'streamingConfiguration_dataRetentionInHours' - The retention period, in hours, for the Amazon Kinesis data.
+newStreamingConfiguration ::
+  -- | 'dataRetentionInHours'
+  Prelude.Natural ->
+  StreamingConfiguration
+newStreamingConfiguration pDataRetentionInHours_ =
+  StreamingConfiguration'
+    { disabled = Prelude.Nothing,
+      streamingNotificationTargets = Prelude.Nothing,
+      dataRetentionInHours = pDataRetentionInHours_
+    }
+
+-- | When true, media streaming to Amazon Kinesis is turned off.
+streamingConfiguration_disabled :: Lens.Lens' StreamingConfiguration (Prelude.Maybe Prelude.Bool)
+streamingConfiguration_disabled = Lens.lens (\StreamingConfiguration' {disabled} -> disabled) (\s@StreamingConfiguration' {} a -> s {disabled = a} :: StreamingConfiguration)
+
+-- | The streaming notification targets.
+streamingConfiguration_streamingNotificationTargets :: Lens.Lens' StreamingConfiguration (Prelude.Maybe (Prelude.NonEmpty StreamingNotificationTarget))
+streamingConfiguration_streamingNotificationTargets = Lens.lens (\StreamingConfiguration' {streamingNotificationTargets} -> streamingNotificationTargets) (\s@StreamingConfiguration' {} a -> s {streamingNotificationTargets = a} :: StreamingConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The retention period, in hours, for the Amazon Kinesis data.
+streamingConfiguration_dataRetentionInHours :: Lens.Lens' StreamingConfiguration Prelude.Natural
+streamingConfiguration_dataRetentionInHours = Lens.lens (\StreamingConfiguration' {dataRetentionInHours} -> dataRetentionInHours) (\s@StreamingConfiguration' {} a -> s {dataRetentionInHours = a} :: StreamingConfiguration)
+
+instance Data.FromJSON StreamingConfiguration where
+  parseJSON =
+    Data.withObject
+      "StreamingConfiguration"
+      ( \x ->
+          StreamingConfiguration'
+            Prelude.<$> (x Data..:? "Disabled")
+            Prelude.<*> (x Data..:? "StreamingNotificationTargets")
+            Prelude.<*> (x Data..: "DataRetentionInHours")
+      )
+
+instance Prelude.Hashable StreamingConfiguration where
+  hashWithSalt _salt StreamingConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` disabled
+      `Prelude.hashWithSalt` streamingNotificationTargets
+      `Prelude.hashWithSalt` dataRetentionInHours
+
+instance Prelude.NFData StreamingConfiguration where
+  rnf StreamingConfiguration' {..} =
+    Prelude.rnf disabled
+      `Prelude.seq` Prelude.rnf streamingNotificationTargets
+      `Prelude.seq` Prelude.rnf dataRetentionInHours
+
+instance Data.ToJSON StreamingConfiguration where
+  toJSON StreamingConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Disabled" Data..=) Prelude.<$> disabled,
+            ("StreamingNotificationTargets" Data..=)
+              Prelude.<$> streamingNotificationTargets,
+            Prelude.Just
+              ( "DataRetentionInHours"
+                  Data..= dataRetentionInHours
+              )
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/StreamingNotificationTarget.hs b/gen/Amazonka/Chime/Types/StreamingNotificationTarget.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/StreamingNotificationTarget.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.StreamingNotificationTarget
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.StreamingNotificationTarget where
+
+import Amazonka.Chime.Types.NotificationTarget
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The targeted recipient for a streaming configuration notification.
+--
+-- /See:/ 'newStreamingNotificationTarget' smart constructor.
+data StreamingNotificationTarget = StreamingNotificationTarget'
+  { -- | The streaming notification target.
+    notificationTarget :: NotificationTarget
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StreamingNotificationTarget' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'notificationTarget', 'streamingNotificationTarget_notificationTarget' - The streaming notification target.
+newStreamingNotificationTarget ::
+  -- | 'notificationTarget'
+  NotificationTarget ->
+  StreamingNotificationTarget
+newStreamingNotificationTarget pNotificationTarget_ =
+  StreamingNotificationTarget'
+    { notificationTarget =
+        pNotificationTarget_
+    }
+
+-- | The streaming notification target.
+streamingNotificationTarget_notificationTarget :: Lens.Lens' StreamingNotificationTarget NotificationTarget
+streamingNotificationTarget_notificationTarget = Lens.lens (\StreamingNotificationTarget' {notificationTarget} -> notificationTarget) (\s@StreamingNotificationTarget' {} a -> s {notificationTarget = a} :: StreamingNotificationTarget)
+
+instance Data.FromJSON StreamingNotificationTarget where
+  parseJSON =
+    Data.withObject
+      "StreamingNotificationTarget"
+      ( \x ->
+          StreamingNotificationTarget'
+            Prelude.<$> (x Data..: "NotificationTarget")
+      )
+
+instance Prelude.Hashable StreamingNotificationTarget where
+  hashWithSalt _salt StreamingNotificationTarget' {..} =
+    _salt `Prelude.hashWithSalt` notificationTarget
+
+instance Prelude.NFData StreamingNotificationTarget where
+  rnf StreamingNotificationTarget' {..} =
+    Prelude.rnf notificationTarget
+
+instance Data.ToJSON StreamingNotificationTarget where
+  toJSON StreamingNotificationTarget' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("NotificationTarget" Data..= notificationTarget)
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/Tag.hs b/gen/Amazonka/Chime/Types/Tag.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/Tag.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.Tag
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.Tag where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a tag applied to a resource.
+--
+-- /See:/ 'newTag' smart constructor.
+data Tag = Tag'
+  { -- | The key of the tag.
+    key :: Data.Sensitive Prelude.Text,
+    -- | The value of the tag.
+    value :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Tag' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'key', 'tag_key' - The key of the tag.
+--
+-- 'value', 'tag_value' - The value of the tag.
+newTag ::
+  -- | 'key'
+  Prelude.Text ->
+  -- | 'value'
+  Prelude.Text ->
+  Tag
+newTag pKey_ pValue_ =
+  Tag'
+    { key = Data._Sensitive Lens.# pKey_,
+      value = Data._Sensitive Lens.# pValue_
+    }
+
+-- | The key of the tag.
+tag_key :: Lens.Lens' Tag Prelude.Text
+tag_key = Lens.lens (\Tag' {key} -> key) (\s@Tag' {} a -> s {key = a} :: Tag) Prelude.. Data._Sensitive
+
+-- | The value of the tag.
+tag_value :: Lens.Lens' Tag Prelude.Text
+tag_value = Lens.lens (\Tag' {value} -> value) (\s@Tag' {} a -> s {value = a} :: Tag) Prelude.. Data._Sensitive
+
+instance Data.FromJSON Tag where
+  parseJSON =
+    Data.withObject
+      "Tag"
+      ( \x ->
+          Tag'
+            Prelude.<$> (x Data..: "Key")
+            Prelude.<*> (x Data..: "Value")
+      )
+
+instance Prelude.Hashable Tag where
+  hashWithSalt _salt Tag' {..} =
+    _salt
+      `Prelude.hashWithSalt` key
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData Tag where
+  rnf Tag' {..} =
+    Prelude.rnf key `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON Tag where
+  toJSON Tag' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Key" Data..= key),
+            Prelude.Just ("Value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/TelephonySettings.hs b/gen/Amazonka/Chime/Types/TelephonySettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/TelephonySettings.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.TelephonySettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.TelephonySettings where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings that allow management of telephony permissions for an Amazon
+-- Chime user, such as inbound and outbound calling and text messaging.
+--
+-- /See:/ 'newTelephonySettings' smart constructor.
+data TelephonySettings = TelephonySettings'
+  { -- | Allows or denies inbound calling.
+    inboundCalling :: Prelude.Bool,
+    -- | Allows or denies outbound calling.
+    outboundCalling :: Prelude.Bool,
+    -- | Allows or denies SMS messaging.
+    sms :: Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TelephonySettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'inboundCalling', 'telephonySettings_inboundCalling' - Allows or denies inbound calling.
+--
+-- 'outboundCalling', 'telephonySettings_outboundCalling' - Allows or denies outbound calling.
+--
+-- 'sms', 'telephonySettings_sms' - Allows or denies SMS messaging.
+newTelephonySettings ::
+  -- | 'inboundCalling'
+  Prelude.Bool ->
+  -- | 'outboundCalling'
+  Prelude.Bool ->
+  -- | 'sms'
+  Prelude.Bool ->
+  TelephonySettings
+newTelephonySettings
+  pInboundCalling_
+  pOutboundCalling_
+  pSMS_ =
+    TelephonySettings'
+      { inboundCalling =
+          pInboundCalling_,
+        outboundCalling = pOutboundCalling_,
+        sms = pSMS_
+      }
+
+-- | Allows or denies inbound calling.
+telephonySettings_inboundCalling :: Lens.Lens' TelephonySettings Prelude.Bool
+telephonySettings_inboundCalling = Lens.lens (\TelephonySettings' {inboundCalling} -> inboundCalling) (\s@TelephonySettings' {} a -> s {inboundCalling = a} :: TelephonySettings)
+
+-- | Allows or denies outbound calling.
+telephonySettings_outboundCalling :: Lens.Lens' TelephonySettings Prelude.Bool
+telephonySettings_outboundCalling = Lens.lens (\TelephonySettings' {outboundCalling} -> outboundCalling) (\s@TelephonySettings' {} a -> s {outboundCalling = a} :: TelephonySettings)
+
+-- | Allows or denies SMS messaging.
+telephonySettings_sms :: Lens.Lens' TelephonySettings Prelude.Bool
+telephonySettings_sms = Lens.lens (\TelephonySettings' {sms} -> sms) (\s@TelephonySettings' {} a -> s {sms = a} :: TelephonySettings)
+
+instance Data.FromJSON TelephonySettings where
+  parseJSON =
+    Data.withObject
+      "TelephonySettings"
+      ( \x ->
+          TelephonySettings'
+            Prelude.<$> (x Data..: "InboundCalling")
+            Prelude.<*> (x Data..: "OutboundCalling")
+            Prelude.<*> (x Data..: "SMS")
+      )
+
+instance Prelude.Hashable TelephonySettings where
+  hashWithSalt _salt TelephonySettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` inboundCalling
+      `Prelude.hashWithSalt` outboundCalling
+      `Prelude.hashWithSalt` sms
+
+instance Prelude.NFData TelephonySettings where
+  rnf TelephonySettings' {..} =
+    Prelude.rnf inboundCalling
+      `Prelude.seq` Prelude.rnf outboundCalling
+      `Prelude.seq` Prelude.rnf sms
+
+instance Data.ToJSON TelephonySettings where
+  toJSON TelephonySettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("InboundCalling" Data..= inboundCalling),
+            Prelude.Just
+              ("OutboundCalling" Data..= outboundCalling),
+            Prelude.Just ("SMS" Data..= sms)
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/Termination.hs b/gen/Amazonka/Chime/Types/Termination.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/Termination.hs
@@ -0,0 +1,145 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.Termination
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.Termination where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Termination settings enable your SIP hosts to make outbound calls using
+-- your Amazon Chime Voice Connector.
+--
+-- /See:/ 'newTermination' smart constructor.
+data Termination = Termination'
+  { -- | The countries to which calls are allowed, in ISO 3166-1 alpha-2 format.
+    -- Required.
+    callingRegions :: Prelude.Maybe [Prelude.Text],
+    -- | The IP addresses allowed to make calls, in CIDR format. Required.
+    cidrAllowedList :: Prelude.Maybe [Prelude.Text],
+    -- | The limit on calls per second. Max value based on account service quota.
+    -- Default value of 1.
+    cpsLimit :: Prelude.Maybe Prelude.Natural,
+    -- | The default caller ID phone number.
+    defaultPhoneNumber :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | When termination settings are disabled, outbound calls can not be made.
+    disabled :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Termination' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'callingRegions', 'termination_callingRegions' - The countries to which calls are allowed, in ISO 3166-1 alpha-2 format.
+-- Required.
+--
+-- 'cidrAllowedList', 'termination_cidrAllowedList' - The IP addresses allowed to make calls, in CIDR format. Required.
+--
+-- 'cpsLimit', 'termination_cpsLimit' - The limit on calls per second. Max value based on account service quota.
+-- Default value of 1.
+--
+-- 'defaultPhoneNumber', 'termination_defaultPhoneNumber' - The default caller ID phone number.
+--
+-- 'disabled', 'termination_disabled' - When termination settings are disabled, outbound calls can not be made.
+newTermination ::
+  Termination
+newTermination =
+  Termination'
+    { callingRegions = Prelude.Nothing,
+      cidrAllowedList = Prelude.Nothing,
+      cpsLimit = Prelude.Nothing,
+      defaultPhoneNumber = Prelude.Nothing,
+      disabled = Prelude.Nothing
+    }
+
+-- | The countries to which calls are allowed, in ISO 3166-1 alpha-2 format.
+-- Required.
+termination_callingRegions :: Lens.Lens' Termination (Prelude.Maybe [Prelude.Text])
+termination_callingRegions = Lens.lens (\Termination' {callingRegions} -> callingRegions) (\s@Termination' {} a -> s {callingRegions = a} :: Termination) Prelude.. Lens.mapping Lens.coerced
+
+-- | The IP addresses allowed to make calls, in CIDR format. Required.
+termination_cidrAllowedList :: Lens.Lens' Termination (Prelude.Maybe [Prelude.Text])
+termination_cidrAllowedList = Lens.lens (\Termination' {cidrAllowedList} -> cidrAllowedList) (\s@Termination' {} a -> s {cidrAllowedList = a} :: Termination) Prelude.. Lens.mapping Lens.coerced
+
+-- | The limit on calls per second. Max value based on account service quota.
+-- Default value of 1.
+termination_cpsLimit :: Lens.Lens' Termination (Prelude.Maybe Prelude.Natural)
+termination_cpsLimit = Lens.lens (\Termination' {cpsLimit} -> cpsLimit) (\s@Termination' {} a -> s {cpsLimit = a} :: Termination)
+
+-- | The default caller ID phone number.
+termination_defaultPhoneNumber :: Lens.Lens' Termination (Prelude.Maybe Prelude.Text)
+termination_defaultPhoneNumber = Lens.lens (\Termination' {defaultPhoneNumber} -> defaultPhoneNumber) (\s@Termination' {} a -> s {defaultPhoneNumber = a} :: Termination) Prelude.. Lens.mapping Data._Sensitive
+
+-- | When termination settings are disabled, outbound calls can not be made.
+termination_disabled :: Lens.Lens' Termination (Prelude.Maybe Prelude.Bool)
+termination_disabled = Lens.lens (\Termination' {disabled} -> disabled) (\s@Termination' {} a -> s {disabled = a} :: Termination)
+
+instance Data.FromJSON Termination where
+  parseJSON =
+    Data.withObject
+      "Termination"
+      ( \x ->
+          Termination'
+            Prelude.<$> (x Data..:? "CallingRegions" Data..!= Prelude.mempty)
+            Prelude.<*> ( x
+                            Data..:? "CidrAllowedList"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "CpsLimit")
+            Prelude.<*> (x Data..:? "DefaultPhoneNumber")
+            Prelude.<*> (x Data..:? "Disabled")
+      )
+
+instance Prelude.Hashable Termination where
+  hashWithSalt _salt Termination' {..} =
+    _salt
+      `Prelude.hashWithSalt` callingRegions
+      `Prelude.hashWithSalt` cidrAllowedList
+      `Prelude.hashWithSalt` cpsLimit
+      `Prelude.hashWithSalt` defaultPhoneNumber
+      `Prelude.hashWithSalt` disabled
+
+instance Prelude.NFData Termination where
+  rnf Termination' {..} =
+    Prelude.rnf callingRegions
+      `Prelude.seq` Prelude.rnf cidrAllowedList
+      `Prelude.seq` Prelude.rnf cpsLimit
+      `Prelude.seq` Prelude.rnf defaultPhoneNumber
+      `Prelude.seq` Prelude.rnf disabled
+
+instance Data.ToJSON Termination where
+  toJSON Termination' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CallingRegions" Data..=)
+              Prelude.<$> callingRegions,
+            ("CidrAllowedList" Data..=)
+              Prelude.<$> cidrAllowedList,
+            ("CpsLimit" Data..=) Prelude.<$> cpsLimit,
+            ("DefaultPhoneNumber" Data..=)
+              Prelude.<$> defaultPhoneNumber,
+            ("Disabled" Data..=) Prelude.<$> disabled
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/TerminationHealth.hs b/gen/Amazonka/Chime/Types/TerminationHealth.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/TerminationHealth.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.TerminationHealth
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.TerminationHealth where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The termination health details, including the source IP address and
+-- timestamp of the last successful SIP @OPTIONS@ message from your SIP
+-- infrastructure.
+--
+-- /See:/ 'newTerminationHealth' smart constructor.
+data TerminationHealth = TerminationHealth'
+  { -- | The source IP address.
+    source :: Prelude.Maybe Prelude.Text,
+    -- | The timestamp, in ISO 8601 format.
+    timestamp :: Prelude.Maybe Data.ISO8601
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TerminationHealth' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'source', 'terminationHealth_source' - The source IP address.
+--
+-- 'timestamp', 'terminationHealth_timestamp' - The timestamp, in ISO 8601 format.
+newTerminationHealth ::
+  TerminationHealth
+newTerminationHealth =
+  TerminationHealth'
+    { source = Prelude.Nothing,
+      timestamp = Prelude.Nothing
+    }
+
+-- | The source IP address.
+terminationHealth_source :: Lens.Lens' TerminationHealth (Prelude.Maybe Prelude.Text)
+terminationHealth_source = Lens.lens (\TerminationHealth' {source} -> source) (\s@TerminationHealth' {} a -> s {source = a} :: TerminationHealth)
+
+-- | The timestamp, in ISO 8601 format.
+terminationHealth_timestamp :: Lens.Lens' TerminationHealth (Prelude.Maybe Prelude.UTCTime)
+terminationHealth_timestamp = Lens.lens (\TerminationHealth' {timestamp} -> timestamp) (\s@TerminationHealth' {} a -> s {timestamp = a} :: TerminationHealth) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON TerminationHealth where
+  parseJSON =
+    Data.withObject
+      "TerminationHealth"
+      ( \x ->
+          TerminationHealth'
+            Prelude.<$> (x Data..:? "Source")
+            Prelude.<*> (x Data..:? "Timestamp")
+      )
+
+instance Prelude.Hashable TerminationHealth where
+  hashWithSalt _salt TerminationHealth' {..} =
+    _salt
+      `Prelude.hashWithSalt` source
+      `Prelude.hashWithSalt` timestamp
+
+instance Prelude.NFData TerminationHealth where
+  rnf TerminationHealth' {..} =
+    Prelude.rnf source
+      `Prelude.seq` Prelude.rnf timestamp
diff --git a/gen/Amazonka/Chime/Types/TranscribeContentIdentificationType.hs b/gen/Amazonka/Chime/Types/TranscribeContentIdentificationType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/TranscribeContentIdentificationType.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.TranscribeContentIdentificationType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.TranscribeContentIdentificationType
+  ( TranscribeContentIdentificationType
+      ( ..,
+        TranscribeContentIdentificationType_PII
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TranscribeContentIdentificationType = TranscribeContentIdentificationType'
+  { fromTranscribeContentIdentificationType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TranscribeContentIdentificationType_PII :: TranscribeContentIdentificationType
+pattern TranscribeContentIdentificationType_PII = TranscribeContentIdentificationType' "PII"
+
+{-# COMPLETE
+  TranscribeContentIdentificationType_PII,
+  TranscribeContentIdentificationType'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/TranscribeContentRedactionType.hs b/gen/Amazonka/Chime/Types/TranscribeContentRedactionType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/TranscribeContentRedactionType.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.TranscribeContentRedactionType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.TranscribeContentRedactionType
+  ( TranscribeContentRedactionType
+      ( ..,
+        TranscribeContentRedactionType_PII
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TranscribeContentRedactionType = TranscribeContentRedactionType'
+  { fromTranscribeContentRedactionType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TranscribeContentRedactionType_PII :: TranscribeContentRedactionType
+pattern TranscribeContentRedactionType_PII = TranscribeContentRedactionType' "PII"
+
+{-# COMPLETE
+  TranscribeContentRedactionType_PII,
+  TranscribeContentRedactionType'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/TranscribeLanguageCode.hs b/gen/Amazonka/Chime/Types/TranscribeLanguageCode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/TranscribeLanguageCode.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.TranscribeLanguageCode
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.TranscribeLanguageCode
+  ( TranscribeLanguageCode
+      ( ..,
+        TranscribeLanguageCode_De_DE,
+        TranscribeLanguageCode_En_AU,
+        TranscribeLanguageCode_En_GB,
+        TranscribeLanguageCode_En_US,
+        TranscribeLanguageCode_Es_US,
+        TranscribeLanguageCode_Fr_CA,
+        TranscribeLanguageCode_Fr_FR,
+        TranscribeLanguageCode_It_IT,
+        TranscribeLanguageCode_Ja_JP,
+        TranscribeLanguageCode_Ko_KR,
+        TranscribeLanguageCode_Pt_BR,
+        TranscribeLanguageCode_Zh_CN
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TranscribeLanguageCode = TranscribeLanguageCode'
+  { fromTranscribeLanguageCode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TranscribeLanguageCode_De_DE :: TranscribeLanguageCode
+pattern TranscribeLanguageCode_De_DE = TranscribeLanguageCode' "de-DE"
+
+pattern TranscribeLanguageCode_En_AU :: TranscribeLanguageCode
+pattern TranscribeLanguageCode_En_AU = TranscribeLanguageCode' "en-AU"
+
+pattern TranscribeLanguageCode_En_GB :: TranscribeLanguageCode
+pattern TranscribeLanguageCode_En_GB = TranscribeLanguageCode' "en-GB"
+
+pattern TranscribeLanguageCode_En_US :: TranscribeLanguageCode
+pattern TranscribeLanguageCode_En_US = TranscribeLanguageCode' "en-US"
+
+pattern TranscribeLanguageCode_Es_US :: TranscribeLanguageCode
+pattern TranscribeLanguageCode_Es_US = TranscribeLanguageCode' "es-US"
+
+pattern TranscribeLanguageCode_Fr_CA :: TranscribeLanguageCode
+pattern TranscribeLanguageCode_Fr_CA = TranscribeLanguageCode' "fr-CA"
+
+pattern TranscribeLanguageCode_Fr_FR :: TranscribeLanguageCode
+pattern TranscribeLanguageCode_Fr_FR = TranscribeLanguageCode' "fr-FR"
+
+pattern TranscribeLanguageCode_It_IT :: TranscribeLanguageCode
+pattern TranscribeLanguageCode_It_IT = TranscribeLanguageCode' "it-IT"
+
+pattern TranscribeLanguageCode_Ja_JP :: TranscribeLanguageCode
+pattern TranscribeLanguageCode_Ja_JP = TranscribeLanguageCode' "ja-JP"
+
+pattern TranscribeLanguageCode_Ko_KR :: TranscribeLanguageCode
+pattern TranscribeLanguageCode_Ko_KR = TranscribeLanguageCode' "ko-KR"
+
+pattern TranscribeLanguageCode_Pt_BR :: TranscribeLanguageCode
+pattern TranscribeLanguageCode_Pt_BR = TranscribeLanguageCode' "pt-BR"
+
+pattern TranscribeLanguageCode_Zh_CN :: TranscribeLanguageCode
+pattern TranscribeLanguageCode_Zh_CN = TranscribeLanguageCode' "zh-CN"
+
+{-# COMPLETE
+  TranscribeLanguageCode_De_DE,
+  TranscribeLanguageCode_En_AU,
+  TranscribeLanguageCode_En_GB,
+  TranscribeLanguageCode_En_US,
+  TranscribeLanguageCode_Es_US,
+  TranscribeLanguageCode_Fr_CA,
+  TranscribeLanguageCode_Fr_FR,
+  TranscribeLanguageCode_It_IT,
+  TranscribeLanguageCode_Ja_JP,
+  TranscribeLanguageCode_Ko_KR,
+  TranscribeLanguageCode_Pt_BR,
+  TranscribeLanguageCode_Zh_CN,
+  TranscribeLanguageCode'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/TranscribeMedicalContentIdentificationType.hs b/gen/Amazonka/Chime/Types/TranscribeMedicalContentIdentificationType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/TranscribeMedicalContentIdentificationType.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.TranscribeMedicalContentIdentificationType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.TranscribeMedicalContentIdentificationType
+  ( TranscribeMedicalContentIdentificationType
+      ( ..,
+        TranscribeMedicalContentIdentificationType_PHI
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TranscribeMedicalContentIdentificationType = TranscribeMedicalContentIdentificationType'
+  { fromTranscribeMedicalContentIdentificationType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TranscribeMedicalContentIdentificationType_PHI :: TranscribeMedicalContentIdentificationType
+pattern TranscribeMedicalContentIdentificationType_PHI = TranscribeMedicalContentIdentificationType' "PHI"
+
+{-# COMPLETE
+  TranscribeMedicalContentIdentificationType_PHI,
+  TranscribeMedicalContentIdentificationType'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/TranscribeMedicalLanguageCode.hs b/gen/Amazonka/Chime/Types/TranscribeMedicalLanguageCode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/TranscribeMedicalLanguageCode.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.TranscribeMedicalLanguageCode
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.TranscribeMedicalLanguageCode
+  ( TranscribeMedicalLanguageCode
+      ( ..,
+        TranscribeMedicalLanguageCode_En_US
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TranscribeMedicalLanguageCode = TranscribeMedicalLanguageCode'
+  { fromTranscribeMedicalLanguageCode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TranscribeMedicalLanguageCode_En_US :: TranscribeMedicalLanguageCode
+pattern TranscribeMedicalLanguageCode_En_US = TranscribeMedicalLanguageCode' "en-US"
+
+{-# COMPLETE
+  TranscribeMedicalLanguageCode_En_US,
+  TranscribeMedicalLanguageCode'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/TranscribeMedicalRegion.hs b/gen/Amazonka/Chime/Types/TranscribeMedicalRegion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/TranscribeMedicalRegion.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.TranscribeMedicalRegion
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.TranscribeMedicalRegion
+  ( TranscribeMedicalRegion
+      ( ..,
+        TranscribeMedicalRegion_Ap_southeast_2,
+        TranscribeMedicalRegion_Auto,
+        TranscribeMedicalRegion_Ca_central_1,
+        TranscribeMedicalRegion_Eu_west_1,
+        TranscribeMedicalRegion_Us_east_1,
+        TranscribeMedicalRegion_Us_east_2,
+        TranscribeMedicalRegion_Us_west_2
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TranscribeMedicalRegion = TranscribeMedicalRegion'
+  { fromTranscribeMedicalRegion ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TranscribeMedicalRegion_Ap_southeast_2 :: TranscribeMedicalRegion
+pattern TranscribeMedicalRegion_Ap_southeast_2 = TranscribeMedicalRegion' "ap-southeast-2"
+
+pattern TranscribeMedicalRegion_Auto :: TranscribeMedicalRegion
+pattern TranscribeMedicalRegion_Auto = TranscribeMedicalRegion' "auto"
+
+pattern TranscribeMedicalRegion_Ca_central_1 :: TranscribeMedicalRegion
+pattern TranscribeMedicalRegion_Ca_central_1 = TranscribeMedicalRegion' "ca-central-1"
+
+pattern TranscribeMedicalRegion_Eu_west_1 :: TranscribeMedicalRegion
+pattern TranscribeMedicalRegion_Eu_west_1 = TranscribeMedicalRegion' "eu-west-1"
+
+pattern TranscribeMedicalRegion_Us_east_1 :: TranscribeMedicalRegion
+pattern TranscribeMedicalRegion_Us_east_1 = TranscribeMedicalRegion' "us-east-1"
+
+pattern TranscribeMedicalRegion_Us_east_2 :: TranscribeMedicalRegion
+pattern TranscribeMedicalRegion_Us_east_2 = TranscribeMedicalRegion' "us-east-2"
+
+pattern TranscribeMedicalRegion_Us_west_2 :: TranscribeMedicalRegion
+pattern TranscribeMedicalRegion_Us_west_2 = TranscribeMedicalRegion' "us-west-2"
+
+{-# COMPLETE
+  TranscribeMedicalRegion_Ap_southeast_2,
+  TranscribeMedicalRegion_Auto,
+  TranscribeMedicalRegion_Ca_central_1,
+  TranscribeMedicalRegion_Eu_west_1,
+  TranscribeMedicalRegion_Us_east_1,
+  TranscribeMedicalRegion_Us_east_2,
+  TranscribeMedicalRegion_Us_west_2,
+  TranscribeMedicalRegion'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/TranscribeMedicalSpecialty.hs b/gen/Amazonka/Chime/Types/TranscribeMedicalSpecialty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/TranscribeMedicalSpecialty.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.TranscribeMedicalSpecialty
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.TranscribeMedicalSpecialty
+  ( TranscribeMedicalSpecialty
+      ( ..,
+        TranscribeMedicalSpecialty_CARDIOLOGY,
+        TranscribeMedicalSpecialty_NEUROLOGY,
+        TranscribeMedicalSpecialty_ONCOLOGY,
+        TranscribeMedicalSpecialty_PRIMARYCARE,
+        TranscribeMedicalSpecialty_RADIOLOGY,
+        TranscribeMedicalSpecialty_UROLOGY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TranscribeMedicalSpecialty = TranscribeMedicalSpecialty'
+  { fromTranscribeMedicalSpecialty ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TranscribeMedicalSpecialty_CARDIOLOGY :: TranscribeMedicalSpecialty
+pattern TranscribeMedicalSpecialty_CARDIOLOGY = TranscribeMedicalSpecialty' "CARDIOLOGY"
+
+pattern TranscribeMedicalSpecialty_NEUROLOGY :: TranscribeMedicalSpecialty
+pattern TranscribeMedicalSpecialty_NEUROLOGY = TranscribeMedicalSpecialty' "NEUROLOGY"
+
+pattern TranscribeMedicalSpecialty_ONCOLOGY :: TranscribeMedicalSpecialty
+pattern TranscribeMedicalSpecialty_ONCOLOGY = TranscribeMedicalSpecialty' "ONCOLOGY"
+
+pattern TranscribeMedicalSpecialty_PRIMARYCARE :: TranscribeMedicalSpecialty
+pattern TranscribeMedicalSpecialty_PRIMARYCARE = TranscribeMedicalSpecialty' "PRIMARYCARE"
+
+pattern TranscribeMedicalSpecialty_RADIOLOGY :: TranscribeMedicalSpecialty
+pattern TranscribeMedicalSpecialty_RADIOLOGY = TranscribeMedicalSpecialty' "RADIOLOGY"
+
+pattern TranscribeMedicalSpecialty_UROLOGY :: TranscribeMedicalSpecialty
+pattern TranscribeMedicalSpecialty_UROLOGY = TranscribeMedicalSpecialty' "UROLOGY"
+
+{-# COMPLETE
+  TranscribeMedicalSpecialty_CARDIOLOGY,
+  TranscribeMedicalSpecialty_NEUROLOGY,
+  TranscribeMedicalSpecialty_ONCOLOGY,
+  TranscribeMedicalSpecialty_PRIMARYCARE,
+  TranscribeMedicalSpecialty_RADIOLOGY,
+  TranscribeMedicalSpecialty_UROLOGY,
+  TranscribeMedicalSpecialty'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/TranscribeMedicalType.hs b/gen/Amazonka/Chime/Types/TranscribeMedicalType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/TranscribeMedicalType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.TranscribeMedicalType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.TranscribeMedicalType
+  ( TranscribeMedicalType
+      ( ..,
+        TranscribeMedicalType_CONVERSATION,
+        TranscribeMedicalType_DICTATION
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TranscribeMedicalType = TranscribeMedicalType'
+  { fromTranscribeMedicalType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TranscribeMedicalType_CONVERSATION :: TranscribeMedicalType
+pattern TranscribeMedicalType_CONVERSATION = TranscribeMedicalType' "CONVERSATION"
+
+pattern TranscribeMedicalType_DICTATION :: TranscribeMedicalType
+pattern TranscribeMedicalType_DICTATION = TranscribeMedicalType' "DICTATION"
+
+{-# COMPLETE
+  TranscribeMedicalType_CONVERSATION,
+  TranscribeMedicalType_DICTATION,
+  TranscribeMedicalType'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/TranscribePartialResultsStability.hs b/gen/Amazonka/Chime/Types/TranscribePartialResultsStability.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/TranscribePartialResultsStability.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.TranscribePartialResultsStability
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.TranscribePartialResultsStability
+  ( TranscribePartialResultsStability
+      ( ..,
+        TranscribePartialResultsStability_High,
+        TranscribePartialResultsStability_Low,
+        TranscribePartialResultsStability_Medium
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TranscribePartialResultsStability = TranscribePartialResultsStability'
+  { fromTranscribePartialResultsStability ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TranscribePartialResultsStability_High :: TranscribePartialResultsStability
+pattern TranscribePartialResultsStability_High = TranscribePartialResultsStability' "high"
+
+pattern TranscribePartialResultsStability_Low :: TranscribePartialResultsStability
+pattern TranscribePartialResultsStability_Low = TranscribePartialResultsStability' "low"
+
+pattern TranscribePartialResultsStability_Medium :: TranscribePartialResultsStability
+pattern TranscribePartialResultsStability_Medium = TranscribePartialResultsStability' "medium"
+
+{-# COMPLETE
+  TranscribePartialResultsStability_High,
+  TranscribePartialResultsStability_Low,
+  TranscribePartialResultsStability_Medium,
+  TranscribePartialResultsStability'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/TranscribeRegion.hs b/gen/Amazonka/Chime/Types/TranscribeRegion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/TranscribeRegion.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.TranscribeRegion
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.TranscribeRegion
+  ( TranscribeRegion
+      ( ..,
+        TranscribeRegion_Ap_northeast_1,
+        TranscribeRegion_Ap_northeast_2,
+        TranscribeRegion_Ap_southeast_2,
+        TranscribeRegion_Auto,
+        TranscribeRegion_Ca_central_1,
+        TranscribeRegion_Eu_central_1,
+        TranscribeRegion_Eu_west_1,
+        TranscribeRegion_Eu_west_2,
+        TranscribeRegion_Sa_east_1,
+        TranscribeRegion_Us_east_1,
+        TranscribeRegion_Us_east_2,
+        TranscribeRegion_Us_west_2
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TranscribeRegion = TranscribeRegion'
+  { fromTranscribeRegion ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TranscribeRegion_Ap_northeast_1 :: TranscribeRegion
+pattern TranscribeRegion_Ap_northeast_1 = TranscribeRegion' "ap-northeast-1"
+
+pattern TranscribeRegion_Ap_northeast_2 :: TranscribeRegion
+pattern TranscribeRegion_Ap_northeast_2 = TranscribeRegion' "ap-northeast-2"
+
+pattern TranscribeRegion_Ap_southeast_2 :: TranscribeRegion
+pattern TranscribeRegion_Ap_southeast_2 = TranscribeRegion' "ap-southeast-2"
+
+pattern TranscribeRegion_Auto :: TranscribeRegion
+pattern TranscribeRegion_Auto = TranscribeRegion' "auto"
+
+pattern TranscribeRegion_Ca_central_1 :: TranscribeRegion
+pattern TranscribeRegion_Ca_central_1 = TranscribeRegion' "ca-central-1"
+
+pattern TranscribeRegion_Eu_central_1 :: TranscribeRegion
+pattern TranscribeRegion_Eu_central_1 = TranscribeRegion' "eu-central-1"
+
+pattern TranscribeRegion_Eu_west_1 :: TranscribeRegion
+pattern TranscribeRegion_Eu_west_1 = TranscribeRegion' "eu-west-1"
+
+pattern TranscribeRegion_Eu_west_2 :: TranscribeRegion
+pattern TranscribeRegion_Eu_west_2 = TranscribeRegion' "eu-west-2"
+
+pattern TranscribeRegion_Sa_east_1 :: TranscribeRegion
+pattern TranscribeRegion_Sa_east_1 = TranscribeRegion' "sa-east-1"
+
+pattern TranscribeRegion_Us_east_1 :: TranscribeRegion
+pattern TranscribeRegion_Us_east_1 = TranscribeRegion' "us-east-1"
+
+pattern TranscribeRegion_Us_east_2 :: TranscribeRegion
+pattern TranscribeRegion_Us_east_2 = TranscribeRegion' "us-east-2"
+
+pattern TranscribeRegion_Us_west_2 :: TranscribeRegion
+pattern TranscribeRegion_Us_west_2 = TranscribeRegion' "us-west-2"
+
+{-# COMPLETE
+  TranscribeRegion_Ap_northeast_1,
+  TranscribeRegion_Ap_northeast_2,
+  TranscribeRegion_Ap_southeast_2,
+  TranscribeRegion_Auto,
+  TranscribeRegion_Ca_central_1,
+  TranscribeRegion_Eu_central_1,
+  TranscribeRegion_Eu_west_1,
+  TranscribeRegion_Eu_west_2,
+  TranscribeRegion_Sa_east_1,
+  TranscribeRegion_Us_east_1,
+  TranscribeRegion_Us_east_2,
+  TranscribeRegion_Us_west_2,
+  TranscribeRegion'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/TranscribeVocabularyFilterMethod.hs b/gen/Amazonka/Chime/Types/TranscribeVocabularyFilterMethod.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/TranscribeVocabularyFilterMethod.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.TranscribeVocabularyFilterMethod
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.TranscribeVocabularyFilterMethod
+  ( TranscribeVocabularyFilterMethod
+      ( ..,
+        TranscribeVocabularyFilterMethod_Mask,
+        TranscribeVocabularyFilterMethod_Remove,
+        TranscribeVocabularyFilterMethod_Tag
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TranscribeVocabularyFilterMethod = TranscribeVocabularyFilterMethod'
+  { fromTranscribeVocabularyFilterMethod ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TranscribeVocabularyFilterMethod_Mask :: TranscribeVocabularyFilterMethod
+pattern TranscribeVocabularyFilterMethod_Mask = TranscribeVocabularyFilterMethod' "mask"
+
+pattern TranscribeVocabularyFilterMethod_Remove :: TranscribeVocabularyFilterMethod
+pattern TranscribeVocabularyFilterMethod_Remove = TranscribeVocabularyFilterMethod' "remove"
+
+pattern TranscribeVocabularyFilterMethod_Tag :: TranscribeVocabularyFilterMethod
+pattern TranscribeVocabularyFilterMethod_Tag = TranscribeVocabularyFilterMethod' "tag"
+
+{-# COMPLETE
+  TranscribeVocabularyFilterMethod_Mask,
+  TranscribeVocabularyFilterMethod_Remove,
+  TranscribeVocabularyFilterMethod_Tag,
+  TranscribeVocabularyFilterMethod'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/TranscriptionConfiguration.hs b/gen/Amazonka/Chime/Types/TranscriptionConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/TranscriptionConfiguration.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.TranscriptionConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.TranscriptionConfiguration where
+
+import Amazonka.Chime.Types.EngineTranscribeMedicalSettings
+import Amazonka.Chime.Types.EngineTranscribeSettings
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration for the current transcription operation. Must contain
+-- @EngineTranscribeSettings@ or @EngineTranscribeMedicalSettings@.
+--
+-- /See:/ 'newTranscriptionConfiguration' smart constructor.
+data TranscriptionConfiguration = TranscriptionConfiguration'
+  { -- | The transcription configuration settings passed to Amazon Transcribe
+    -- Medical.
+    engineTranscribeMedicalSettings :: Prelude.Maybe EngineTranscribeMedicalSettings,
+    -- | The transcription configuration settings passed to Amazon Transcribe.
+    engineTranscribeSettings :: Prelude.Maybe EngineTranscribeSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TranscriptionConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'engineTranscribeMedicalSettings', 'transcriptionConfiguration_engineTranscribeMedicalSettings' - The transcription configuration settings passed to Amazon Transcribe
+-- Medical.
+--
+-- 'engineTranscribeSettings', 'transcriptionConfiguration_engineTranscribeSettings' - The transcription configuration settings passed to Amazon Transcribe.
+newTranscriptionConfiguration ::
+  TranscriptionConfiguration
+newTranscriptionConfiguration =
+  TranscriptionConfiguration'
+    { engineTranscribeMedicalSettings =
+        Prelude.Nothing,
+      engineTranscribeSettings = Prelude.Nothing
+    }
+
+-- | The transcription configuration settings passed to Amazon Transcribe
+-- Medical.
+transcriptionConfiguration_engineTranscribeMedicalSettings :: Lens.Lens' TranscriptionConfiguration (Prelude.Maybe EngineTranscribeMedicalSettings)
+transcriptionConfiguration_engineTranscribeMedicalSettings = Lens.lens (\TranscriptionConfiguration' {engineTranscribeMedicalSettings} -> engineTranscribeMedicalSettings) (\s@TranscriptionConfiguration' {} a -> s {engineTranscribeMedicalSettings = a} :: TranscriptionConfiguration)
+
+-- | The transcription configuration settings passed to Amazon Transcribe.
+transcriptionConfiguration_engineTranscribeSettings :: Lens.Lens' TranscriptionConfiguration (Prelude.Maybe EngineTranscribeSettings)
+transcriptionConfiguration_engineTranscribeSettings = Lens.lens (\TranscriptionConfiguration' {engineTranscribeSettings} -> engineTranscribeSettings) (\s@TranscriptionConfiguration' {} a -> s {engineTranscribeSettings = a} :: TranscriptionConfiguration)
+
+instance Prelude.Hashable TranscriptionConfiguration where
+  hashWithSalt _salt TranscriptionConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` engineTranscribeMedicalSettings
+      `Prelude.hashWithSalt` engineTranscribeSettings
+
+instance Prelude.NFData TranscriptionConfiguration where
+  rnf TranscriptionConfiguration' {..} =
+    Prelude.rnf engineTranscribeMedicalSettings
+      `Prelude.seq` Prelude.rnf engineTranscribeSettings
+
+instance Data.ToJSON TranscriptionConfiguration where
+  toJSON TranscriptionConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("EngineTranscribeMedicalSettings" Data..=)
+              Prelude.<$> engineTranscribeMedicalSettings,
+            ("EngineTranscribeSettings" Data..=)
+              Prelude.<$> engineTranscribeSettings
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/UpdatePhoneNumberRequestItem.hs b/gen/Amazonka/Chime/Types/UpdatePhoneNumberRequestItem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/UpdatePhoneNumberRequestItem.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.UpdatePhoneNumberRequestItem
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.UpdatePhoneNumberRequestItem where
+
+import Amazonka.Chime.Types.PhoneNumberProductType
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The phone number ID, product type, or calling name fields to update,
+-- used with the BatchUpdatePhoneNumber and UpdatePhoneNumber actions.
+--
+-- /See:/ 'newUpdatePhoneNumberRequestItem' smart constructor.
+data UpdatePhoneNumberRequestItem = UpdatePhoneNumberRequestItem'
+  { -- | The outbound calling name to update.
+    callingName :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The product type to update.
+    productType :: Prelude.Maybe PhoneNumberProductType,
+    -- | The phone number ID to update.
+    phoneNumberId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdatePhoneNumberRequestItem' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'callingName', 'updatePhoneNumberRequestItem_callingName' - The outbound calling name to update.
+--
+-- 'productType', 'updatePhoneNumberRequestItem_productType' - The product type to update.
+--
+-- 'phoneNumberId', 'updatePhoneNumberRequestItem_phoneNumberId' - The phone number ID to update.
+newUpdatePhoneNumberRequestItem ::
+  -- | 'phoneNumberId'
+  Prelude.Text ->
+  UpdatePhoneNumberRequestItem
+newUpdatePhoneNumberRequestItem pPhoneNumberId_ =
+  UpdatePhoneNumberRequestItem'
+    { callingName =
+        Prelude.Nothing,
+      productType = Prelude.Nothing,
+      phoneNumberId = pPhoneNumberId_
+    }
+
+-- | The outbound calling name to update.
+updatePhoneNumberRequestItem_callingName :: Lens.Lens' UpdatePhoneNumberRequestItem (Prelude.Maybe Prelude.Text)
+updatePhoneNumberRequestItem_callingName = Lens.lens (\UpdatePhoneNumberRequestItem' {callingName} -> callingName) (\s@UpdatePhoneNumberRequestItem' {} a -> s {callingName = a} :: UpdatePhoneNumberRequestItem) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The product type to update.
+updatePhoneNumberRequestItem_productType :: Lens.Lens' UpdatePhoneNumberRequestItem (Prelude.Maybe PhoneNumberProductType)
+updatePhoneNumberRequestItem_productType = Lens.lens (\UpdatePhoneNumberRequestItem' {productType} -> productType) (\s@UpdatePhoneNumberRequestItem' {} a -> s {productType = a} :: UpdatePhoneNumberRequestItem)
+
+-- | The phone number ID to update.
+updatePhoneNumberRequestItem_phoneNumberId :: Lens.Lens' UpdatePhoneNumberRequestItem Prelude.Text
+updatePhoneNumberRequestItem_phoneNumberId = Lens.lens (\UpdatePhoneNumberRequestItem' {phoneNumberId} -> phoneNumberId) (\s@UpdatePhoneNumberRequestItem' {} a -> s {phoneNumberId = a} :: UpdatePhoneNumberRequestItem)
+
+instance
+  Prelude.Hashable
+    UpdatePhoneNumberRequestItem
+  where
+  hashWithSalt _salt UpdatePhoneNumberRequestItem' {..} =
+    _salt
+      `Prelude.hashWithSalt` callingName
+      `Prelude.hashWithSalt` productType
+      `Prelude.hashWithSalt` phoneNumberId
+
+instance Prelude.NFData UpdatePhoneNumberRequestItem where
+  rnf UpdatePhoneNumberRequestItem' {..} =
+    Prelude.rnf callingName
+      `Prelude.seq` Prelude.rnf productType
+      `Prelude.seq` Prelude.rnf phoneNumberId
+
+instance Data.ToJSON UpdatePhoneNumberRequestItem where
+  toJSON UpdatePhoneNumberRequestItem' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CallingName" Data..=) Prelude.<$> callingName,
+            ("ProductType" Data..=) Prelude.<$> productType,
+            Prelude.Just
+              ("PhoneNumberId" Data..= phoneNumberId)
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/UpdateUserRequestItem.hs b/gen/Amazonka/Chime/Types/UpdateUserRequestItem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/UpdateUserRequestItem.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.UpdateUserRequestItem
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.UpdateUserRequestItem where
+
+import Amazonka.Chime.Types.AlexaForBusinessMetadata
+import Amazonka.Chime.Types.License
+import Amazonka.Chime.Types.UserType
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The user ID and user fields to update, used with the BatchUpdateUser
+-- action.
+--
+-- /See:/ 'newUpdateUserRequestItem' smart constructor.
+data UpdateUserRequestItem = UpdateUserRequestItem'
+  { -- | The Alexa for Business metadata.
+    alexaForBusinessMetadata :: Prelude.Maybe AlexaForBusinessMetadata,
+    -- | The user license type.
+    licenseType :: Prelude.Maybe License,
+    -- | The user type.
+    userType :: Prelude.Maybe UserType,
+    -- | The user ID.
+    userId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateUserRequestItem' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'alexaForBusinessMetadata', 'updateUserRequestItem_alexaForBusinessMetadata' - The Alexa for Business metadata.
+--
+-- 'licenseType', 'updateUserRequestItem_licenseType' - The user license type.
+--
+-- 'userType', 'updateUserRequestItem_userType' - The user type.
+--
+-- 'userId', 'updateUserRequestItem_userId' - The user ID.
+newUpdateUserRequestItem ::
+  -- | 'userId'
+  Prelude.Text ->
+  UpdateUserRequestItem
+newUpdateUserRequestItem pUserId_ =
+  UpdateUserRequestItem'
+    { alexaForBusinessMetadata =
+        Prelude.Nothing,
+      licenseType = Prelude.Nothing,
+      userType = Prelude.Nothing,
+      userId = pUserId_
+    }
+
+-- | The Alexa for Business metadata.
+updateUserRequestItem_alexaForBusinessMetadata :: Lens.Lens' UpdateUserRequestItem (Prelude.Maybe AlexaForBusinessMetadata)
+updateUserRequestItem_alexaForBusinessMetadata = Lens.lens (\UpdateUserRequestItem' {alexaForBusinessMetadata} -> alexaForBusinessMetadata) (\s@UpdateUserRequestItem' {} a -> s {alexaForBusinessMetadata = a} :: UpdateUserRequestItem)
+
+-- | The user license type.
+updateUserRequestItem_licenseType :: Lens.Lens' UpdateUserRequestItem (Prelude.Maybe License)
+updateUserRequestItem_licenseType = Lens.lens (\UpdateUserRequestItem' {licenseType} -> licenseType) (\s@UpdateUserRequestItem' {} a -> s {licenseType = a} :: UpdateUserRequestItem)
+
+-- | The user type.
+updateUserRequestItem_userType :: Lens.Lens' UpdateUserRequestItem (Prelude.Maybe UserType)
+updateUserRequestItem_userType = Lens.lens (\UpdateUserRequestItem' {userType} -> userType) (\s@UpdateUserRequestItem' {} a -> s {userType = a} :: UpdateUserRequestItem)
+
+-- | The user ID.
+updateUserRequestItem_userId :: Lens.Lens' UpdateUserRequestItem Prelude.Text
+updateUserRequestItem_userId = Lens.lens (\UpdateUserRequestItem' {userId} -> userId) (\s@UpdateUserRequestItem' {} a -> s {userId = a} :: UpdateUserRequestItem)
+
+instance Prelude.Hashable UpdateUserRequestItem where
+  hashWithSalt _salt UpdateUserRequestItem' {..} =
+    _salt
+      `Prelude.hashWithSalt` alexaForBusinessMetadata
+      `Prelude.hashWithSalt` licenseType
+      `Prelude.hashWithSalt` userType
+      `Prelude.hashWithSalt` userId
+
+instance Prelude.NFData UpdateUserRequestItem where
+  rnf UpdateUserRequestItem' {..} =
+    Prelude.rnf alexaForBusinessMetadata
+      `Prelude.seq` Prelude.rnf licenseType
+      `Prelude.seq` Prelude.rnf userType
+      `Prelude.seq` Prelude.rnf userId
+
+instance Data.ToJSON UpdateUserRequestItem where
+  toJSON UpdateUserRequestItem' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AlexaForBusinessMetadata" Data..=)
+              Prelude.<$> alexaForBusinessMetadata,
+            ("LicenseType" Data..=) Prelude.<$> licenseType,
+            ("UserType" Data..=) Prelude.<$> userType,
+            Prelude.Just ("UserId" Data..= userId)
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/User.hs b/gen/Amazonka/Chime/Types/User.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/User.hs
@@ -0,0 +1,226 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.User
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.User where
+
+import Amazonka.Chime.Types.AlexaForBusinessMetadata
+import Amazonka.Chime.Types.InviteStatus
+import Amazonka.Chime.Types.License
+import Amazonka.Chime.Types.RegistrationStatus
+import Amazonka.Chime.Types.UserType
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The user on the Amazon Chime account.
+--
+-- /See:/ 'newUser' smart constructor.
+data User = User'
+  { -- | The Amazon Chime account ID.
+    accountId :: Prelude.Maybe Prelude.Text,
+    -- | The Alexa for Business metadata.
+    alexaForBusinessMetadata :: Prelude.Maybe AlexaForBusinessMetadata,
+    -- | The display name of the user.
+    displayName :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | Date and time when the user is invited to the Amazon Chime account, in
+    -- ISO 8601 format.
+    invitedOn :: Prelude.Maybe Data.ISO8601,
+    -- | The license type for the user.
+    licenseType :: Prelude.Maybe License,
+    -- | The user\'s personal meeting PIN.
+    personalPIN :: Prelude.Maybe Prelude.Text,
+    -- | The primary email address of the user.
+    primaryEmail :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The primary phone number associated with the user.
+    primaryProvisionedNumber :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | Date and time when the user is registered, in ISO 8601 format.
+    registeredOn :: Prelude.Maybe Data.ISO8601,
+    -- | The user invite status.
+    userInvitationStatus :: Prelude.Maybe InviteStatus,
+    -- | The user registration status.
+    userRegistrationStatus :: Prelude.Maybe RegistrationStatus,
+    -- | The user type.
+    userType :: Prelude.Maybe UserType,
+    -- | The user ID.
+    userId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'User' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'user_accountId' - The Amazon Chime account ID.
+--
+-- 'alexaForBusinessMetadata', 'user_alexaForBusinessMetadata' - The Alexa for Business metadata.
+--
+-- 'displayName', 'user_displayName' - The display name of the user.
+--
+-- 'invitedOn', 'user_invitedOn' - Date and time when the user is invited to the Amazon Chime account, in
+-- ISO 8601 format.
+--
+-- 'licenseType', 'user_licenseType' - The license type for the user.
+--
+-- 'personalPIN', 'user_personalPIN' - The user\'s personal meeting PIN.
+--
+-- 'primaryEmail', 'user_primaryEmail' - The primary email address of the user.
+--
+-- 'primaryProvisionedNumber', 'user_primaryProvisionedNumber' - The primary phone number associated with the user.
+--
+-- 'registeredOn', 'user_registeredOn' - Date and time when the user is registered, in ISO 8601 format.
+--
+-- 'userInvitationStatus', 'user_userInvitationStatus' - The user invite status.
+--
+-- 'userRegistrationStatus', 'user_userRegistrationStatus' - The user registration status.
+--
+-- 'userType', 'user_userType' - The user type.
+--
+-- 'userId', 'user_userId' - The user ID.
+newUser ::
+  -- | 'userId'
+  Prelude.Text ->
+  User
+newUser pUserId_ =
+  User'
+    { accountId = Prelude.Nothing,
+      alexaForBusinessMetadata = Prelude.Nothing,
+      displayName = Prelude.Nothing,
+      invitedOn = Prelude.Nothing,
+      licenseType = Prelude.Nothing,
+      personalPIN = Prelude.Nothing,
+      primaryEmail = Prelude.Nothing,
+      primaryProvisionedNumber = Prelude.Nothing,
+      registeredOn = Prelude.Nothing,
+      userInvitationStatus = Prelude.Nothing,
+      userRegistrationStatus = Prelude.Nothing,
+      userType = Prelude.Nothing,
+      userId = pUserId_
+    }
+
+-- | The Amazon Chime account ID.
+user_accountId :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
+user_accountId = Lens.lens (\User' {accountId} -> accountId) (\s@User' {} a -> s {accountId = a} :: User)
+
+-- | The Alexa for Business metadata.
+user_alexaForBusinessMetadata :: Lens.Lens' User (Prelude.Maybe AlexaForBusinessMetadata)
+user_alexaForBusinessMetadata = Lens.lens (\User' {alexaForBusinessMetadata} -> alexaForBusinessMetadata) (\s@User' {} a -> s {alexaForBusinessMetadata = a} :: User)
+
+-- | The display name of the user.
+user_displayName :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
+user_displayName = Lens.lens (\User' {displayName} -> displayName) (\s@User' {} a -> s {displayName = a} :: User) Prelude.. Lens.mapping Data._Sensitive
+
+-- | Date and time when the user is invited to the Amazon Chime account, in
+-- ISO 8601 format.
+user_invitedOn :: Lens.Lens' User (Prelude.Maybe Prelude.UTCTime)
+user_invitedOn = Lens.lens (\User' {invitedOn} -> invitedOn) (\s@User' {} a -> s {invitedOn = a} :: User) Prelude.. Lens.mapping Data._Time
+
+-- | The license type for the user.
+user_licenseType :: Lens.Lens' User (Prelude.Maybe License)
+user_licenseType = Lens.lens (\User' {licenseType} -> licenseType) (\s@User' {} a -> s {licenseType = a} :: User)
+
+-- | The user\'s personal meeting PIN.
+user_personalPIN :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
+user_personalPIN = Lens.lens (\User' {personalPIN} -> personalPIN) (\s@User' {} a -> s {personalPIN = a} :: User)
+
+-- | The primary email address of the user.
+user_primaryEmail :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
+user_primaryEmail = Lens.lens (\User' {primaryEmail} -> primaryEmail) (\s@User' {} a -> s {primaryEmail = a} :: User) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The primary phone number associated with the user.
+user_primaryProvisionedNumber :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
+user_primaryProvisionedNumber = Lens.lens (\User' {primaryProvisionedNumber} -> primaryProvisionedNumber) (\s@User' {} a -> s {primaryProvisionedNumber = a} :: User) Prelude.. Lens.mapping Data._Sensitive
+
+-- | Date and time when the user is registered, in ISO 8601 format.
+user_registeredOn :: Lens.Lens' User (Prelude.Maybe Prelude.UTCTime)
+user_registeredOn = Lens.lens (\User' {registeredOn} -> registeredOn) (\s@User' {} a -> s {registeredOn = a} :: User) Prelude.. Lens.mapping Data._Time
+
+-- | The user invite status.
+user_userInvitationStatus :: Lens.Lens' User (Prelude.Maybe InviteStatus)
+user_userInvitationStatus = Lens.lens (\User' {userInvitationStatus} -> userInvitationStatus) (\s@User' {} a -> s {userInvitationStatus = a} :: User)
+
+-- | The user registration status.
+user_userRegistrationStatus :: Lens.Lens' User (Prelude.Maybe RegistrationStatus)
+user_userRegistrationStatus = Lens.lens (\User' {userRegistrationStatus} -> userRegistrationStatus) (\s@User' {} a -> s {userRegistrationStatus = a} :: User)
+
+-- | The user type.
+user_userType :: Lens.Lens' User (Prelude.Maybe UserType)
+user_userType = Lens.lens (\User' {userType} -> userType) (\s@User' {} a -> s {userType = a} :: User)
+
+-- | The user ID.
+user_userId :: Lens.Lens' User Prelude.Text
+user_userId = Lens.lens (\User' {userId} -> userId) (\s@User' {} a -> s {userId = a} :: User)
+
+instance Data.FromJSON User where
+  parseJSON =
+    Data.withObject
+      "User"
+      ( \x ->
+          User'
+            Prelude.<$> (x Data..:? "AccountId")
+            Prelude.<*> (x Data..:? "AlexaForBusinessMetadata")
+            Prelude.<*> (x Data..:? "DisplayName")
+            Prelude.<*> (x Data..:? "InvitedOn")
+            Prelude.<*> (x Data..:? "LicenseType")
+            Prelude.<*> (x Data..:? "PersonalPIN")
+            Prelude.<*> (x Data..:? "PrimaryEmail")
+            Prelude.<*> (x Data..:? "PrimaryProvisionedNumber")
+            Prelude.<*> (x Data..:? "RegisteredOn")
+            Prelude.<*> (x Data..:? "UserInvitationStatus")
+            Prelude.<*> (x Data..:? "UserRegistrationStatus")
+            Prelude.<*> (x Data..:? "UserType")
+            Prelude.<*> (x Data..: "UserId")
+      )
+
+instance Prelude.Hashable User where
+  hashWithSalt _salt User' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` alexaForBusinessMetadata
+      `Prelude.hashWithSalt` displayName
+      `Prelude.hashWithSalt` invitedOn
+      `Prelude.hashWithSalt` licenseType
+      `Prelude.hashWithSalt` personalPIN
+      `Prelude.hashWithSalt` primaryEmail
+      `Prelude.hashWithSalt` primaryProvisionedNumber
+      `Prelude.hashWithSalt` registeredOn
+      `Prelude.hashWithSalt` userInvitationStatus
+      `Prelude.hashWithSalt` userRegistrationStatus
+      `Prelude.hashWithSalt` userType
+      `Prelude.hashWithSalt` userId
+
+instance Prelude.NFData User where
+  rnf User' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf alexaForBusinessMetadata
+      `Prelude.seq` Prelude.rnf displayName
+      `Prelude.seq` Prelude.rnf invitedOn
+      `Prelude.seq` Prelude.rnf licenseType
+      `Prelude.seq` Prelude.rnf personalPIN
+      `Prelude.seq` Prelude.rnf primaryEmail
+      `Prelude.seq` Prelude.rnf primaryProvisionedNumber
+      `Prelude.seq` Prelude.rnf registeredOn
+      `Prelude.seq` Prelude.rnf userInvitationStatus
+      `Prelude.seq` Prelude.rnf userRegistrationStatus
+      `Prelude.seq` Prelude.rnf userType
+      `Prelude.seq` Prelude.rnf userId
diff --git a/gen/Amazonka/Chime/Types/UserError.hs b/gen/Amazonka/Chime/Types/UserError.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/UserError.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.UserError
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.UserError where
+
+import Amazonka.Chime.Types.ErrorCode
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The list of errors returned when errors are encountered during the
+-- BatchSuspendUser, BatchUnsuspendUser, or BatchUpdateUser actions. This
+-- includes user IDs, error codes, and error messages.
+--
+-- /See:/ 'newUserError' smart constructor.
+data UserError = UserError'
+  { -- | The error code.
+    errorCode :: Prelude.Maybe ErrorCode,
+    -- | The error message.
+    errorMessage :: Prelude.Maybe Prelude.Text,
+    -- | The user ID for which the action failed.
+    userId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UserError' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'errorCode', 'userError_errorCode' - The error code.
+--
+-- 'errorMessage', 'userError_errorMessage' - The error message.
+--
+-- 'userId', 'userError_userId' - The user ID for which the action failed.
+newUserError ::
+  UserError
+newUserError =
+  UserError'
+    { errorCode = Prelude.Nothing,
+      errorMessage = Prelude.Nothing,
+      userId = Prelude.Nothing
+    }
+
+-- | The error code.
+userError_errorCode :: Lens.Lens' UserError (Prelude.Maybe ErrorCode)
+userError_errorCode = Lens.lens (\UserError' {errorCode} -> errorCode) (\s@UserError' {} a -> s {errorCode = a} :: UserError)
+
+-- | The error message.
+userError_errorMessage :: Lens.Lens' UserError (Prelude.Maybe Prelude.Text)
+userError_errorMessage = Lens.lens (\UserError' {errorMessage} -> errorMessage) (\s@UserError' {} a -> s {errorMessage = a} :: UserError)
+
+-- | The user ID for which the action failed.
+userError_userId :: Lens.Lens' UserError (Prelude.Maybe Prelude.Text)
+userError_userId = Lens.lens (\UserError' {userId} -> userId) (\s@UserError' {} a -> s {userId = a} :: UserError)
+
+instance Data.FromJSON UserError where
+  parseJSON =
+    Data.withObject
+      "UserError"
+      ( \x ->
+          UserError'
+            Prelude.<$> (x Data..:? "ErrorCode")
+            Prelude.<*> (x Data..:? "ErrorMessage")
+            Prelude.<*> (x Data..:? "UserId")
+      )
+
+instance Prelude.Hashable UserError where
+  hashWithSalt _salt UserError' {..} =
+    _salt
+      `Prelude.hashWithSalt` errorCode
+      `Prelude.hashWithSalt` errorMessage
+      `Prelude.hashWithSalt` userId
+
+instance Prelude.NFData UserError where
+  rnf UserError' {..} =
+    Prelude.rnf errorCode
+      `Prelude.seq` Prelude.rnf errorMessage
+      `Prelude.seq` Prelude.rnf userId
diff --git a/gen/Amazonka/Chime/Types/UserSettings.hs b/gen/Amazonka/Chime/Types/UserSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/UserSettings.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.UserSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.UserSettings where
+
+import Amazonka.Chime.Types.TelephonySettings
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings associated with an Amazon Chime user, including inbound and
+-- outbound calling and text messaging.
+--
+-- /See:/ 'newUserSettings' smart constructor.
+data UserSettings = UserSettings'
+  { -- | The telephony settings associated with the user.
+    telephony :: TelephonySettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UserSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'telephony', 'userSettings_telephony' - The telephony settings associated with the user.
+newUserSettings ::
+  -- | 'telephony'
+  TelephonySettings ->
+  UserSettings
+newUserSettings pTelephony_ =
+  UserSettings' {telephony = pTelephony_}
+
+-- | The telephony settings associated with the user.
+userSettings_telephony :: Lens.Lens' UserSettings TelephonySettings
+userSettings_telephony = Lens.lens (\UserSettings' {telephony} -> telephony) (\s@UserSettings' {} a -> s {telephony = a} :: UserSettings)
+
+instance Data.FromJSON UserSettings where
+  parseJSON =
+    Data.withObject
+      "UserSettings"
+      ( \x ->
+          UserSettings' Prelude.<$> (x Data..: "Telephony")
+      )
+
+instance Prelude.Hashable UserSettings where
+  hashWithSalt _salt UserSettings' {..} =
+    _salt `Prelude.hashWithSalt` telephony
+
+instance Prelude.NFData UserSettings where
+  rnf UserSettings' {..} = Prelude.rnf telephony
+
+instance Data.ToJSON UserSettings where
+  toJSON UserSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Telephony" Data..= telephony)]
+      )
diff --git a/gen/Amazonka/Chime/Types/UserType.hs b/gen/Amazonka/Chime/Types/UserType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/UserType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.UserType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.UserType
+  ( UserType
+      ( ..,
+        UserType_PrivateUser,
+        UserType_SharedDevice
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype UserType = UserType'
+  { fromUserType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern UserType_PrivateUser :: UserType
+pattern UserType_PrivateUser = UserType' "PrivateUser"
+
+pattern UserType_SharedDevice :: UserType
+pattern UserType_SharedDevice = UserType' "SharedDevice"
+
+{-# COMPLETE
+  UserType_PrivateUser,
+  UserType_SharedDevice,
+  UserType'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/VideoArtifactsConfiguration.hs b/gen/Amazonka/Chime/Types/VideoArtifactsConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/VideoArtifactsConfiguration.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.VideoArtifactsConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.VideoArtifactsConfiguration where
+
+import Amazonka.Chime.Types.ArtifactsState
+import Amazonka.Chime.Types.VideoMuxType
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The video artifact configuration object.
+--
+-- /See:/ 'newVideoArtifactsConfiguration' smart constructor.
+data VideoArtifactsConfiguration = VideoArtifactsConfiguration'
+  { -- | The MUX type of the video artifact configuration object.
+    muxType :: Prelude.Maybe VideoMuxType,
+    -- | Indicates whether the video artifact is enabled or disabled.
+    state :: ArtifactsState
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VideoArtifactsConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'muxType', 'videoArtifactsConfiguration_muxType' - The MUX type of the video artifact configuration object.
+--
+-- 'state', 'videoArtifactsConfiguration_state' - Indicates whether the video artifact is enabled or disabled.
+newVideoArtifactsConfiguration ::
+  -- | 'state'
+  ArtifactsState ->
+  VideoArtifactsConfiguration
+newVideoArtifactsConfiguration pState_ =
+  VideoArtifactsConfiguration'
+    { muxType =
+        Prelude.Nothing,
+      state = pState_
+    }
+
+-- | The MUX type of the video artifact configuration object.
+videoArtifactsConfiguration_muxType :: Lens.Lens' VideoArtifactsConfiguration (Prelude.Maybe VideoMuxType)
+videoArtifactsConfiguration_muxType = Lens.lens (\VideoArtifactsConfiguration' {muxType} -> muxType) (\s@VideoArtifactsConfiguration' {} a -> s {muxType = a} :: VideoArtifactsConfiguration)
+
+-- | Indicates whether the video artifact is enabled or disabled.
+videoArtifactsConfiguration_state :: Lens.Lens' VideoArtifactsConfiguration ArtifactsState
+videoArtifactsConfiguration_state = Lens.lens (\VideoArtifactsConfiguration' {state} -> state) (\s@VideoArtifactsConfiguration' {} a -> s {state = a} :: VideoArtifactsConfiguration)
+
+instance Data.FromJSON VideoArtifactsConfiguration where
+  parseJSON =
+    Data.withObject
+      "VideoArtifactsConfiguration"
+      ( \x ->
+          VideoArtifactsConfiguration'
+            Prelude.<$> (x Data..:? "MuxType")
+            Prelude.<*> (x Data..: "State")
+      )
+
+instance Prelude.Hashable VideoArtifactsConfiguration where
+  hashWithSalt _salt VideoArtifactsConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` muxType
+      `Prelude.hashWithSalt` state
+
+instance Prelude.NFData VideoArtifactsConfiguration where
+  rnf VideoArtifactsConfiguration' {..} =
+    Prelude.rnf muxType `Prelude.seq` Prelude.rnf state
+
+instance Data.ToJSON VideoArtifactsConfiguration where
+  toJSON VideoArtifactsConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MuxType" Data..=) Prelude.<$> muxType,
+            Prelude.Just ("State" Data..= state)
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/VideoMuxType.hs b/gen/Amazonka/Chime/Types/VideoMuxType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/VideoMuxType.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.VideoMuxType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.VideoMuxType
+  ( VideoMuxType
+      ( ..,
+        VideoMuxType_VideoOnly
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype VideoMuxType = VideoMuxType'
+  { fromVideoMuxType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern VideoMuxType_VideoOnly :: VideoMuxType
+pattern VideoMuxType_VideoOnly = VideoMuxType' "VideoOnly"
+
+{-# COMPLETE
+  VideoMuxType_VideoOnly,
+  VideoMuxType'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/VoiceConnector.hs b/gen/Amazonka/Chime/Types/VoiceConnector.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/VoiceConnector.hs
@@ -0,0 +1,164 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.VoiceConnector
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.VoiceConnector where
+
+import Amazonka.Chime.Types.VoiceConnectorAwsRegion
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The Amazon Chime Voice Connector configuration, including outbound host
+-- name and encryption settings.
+--
+-- /See:/ 'newVoiceConnector' smart constructor.
+data VoiceConnector = VoiceConnector'
+  { -- | The AWS Region in which the Amazon Chime Voice Connector is created.
+    -- Default: @us-east-1@.
+    awsRegion :: Prelude.Maybe VoiceConnectorAwsRegion,
+    -- | The Amazon Chime Voice Connector creation timestamp, in ISO 8601 format.
+    createdTimestamp :: Prelude.Maybe Data.ISO8601,
+    -- | The name of the Amazon Chime Voice Connector.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The outbound host name for the Amazon Chime Voice Connector.
+    outboundHostName :: Prelude.Maybe Prelude.Text,
+    -- | Designates whether encryption is required for the Amazon Chime Voice
+    -- Connector.
+    requireEncryption :: Prelude.Maybe Prelude.Bool,
+    -- | The updated Amazon Chime Voice Connector timestamp, in ISO 8601 format.
+    updatedTimestamp :: Prelude.Maybe Data.ISO8601,
+    -- | The ARN of the specified Amazon Chime Voice Connector.
+    voiceConnectorArn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Chime Voice Connector ID.
+    voiceConnectorId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VoiceConnector' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsRegion', 'voiceConnector_awsRegion' - The AWS Region in which the Amazon Chime Voice Connector is created.
+-- Default: @us-east-1@.
+--
+-- 'createdTimestamp', 'voiceConnector_createdTimestamp' - The Amazon Chime Voice Connector creation timestamp, in ISO 8601 format.
+--
+-- 'name', 'voiceConnector_name' - The name of the Amazon Chime Voice Connector.
+--
+-- 'outboundHostName', 'voiceConnector_outboundHostName' - The outbound host name for the Amazon Chime Voice Connector.
+--
+-- 'requireEncryption', 'voiceConnector_requireEncryption' - Designates whether encryption is required for the Amazon Chime Voice
+-- Connector.
+--
+-- 'updatedTimestamp', 'voiceConnector_updatedTimestamp' - The updated Amazon Chime Voice Connector timestamp, in ISO 8601 format.
+--
+-- 'voiceConnectorArn', 'voiceConnector_voiceConnectorArn' - The ARN of the specified Amazon Chime Voice Connector.
+--
+-- 'voiceConnectorId', 'voiceConnector_voiceConnectorId' - The Amazon Chime Voice Connector ID.
+newVoiceConnector ::
+  VoiceConnector
+newVoiceConnector =
+  VoiceConnector'
+    { awsRegion = Prelude.Nothing,
+      createdTimestamp = Prelude.Nothing,
+      name = Prelude.Nothing,
+      outboundHostName = Prelude.Nothing,
+      requireEncryption = Prelude.Nothing,
+      updatedTimestamp = Prelude.Nothing,
+      voiceConnectorArn = Prelude.Nothing,
+      voiceConnectorId = Prelude.Nothing
+    }
+
+-- | The AWS Region in which the Amazon Chime Voice Connector is created.
+-- Default: @us-east-1@.
+voiceConnector_awsRegion :: Lens.Lens' VoiceConnector (Prelude.Maybe VoiceConnectorAwsRegion)
+voiceConnector_awsRegion = Lens.lens (\VoiceConnector' {awsRegion} -> awsRegion) (\s@VoiceConnector' {} a -> s {awsRegion = a} :: VoiceConnector)
+
+-- | The Amazon Chime Voice Connector creation timestamp, in ISO 8601 format.
+voiceConnector_createdTimestamp :: Lens.Lens' VoiceConnector (Prelude.Maybe Prelude.UTCTime)
+voiceConnector_createdTimestamp = Lens.lens (\VoiceConnector' {createdTimestamp} -> createdTimestamp) (\s@VoiceConnector' {} a -> s {createdTimestamp = a} :: VoiceConnector) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the Amazon Chime Voice Connector.
+voiceConnector_name :: Lens.Lens' VoiceConnector (Prelude.Maybe Prelude.Text)
+voiceConnector_name = Lens.lens (\VoiceConnector' {name} -> name) (\s@VoiceConnector' {} a -> s {name = a} :: VoiceConnector)
+
+-- | The outbound host name for the Amazon Chime Voice Connector.
+voiceConnector_outboundHostName :: Lens.Lens' VoiceConnector (Prelude.Maybe Prelude.Text)
+voiceConnector_outboundHostName = Lens.lens (\VoiceConnector' {outboundHostName} -> outboundHostName) (\s@VoiceConnector' {} a -> s {outboundHostName = a} :: VoiceConnector)
+
+-- | Designates whether encryption is required for the Amazon Chime Voice
+-- Connector.
+voiceConnector_requireEncryption :: Lens.Lens' VoiceConnector (Prelude.Maybe Prelude.Bool)
+voiceConnector_requireEncryption = Lens.lens (\VoiceConnector' {requireEncryption} -> requireEncryption) (\s@VoiceConnector' {} a -> s {requireEncryption = a} :: VoiceConnector)
+
+-- | The updated Amazon Chime Voice Connector timestamp, in ISO 8601 format.
+voiceConnector_updatedTimestamp :: Lens.Lens' VoiceConnector (Prelude.Maybe Prelude.UTCTime)
+voiceConnector_updatedTimestamp = Lens.lens (\VoiceConnector' {updatedTimestamp} -> updatedTimestamp) (\s@VoiceConnector' {} a -> s {updatedTimestamp = a} :: VoiceConnector) Prelude.. Lens.mapping Data._Time
+
+-- | The ARN of the specified Amazon Chime Voice Connector.
+voiceConnector_voiceConnectorArn :: Lens.Lens' VoiceConnector (Prelude.Maybe Prelude.Text)
+voiceConnector_voiceConnectorArn = Lens.lens (\VoiceConnector' {voiceConnectorArn} -> voiceConnectorArn) (\s@VoiceConnector' {} a -> s {voiceConnectorArn = a} :: VoiceConnector)
+
+-- | The Amazon Chime Voice Connector ID.
+voiceConnector_voiceConnectorId :: Lens.Lens' VoiceConnector (Prelude.Maybe Prelude.Text)
+voiceConnector_voiceConnectorId = Lens.lens (\VoiceConnector' {voiceConnectorId} -> voiceConnectorId) (\s@VoiceConnector' {} a -> s {voiceConnectorId = a} :: VoiceConnector)
+
+instance Data.FromJSON VoiceConnector where
+  parseJSON =
+    Data.withObject
+      "VoiceConnector"
+      ( \x ->
+          VoiceConnector'
+            Prelude.<$> (x Data..:? "AwsRegion")
+            Prelude.<*> (x Data..:? "CreatedTimestamp")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "OutboundHostName")
+            Prelude.<*> (x Data..:? "RequireEncryption")
+            Prelude.<*> (x Data..:? "UpdatedTimestamp")
+            Prelude.<*> (x Data..:? "VoiceConnectorArn")
+            Prelude.<*> (x Data..:? "VoiceConnectorId")
+      )
+
+instance Prelude.Hashable VoiceConnector where
+  hashWithSalt _salt VoiceConnector' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsRegion
+      `Prelude.hashWithSalt` createdTimestamp
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` outboundHostName
+      `Prelude.hashWithSalt` requireEncryption
+      `Prelude.hashWithSalt` updatedTimestamp
+      `Prelude.hashWithSalt` voiceConnectorArn
+      `Prelude.hashWithSalt` voiceConnectorId
+
+instance Prelude.NFData VoiceConnector where
+  rnf VoiceConnector' {..} =
+    Prelude.rnf awsRegion
+      `Prelude.seq` Prelude.rnf createdTimestamp
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf outboundHostName
+      `Prelude.seq` Prelude.rnf requireEncryption
+      `Prelude.seq` Prelude.rnf updatedTimestamp
+      `Prelude.seq` Prelude.rnf voiceConnectorArn
+      `Prelude.seq` Prelude.rnf voiceConnectorId
diff --git a/gen/Amazonka/Chime/Types/VoiceConnectorAwsRegion.hs b/gen/Amazonka/Chime/Types/VoiceConnectorAwsRegion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/VoiceConnectorAwsRegion.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.VoiceConnectorAwsRegion
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.VoiceConnectorAwsRegion
+  ( VoiceConnectorAwsRegion
+      ( ..,
+        VoiceConnectorAwsRegion_Us_east_1,
+        VoiceConnectorAwsRegion_Us_west_2
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype VoiceConnectorAwsRegion = VoiceConnectorAwsRegion'
+  { fromVoiceConnectorAwsRegion ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern VoiceConnectorAwsRegion_Us_east_1 :: VoiceConnectorAwsRegion
+pattern VoiceConnectorAwsRegion_Us_east_1 = VoiceConnectorAwsRegion' "us-east-1"
+
+pattern VoiceConnectorAwsRegion_Us_west_2 :: VoiceConnectorAwsRegion
+pattern VoiceConnectorAwsRegion_Us_west_2 = VoiceConnectorAwsRegion' "us-west-2"
+
+{-# COMPLETE
+  VoiceConnectorAwsRegion_Us_east_1,
+  VoiceConnectorAwsRegion_Us_west_2,
+  VoiceConnectorAwsRegion'
+  #-}
diff --git a/gen/Amazonka/Chime/Types/VoiceConnectorGroup.hs b/gen/Amazonka/Chime/Types/VoiceConnectorGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/VoiceConnectorGroup.hs
@@ -0,0 +1,146 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.VoiceConnectorGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.VoiceConnectorGroup where
+
+import Amazonka.Chime.Types.VoiceConnectorItem
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The Amazon Chime Voice Connector group configuration, including
+-- associated Amazon Chime Voice Connectors. You can include Amazon Chime
+-- Voice Connectors from different AWS Regions in your group. This creates
+-- a fault tolerant mechanism for fallback in case of availability events.
+--
+-- /See:/ 'newVoiceConnectorGroup' smart constructor.
+data VoiceConnectorGroup = VoiceConnectorGroup'
+  { -- | The Amazon Chime Voice Connector group creation time stamp, in ISO 8601
+    -- format.
+    createdTimestamp :: Prelude.Maybe Data.ISO8601,
+    -- | The name of the Amazon Chime Voice Connector group.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The updated Amazon Chime Voice Connector group time stamp, in ISO 8601
+    -- format.
+    updatedTimestamp :: Prelude.Maybe Data.ISO8601,
+    -- | The ARN of the specified Amazon Chime Voice Connector group.
+    voiceConnectorGroupArn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Chime Voice Connector group ID.
+    voiceConnectorGroupId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Chime Voice Connectors to which to route inbound calls.
+    voiceConnectorItems :: Prelude.Maybe [VoiceConnectorItem]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VoiceConnectorGroup' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'createdTimestamp', 'voiceConnectorGroup_createdTimestamp' - The Amazon Chime Voice Connector group creation time stamp, in ISO 8601
+-- format.
+--
+-- 'name', 'voiceConnectorGroup_name' - The name of the Amazon Chime Voice Connector group.
+--
+-- 'updatedTimestamp', 'voiceConnectorGroup_updatedTimestamp' - The updated Amazon Chime Voice Connector group time stamp, in ISO 8601
+-- format.
+--
+-- 'voiceConnectorGroupArn', 'voiceConnectorGroup_voiceConnectorGroupArn' - The ARN of the specified Amazon Chime Voice Connector group.
+--
+-- 'voiceConnectorGroupId', 'voiceConnectorGroup_voiceConnectorGroupId' - The Amazon Chime Voice Connector group ID.
+--
+-- 'voiceConnectorItems', 'voiceConnectorGroup_voiceConnectorItems' - The Amazon Chime Voice Connectors to which to route inbound calls.
+newVoiceConnectorGroup ::
+  VoiceConnectorGroup
+newVoiceConnectorGroup =
+  VoiceConnectorGroup'
+    { createdTimestamp =
+        Prelude.Nothing,
+      name = Prelude.Nothing,
+      updatedTimestamp = Prelude.Nothing,
+      voiceConnectorGroupArn = Prelude.Nothing,
+      voiceConnectorGroupId = Prelude.Nothing,
+      voiceConnectorItems = Prelude.Nothing
+    }
+
+-- | The Amazon Chime Voice Connector group creation time stamp, in ISO 8601
+-- format.
+voiceConnectorGroup_createdTimestamp :: Lens.Lens' VoiceConnectorGroup (Prelude.Maybe Prelude.UTCTime)
+voiceConnectorGroup_createdTimestamp = Lens.lens (\VoiceConnectorGroup' {createdTimestamp} -> createdTimestamp) (\s@VoiceConnectorGroup' {} a -> s {createdTimestamp = a} :: VoiceConnectorGroup) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the Amazon Chime Voice Connector group.
+voiceConnectorGroup_name :: Lens.Lens' VoiceConnectorGroup (Prelude.Maybe Prelude.Text)
+voiceConnectorGroup_name = Lens.lens (\VoiceConnectorGroup' {name} -> name) (\s@VoiceConnectorGroup' {} a -> s {name = a} :: VoiceConnectorGroup)
+
+-- | The updated Amazon Chime Voice Connector group time stamp, in ISO 8601
+-- format.
+voiceConnectorGroup_updatedTimestamp :: Lens.Lens' VoiceConnectorGroup (Prelude.Maybe Prelude.UTCTime)
+voiceConnectorGroup_updatedTimestamp = Lens.lens (\VoiceConnectorGroup' {updatedTimestamp} -> updatedTimestamp) (\s@VoiceConnectorGroup' {} a -> s {updatedTimestamp = a} :: VoiceConnectorGroup) Prelude.. Lens.mapping Data._Time
+
+-- | The ARN of the specified Amazon Chime Voice Connector group.
+voiceConnectorGroup_voiceConnectorGroupArn :: Lens.Lens' VoiceConnectorGroup (Prelude.Maybe Prelude.Text)
+voiceConnectorGroup_voiceConnectorGroupArn = Lens.lens (\VoiceConnectorGroup' {voiceConnectorGroupArn} -> voiceConnectorGroupArn) (\s@VoiceConnectorGroup' {} a -> s {voiceConnectorGroupArn = a} :: VoiceConnectorGroup)
+
+-- | The Amazon Chime Voice Connector group ID.
+voiceConnectorGroup_voiceConnectorGroupId :: Lens.Lens' VoiceConnectorGroup (Prelude.Maybe Prelude.Text)
+voiceConnectorGroup_voiceConnectorGroupId = Lens.lens (\VoiceConnectorGroup' {voiceConnectorGroupId} -> voiceConnectorGroupId) (\s@VoiceConnectorGroup' {} a -> s {voiceConnectorGroupId = a} :: VoiceConnectorGroup)
+
+-- | The Amazon Chime Voice Connectors to which to route inbound calls.
+voiceConnectorGroup_voiceConnectorItems :: Lens.Lens' VoiceConnectorGroup (Prelude.Maybe [VoiceConnectorItem])
+voiceConnectorGroup_voiceConnectorItems = Lens.lens (\VoiceConnectorGroup' {voiceConnectorItems} -> voiceConnectorItems) (\s@VoiceConnectorGroup' {} a -> s {voiceConnectorItems = a} :: VoiceConnectorGroup) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON VoiceConnectorGroup where
+  parseJSON =
+    Data.withObject
+      "VoiceConnectorGroup"
+      ( \x ->
+          VoiceConnectorGroup'
+            Prelude.<$> (x Data..:? "CreatedTimestamp")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "UpdatedTimestamp")
+            Prelude.<*> (x Data..:? "VoiceConnectorGroupArn")
+            Prelude.<*> (x Data..:? "VoiceConnectorGroupId")
+            Prelude.<*> ( x
+                            Data..:? "VoiceConnectorItems"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable VoiceConnectorGroup where
+  hashWithSalt _salt VoiceConnectorGroup' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdTimestamp
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` updatedTimestamp
+      `Prelude.hashWithSalt` voiceConnectorGroupArn
+      `Prelude.hashWithSalt` voiceConnectorGroupId
+      `Prelude.hashWithSalt` voiceConnectorItems
+
+instance Prelude.NFData VoiceConnectorGroup where
+  rnf VoiceConnectorGroup' {..} =
+    Prelude.rnf createdTimestamp
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf updatedTimestamp
+      `Prelude.seq` Prelude.rnf voiceConnectorGroupArn
+      `Prelude.seq` Prelude.rnf voiceConnectorGroupId
+      `Prelude.seq` Prelude.rnf voiceConnectorItems
diff --git a/gen/Amazonka/Chime/Types/VoiceConnectorItem.hs b/gen/Amazonka/Chime/Types/VoiceConnectorItem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/VoiceConnectorItem.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.VoiceConnectorItem
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.VoiceConnectorItem where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | For Amazon Chime Voice Connector groups, the Amazon Chime Voice
+-- Connectors to which to route inbound calls. Includes priority
+-- configuration settings. Limit: 3 @VoiceConnectorItems@ per Amazon Chime
+-- Voice Connector group.
+--
+-- /See:/ 'newVoiceConnectorItem' smart constructor.
+data VoiceConnectorItem = VoiceConnectorItem'
+  { -- | The Amazon Chime Voice Connector ID.
+    voiceConnectorId :: Prelude.Text,
+    -- | The priority associated with the Amazon Chime Voice Connector, with 1
+    -- being the highest priority. Higher priority Amazon Chime Voice
+    -- Connectors are attempted first.
+    priority :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VoiceConnectorItem' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorId', 'voiceConnectorItem_voiceConnectorId' - The Amazon Chime Voice Connector ID.
+--
+-- 'priority', 'voiceConnectorItem_priority' - The priority associated with the Amazon Chime Voice Connector, with 1
+-- being the highest priority. Higher priority Amazon Chime Voice
+-- Connectors are attempted first.
+newVoiceConnectorItem ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  -- | 'priority'
+  Prelude.Natural ->
+  VoiceConnectorItem
+newVoiceConnectorItem pVoiceConnectorId_ pPriority_ =
+  VoiceConnectorItem'
+    { voiceConnectorId =
+        pVoiceConnectorId_,
+      priority = pPriority_
+    }
+
+-- | The Amazon Chime Voice Connector ID.
+voiceConnectorItem_voiceConnectorId :: Lens.Lens' VoiceConnectorItem Prelude.Text
+voiceConnectorItem_voiceConnectorId = Lens.lens (\VoiceConnectorItem' {voiceConnectorId} -> voiceConnectorId) (\s@VoiceConnectorItem' {} a -> s {voiceConnectorId = a} :: VoiceConnectorItem)
+
+-- | The priority associated with the Amazon Chime Voice Connector, with 1
+-- being the highest priority. Higher priority Amazon Chime Voice
+-- Connectors are attempted first.
+voiceConnectorItem_priority :: Lens.Lens' VoiceConnectorItem Prelude.Natural
+voiceConnectorItem_priority = Lens.lens (\VoiceConnectorItem' {priority} -> priority) (\s@VoiceConnectorItem' {} a -> s {priority = a} :: VoiceConnectorItem)
+
+instance Data.FromJSON VoiceConnectorItem where
+  parseJSON =
+    Data.withObject
+      "VoiceConnectorItem"
+      ( \x ->
+          VoiceConnectorItem'
+            Prelude.<$> (x Data..: "VoiceConnectorId")
+            Prelude.<*> (x Data..: "Priority")
+      )
+
+instance Prelude.Hashable VoiceConnectorItem where
+  hashWithSalt _salt VoiceConnectorItem' {..} =
+    _salt
+      `Prelude.hashWithSalt` voiceConnectorId
+      `Prelude.hashWithSalt` priority
+
+instance Prelude.NFData VoiceConnectorItem where
+  rnf VoiceConnectorItem' {..} =
+    Prelude.rnf voiceConnectorId
+      `Prelude.seq` Prelude.rnf priority
+
+instance Data.ToJSON VoiceConnectorItem where
+  toJSON VoiceConnectorItem' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("VoiceConnectorId" Data..= voiceConnectorId),
+            Prelude.Just ("Priority" Data..= priority)
+          ]
+      )
diff --git a/gen/Amazonka/Chime/Types/VoiceConnectorSettings.hs b/gen/Amazonka/Chime/Types/VoiceConnectorSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Types/VoiceConnectorSettings.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Types.VoiceConnectorSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Types.VoiceConnectorSettings where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The Amazon Chime Voice Connector settings. Includes any Amazon S3
+-- buckets designated for storing call detail records.
+--
+-- /See:/ 'newVoiceConnectorSettings' smart constructor.
+data VoiceConnectorSettings = VoiceConnectorSettings'
+  { -- | The Amazon S3 bucket designated for call detail record storage.
+    cdrBucket :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VoiceConnectorSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'cdrBucket', 'voiceConnectorSettings_cdrBucket' - The Amazon S3 bucket designated for call detail record storage.
+newVoiceConnectorSettings ::
+  VoiceConnectorSettings
+newVoiceConnectorSettings =
+  VoiceConnectorSettings'
+    { cdrBucket =
+        Prelude.Nothing
+    }
+
+-- | The Amazon S3 bucket designated for call detail record storage.
+voiceConnectorSettings_cdrBucket :: Lens.Lens' VoiceConnectorSettings (Prelude.Maybe Prelude.Text)
+voiceConnectorSettings_cdrBucket = Lens.lens (\VoiceConnectorSettings' {cdrBucket} -> cdrBucket) (\s@VoiceConnectorSettings' {} a -> s {cdrBucket = a} :: VoiceConnectorSettings)
+
+instance Data.FromJSON VoiceConnectorSettings where
+  parseJSON =
+    Data.withObject
+      "VoiceConnectorSettings"
+      ( \x ->
+          VoiceConnectorSettings'
+            Prelude.<$> (x Data..:? "CdrBucket")
+      )
+
+instance Prelude.Hashable VoiceConnectorSettings where
+  hashWithSalt _salt VoiceConnectorSettings' {..} =
+    _salt `Prelude.hashWithSalt` cdrBucket
+
+instance Prelude.NFData VoiceConnectorSettings where
+  rnf VoiceConnectorSettings' {..} =
+    Prelude.rnf cdrBucket
+
+instance Data.ToJSON VoiceConnectorSettings where
+  toJSON VoiceConnectorSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("CdrBucket" Data..=) Prelude.<$> cdrBucket]
+      )
diff --git a/gen/Amazonka/Chime/UntagAttendee.hs b/gen/Amazonka/Chime/UntagAttendee.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/UntagAttendee.hs
@@ -0,0 +1,161 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.UntagAttendee
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Untags the specified tags from the specified Amazon Chime SDK attendee.
+module Amazonka.Chime.UntagAttendee
+  ( -- * Creating a Request
+    UntagAttendee (..),
+    newUntagAttendee,
+
+    -- * Request Lenses
+    untagAttendee_meetingId,
+    untagAttendee_tagKeys,
+    untagAttendee_attendeeId,
+
+    -- * Destructuring the Response
+    UntagAttendeeResponse (..),
+    newUntagAttendeeResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUntagAttendee' smart constructor.
+data UntagAttendee = UntagAttendee'
+  { -- | The Amazon Chime SDK meeting ID.
+    meetingId :: Prelude.Text,
+    -- | The tag keys.
+    tagKeys :: Prelude.NonEmpty (Data.Sensitive Prelude.Text),
+    -- | The Amazon Chime SDK attendee ID.
+    attendeeId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagAttendee' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'meetingId', 'untagAttendee_meetingId' - The Amazon Chime SDK meeting ID.
+--
+-- 'tagKeys', 'untagAttendee_tagKeys' - The tag keys.
+--
+-- 'attendeeId', 'untagAttendee_attendeeId' - The Amazon Chime SDK attendee ID.
+newUntagAttendee ::
+  -- | 'meetingId'
+  Prelude.Text ->
+  -- | 'tagKeys'
+  Prelude.NonEmpty Prelude.Text ->
+  -- | 'attendeeId'
+  Prelude.Text ->
+  UntagAttendee
+newUntagAttendee pMeetingId_ pTagKeys_ pAttendeeId_ =
+  UntagAttendee'
+    { meetingId = pMeetingId_,
+      tagKeys = Lens.coerced Lens.# pTagKeys_,
+      attendeeId = pAttendeeId_
+    }
+
+-- | The Amazon Chime SDK meeting ID.
+untagAttendee_meetingId :: Lens.Lens' UntagAttendee Prelude.Text
+untagAttendee_meetingId = Lens.lens (\UntagAttendee' {meetingId} -> meetingId) (\s@UntagAttendee' {} a -> s {meetingId = a} :: UntagAttendee)
+
+-- | The tag keys.
+untagAttendee_tagKeys :: Lens.Lens' UntagAttendee (Prelude.NonEmpty Prelude.Text)
+untagAttendee_tagKeys = Lens.lens (\UntagAttendee' {tagKeys} -> tagKeys) (\s@UntagAttendee' {} a -> s {tagKeys = a} :: UntagAttendee) Prelude.. Lens.coerced
+
+-- | The Amazon Chime SDK attendee ID.
+untagAttendee_attendeeId :: Lens.Lens' UntagAttendee Prelude.Text
+untagAttendee_attendeeId = Lens.lens (\UntagAttendee' {attendeeId} -> attendeeId) (\s@UntagAttendee' {} a -> s {attendeeId = a} :: UntagAttendee)
+
+instance Core.AWSRequest UntagAttendee where
+  type
+    AWSResponse UntagAttendee =
+      UntagAttendeeResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull UntagAttendeeResponse'
+
+instance Prelude.Hashable UntagAttendee where
+  hashWithSalt _salt UntagAttendee' {..} =
+    _salt
+      `Prelude.hashWithSalt` meetingId
+      `Prelude.hashWithSalt` tagKeys
+      `Prelude.hashWithSalt` attendeeId
+
+instance Prelude.NFData UntagAttendee where
+  rnf UntagAttendee' {..} =
+    Prelude.rnf meetingId
+      `Prelude.seq` Prelude.rnf tagKeys
+      `Prelude.seq` Prelude.rnf attendeeId
+
+instance Data.ToHeaders UntagAttendee where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON UntagAttendee where
+  toJSON UntagAttendee' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("TagKeys" Data..= tagKeys)]
+      )
+
+instance Data.ToPath UntagAttendee where
+  toPath UntagAttendee' {..} =
+    Prelude.mconcat
+      [ "/meetings/",
+        Data.toBS meetingId,
+        "/attendees/",
+        Data.toBS attendeeId,
+        "/tags"
+      ]
+
+instance Data.ToQuery UntagAttendee where
+  toQuery =
+    Prelude.const
+      (Prelude.mconcat ["operation=delete"])
+
+-- | /See:/ 'newUntagAttendeeResponse' smart constructor.
+data UntagAttendeeResponse = UntagAttendeeResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagAttendeeResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newUntagAttendeeResponse ::
+  UntagAttendeeResponse
+newUntagAttendeeResponse = UntagAttendeeResponse'
+
+instance Prelude.NFData UntagAttendeeResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/UntagMeeting.hs b/gen/Amazonka/Chime/UntagMeeting.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/UntagMeeting.hs
@@ -0,0 +1,139 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.UntagMeeting
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Untags the specified tags from the specified Amazon Chime SDK meeting.
+module Amazonka.Chime.UntagMeeting
+  ( -- * Creating a Request
+    UntagMeeting (..),
+    newUntagMeeting,
+
+    -- * Request Lenses
+    untagMeeting_meetingId,
+    untagMeeting_tagKeys,
+
+    -- * Destructuring the Response
+    UntagMeetingResponse (..),
+    newUntagMeetingResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUntagMeeting' smart constructor.
+data UntagMeeting = UntagMeeting'
+  { -- | The Amazon Chime SDK meeting ID.
+    meetingId :: Prelude.Text,
+    -- | The tag keys.
+    tagKeys :: Prelude.NonEmpty (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagMeeting' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'meetingId', 'untagMeeting_meetingId' - The Amazon Chime SDK meeting ID.
+--
+-- 'tagKeys', 'untagMeeting_tagKeys' - The tag keys.
+newUntagMeeting ::
+  -- | 'meetingId'
+  Prelude.Text ->
+  -- | 'tagKeys'
+  Prelude.NonEmpty Prelude.Text ->
+  UntagMeeting
+newUntagMeeting pMeetingId_ pTagKeys_ =
+  UntagMeeting'
+    { meetingId = pMeetingId_,
+      tagKeys = Lens.coerced Lens.# pTagKeys_
+    }
+
+-- | The Amazon Chime SDK meeting ID.
+untagMeeting_meetingId :: Lens.Lens' UntagMeeting Prelude.Text
+untagMeeting_meetingId = Lens.lens (\UntagMeeting' {meetingId} -> meetingId) (\s@UntagMeeting' {} a -> s {meetingId = a} :: UntagMeeting)
+
+-- | The tag keys.
+untagMeeting_tagKeys :: Lens.Lens' UntagMeeting (Prelude.NonEmpty Prelude.Text)
+untagMeeting_tagKeys = Lens.lens (\UntagMeeting' {tagKeys} -> tagKeys) (\s@UntagMeeting' {} a -> s {tagKeys = a} :: UntagMeeting) Prelude.. Lens.coerced
+
+instance Core.AWSRequest UntagMeeting where
+  type AWSResponse UntagMeeting = UntagMeetingResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response = Response.receiveNull UntagMeetingResponse'
+
+instance Prelude.Hashable UntagMeeting where
+  hashWithSalt _salt UntagMeeting' {..} =
+    _salt
+      `Prelude.hashWithSalt` meetingId
+      `Prelude.hashWithSalt` tagKeys
+
+instance Prelude.NFData UntagMeeting where
+  rnf UntagMeeting' {..} =
+    Prelude.rnf meetingId
+      `Prelude.seq` Prelude.rnf tagKeys
+
+instance Data.ToHeaders UntagMeeting where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON UntagMeeting where
+  toJSON UntagMeeting' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("TagKeys" Data..= tagKeys)]
+      )
+
+instance Data.ToPath UntagMeeting where
+  toPath UntagMeeting' {..} =
+    Prelude.mconcat
+      ["/meetings/", Data.toBS meetingId, "/tags"]
+
+instance Data.ToQuery UntagMeeting where
+  toQuery =
+    Prelude.const
+      (Prelude.mconcat ["operation=delete"])
+
+-- | /See:/ 'newUntagMeetingResponse' smart constructor.
+data UntagMeetingResponse = UntagMeetingResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagMeetingResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newUntagMeetingResponse ::
+  UntagMeetingResponse
+newUntagMeetingResponse = UntagMeetingResponse'
+
+instance Prelude.NFData UntagMeetingResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/UntagResource.hs b/gen/Amazonka/Chime/UntagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/UntagResource.hs
@@ -0,0 +1,144 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.UntagResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Untags the specified tags from the specified Amazon Chime SDK meeting
+-- resource.
+module Amazonka.Chime.UntagResource
+  ( -- * Creating a Request
+    UntagResource (..),
+    newUntagResource,
+
+    -- * Request Lenses
+    untagResource_resourceARN,
+    untagResource_tagKeys,
+
+    -- * Destructuring the Response
+    UntagResourceResponse (..),
+    newUntagResourceResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUntagResource' smart constructor.
+data UntagResource = UntagResource'
+  { -- | The resource ARN.
+    resourceARN :: Data.Sensitive Prelude.Text,
+    -- | The tag keys.
+    tagKeys :: Prelude.NonEmpty (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceARN', 'untagResource_resourceARN' - The resource ARN.
+--
+-- 'tagKeys', 'untagResource_tagKeys' - The tag keys.
+newUntagResource ::
+  -- | 'resourceARN'
+  Prelude.Text ->
+  -- | 'tagKeys'
+  Prelude.NonEmpty Prelude.Text ->
+  UntagResource
+newUntagResource pResourceARN_ pTagKeys_ =
+  UntagResource'
+    { resourceARN =
+        Data._Sensitive Lens.# pResourceARN_,
+      tagKeys = Lens.coerced Lens.# pTagKeys_
+    }
+
+-- | The resource ARN.
+untagResource_resourceARN :: Lens.Lens' UntagResource Prelude.Text
+untagResource_resourceARN = Lens.lens (\UntagResource' {resourceARN} -> resourceARN) (\s@UntagResource' {} a -> s {resourceARN = a} :: UntagResource) Prelude.. Data._Sensitive
+
+-- | The tag keys.
+untagResource_tagKeys :: Lens.Lens' UntagResource (Prelude.NonEmpty Prelude.Text)
+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest UntagResource where
+  type
+    AWSResponse UntagResource =
+      UntagResourceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull UntagResourceResponse'
+
+instance Prelude.Hashable UntagResource where
+  hashWithSalt _salt UntagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceARN
+      `Prelude.hashWithSalt` tagKeys
+
+instance Prelude.NFData UntagResource where
+  rnf UntagResource' {..} =
+    Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf tagKeys
+
+instance Data.ToHeaders UntagResource where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON UntagResource where
+  toJSON UntagResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ResourceARN" Data..= resourceARN),
+            Prelude.Just ("TagKeys" Data..= tagKeys)
+          ]
+      )
+
+instance Data.ToPath UntagResource where
+  toPath = Prelude.const "/tags"
+
+instance Data.ToQuery UntagResource where
+  toQuery =
+    Prelude.const
+      (Prelude.mconcat ["operation=untag-resource"])
+
+-- | /See:/ 'newUntagResourceResponse' smart constructor.
+data UntagResourceResponse = UntagResourceResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newUntagResourceResponse ::
+  UntagResourceResponse
+newUntagResourceResponse = UntagResourceResponse'
+
+instance Prelude.NFData UntagResourceResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/UpdateAccount.hs b/gen/Amazonka/Chime/UpdateAccount.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/UpdateAccount.hs
@@ -0,0 +1,192 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.UpdateAccount
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates account details for the specified Amazon Chime account.
+-- Currently, only account name and default license updates are supported
+-- for this action.
+module Amazonka.Chime.UpdateAccount
+  ( -- * Creating a Request
+    UpdateAccount (..),
+    newUpdateAccount,
+
+    -- * Request Lenses
+    updateAccount_defaultLicense,
+    updateAccount_name,
+    updateAccount_accountId,
+
+    -- * Destructuring the Response
+    UpdateAccountResponse (..),
+    newUpdateAccountResponse,
+
+    -- * Response Lenses
+    updateAccountResponse_account,
+    updateAccountResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateAccount' smart constructor.
+data UpdateAccount = UpdateAccount'
+  { -- | The default license applied when you add users to an Amazon Chime
+    -- account.
+    defaultLicense :: Prelude.Maybe License,
+    -- | The new name for the specified Amazon Chime account.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateAccount' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'defaultLicense', 'updateAccount_defaultLicense' - The default license applied when you add users to an Amazon Chime
+-- account.
+--
+-- 'name', 'updateAccount_name' - The new name for the specified Amazon Chime account.
+--
+-- 'accountId', 'updateAccount_accountId' - The Amazon Chime account ID.
+newUpdateAccount ::
+  -- | 'accountId'
+  Prelude.Text ->
+  UpdateAccount
+newUpdateAccount pAccountId_ =
+  UpdateAccount'
+    { defaultLicense = Prelude.Nothing,
+      name = Prelude.Nothing,
+      accountId = pAccountId_
+    }
+
+-- | The default license applied when you add users to an Amazon Chime
+-- account.
+updateAccount_defaultLicense :: Lens.Lens' UpdateAccount (Prelude.Maybe License)
+updateAccount_defaultLicense = Lens.lens (\UpdateAccount' {defaultLicense} -> defaultLicense) (\s@UpdateAccount' {} a -> s {defaultLicense = a} :: UpdateAccount)
+
+-- | The new name for the specified Amazon Chime account.
+updateAccount_name :: Lens.Lens' UpdateAccount (Prelude.Maybe Prelude.Text)
+updateAccount_name = Lens.lens (\UpdateAccount' {name} -> name) (\s@UpdateAccount' {} a -> s {name = a} :: UpdateAccount)
+
+-- | The Amazon Chime account ID.
+updateAccount_accountId :: Lens.Lens' UpdateAccount Prelude.Text
+updateAccount_accountId = Lens.lens (\UpdateAccount' {accountId} -> accountId) (\s@UpdateAccount' {} a -> s {accountId = a} :: UpdateAccount)
+
+instance Core.AWSRequest UpdateAccount where
+  type
+    AWSResponse UpdateAccount =
+      UpdateAccountResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateAccountResponse'
+            Prelude.<$> (x Data..?> "Account")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateAccount where
+  hashWithSalt _salt UpdateAccount' {..} =
+    _salt
+      `Prelude.hashWithSalt` defaultLicense
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` accountId
+
+instance Prelude.NFData UpdateAccount where
+  rnf UpdateAccount' {..} =
+    Prelude.rnf defaultLicense
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf accountId
+
+instance Data.ToHeaders UpdateAccount where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON UpdateAccount where
+  toJSON UpdateAccount' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DefaultLicense" Data..=)
+              Prelude.<$> defaultLicense,
+            ("Name" Data..=) Prelude.<$> name
+          ]
+      )
+
+instance Data.ToPath UpdateAccount where
+  toPath UpdateAccount' {..} =
+    Prelude.mconcat ["/accounts/", Data.toBS accountId]
+
+instance Data.ToQuery UpdateAccount where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateAccountResponse' smart constructor.
+data UpdateAccountResponse = UpdateAccountResponse'
+  { -- | The updated Amazon Chime account details.
+    account :: Prelude.Maybe Account,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateAccountResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'account', 'updateAccountResponse_account' - The updated Amazon Chime account details.
+--
+-- 'httpStatus', 'updateAccountResponse_httpStatus' - The response's http status code.
+newUpdateAccountResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateAccountResponse
+newUpdateAccountResponse pHttpStatus_ =
+  UpdateAccountResponse'
+    { account = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The updated Amazon Chime account details.
+updateAccountResponse_account :: Lens.Lens' UpdateAccountResponse (Prelude.Maybe Account)
+updateAccountResponse_account = Lens.lens (\UpdateAccountResponse' {account} -> account) (\s@UpdateAccountResponse' {} a -> s {account = a} :: UpdateAccountResponse)
+
+-- | The response's http status code.
+updateAccountResponse_httpStatus :: Lens.Lens' UpdateAccountResponse Prelude.Int
+updateAccountResponse_httpStatus = Lens.lens (\UpdateAccountResponse' {httpStatus} -> httpStatus) (\s@UpdateAccountResponse' {} a -> s {httpStatus = a} :: UpdateAccountResponse)
+
+instance Prelude.NFData UpdateAccountResponse where
+  rnf UpdateAccountResponse' {..} =
+    Prelude.rnf account
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/UpdateAccountSettings.hs b/gen/Amazonka/Chime/UpdateAccountSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/UpdateAccountSettings.hs
@@ -0,0 +1,172 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.UpdateAccountSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the settings for the specified Amazon Chime account. You can
+-- update settings for remote control of shared screens, or for the
+-- dial-out option. For more information about these settings, see
+-- <https://docs.aws.amazon.com/chime/latest/ag/policies.html Use the Policies Page>
+-- in the /Amazon Chime Administration Guide/.
+module Amazonka.Chime.UpdateAccountSettings
+  ( -- * Creating a Request
+    UpdateAccountSettings (..),
+    newUpdateAccountSettings,
+
+    -- * Request Lenses
+    updateAccountSettings_accountId,
+    updateAccountSettings_accountSettings,
+
+    -- * Destructuring the Response
+    UpdateAccountSettingsResponse (..),
+    newUpdateAccountSettingsResponse,
+
+    -- * Response Lenses
+    updateAccountSettingsResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateAccountSettings' smart constructor.
+data UpdateAccountSettings = UpdateAccountSettings'
+  { -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The Amazon Chime account settings to update.
+    accountSettings :: AccountSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateAccountSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'updateAccountSettings_accountId' - The Amazon Chime account ID.
+--
+-- 'accountSettings', 'updateAccountSettings_accountSettings' - The Amazon Chime account settings to update.
+newUpdateAccountSettings ::
+  -- | 'accountId'
+  Prelude.Text ->
+  -- | 'accountSettings'
+  AccountSettings ->
+  UpdateAccountSettings
+newUpdateAccountSettings
+  pAccountId_
+  pAccountSettings_ =
+    UpdateAccountSettings'
+      { accountId = pAccountId_,
+        accountSettings = pAccountSettings_
+      }
+
+-- | The Amazon Chime account ID.
+updateAccountSettings_accountId :: Lens.Lens' UpdateAccountSettings Prelude.Text
+updateAccountSettings_accountId = Lens.lens (\UpdateAccountSettings' {accountId} -> accountId) (\s@UpdateAccountSettings' {} a -> s {accountId = a} :: UpdateAccountSettings)
+
+-- | The Amazon Chime account settings to update.
+updateAccountSettings_accountSettings :: Lens.Lens' UpdateAccountSettings AccountSettings
+updateAccountSettings_accountSettings = Lens.lens (\UpdateAccountSettings' {accountSettings} -> accountSettings) (\s@UpdateAccountSettings' {} a -> s {accountSettings = a} :: UpdateAccountSettings)
+
+instance Core.AWSRequest UpdateAccountSettings where
+  type
+    AWSResponse UpdateAccountSettings =
+      UpdateAccountSettingsResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UpdateAccountSettingsResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateAccountSettings where
+  hashWithSalt _salt UpdateAccountSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` accountSettings
+
+instance Prelude.NFData UpdateAccountSettings where
+  rnf UpdateAccountSettings' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf accountSettings
+
+instance Data.ToHeaders UpdateAccountSettings where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON UpdateAccountSettings where
+  toJSON UpdateAccountSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("AccountSettings" Data..= accountSettings)
+          ]
+      )
+
+instance Data.ToPath UpdateAccountSettings where
+  toPath UpdateAccountSettings' {..} =
+    Prelude.mconcat
+      ["/accounts/", Data.toBS accountId, "/settings"]
+
+instance Data.ToQuery UpdateAccountSettings where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateAccountSettingsResponse' smart constructor.
+data UpdateAccountSettingsResponse = UpdateAccountSettingsResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateAccountSettingsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'updateAccountSettingsResponse_httpStatus' - The response's http status code.
+newUpdateAccountSettingsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateAccountSettingsResponse
+newUpdateAccountSettingsResponse pHttpStatus_ =
+  UpdateAccountSettingsResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+updateAccountSettingsResponse_httpStatus :: Lens.Lens' UpdateAccountSettingsResponse Prelude.Int
+updateAccountSettingsResponse_httpStatus = Lens.lens (\UpdateAccountSettingsResponse' {httpStatus} -> httpStatus) (\s@UpdateAccountSettingsResponse' {} a -> s {httpStatus = a} :: UpdateAccountSettingsResponse)
+
+instance Prelude.NFData UpdateAccountSettingsResponse where
+  rnf UpdateAccountSettingsResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/UpdateAppInstance.hs b/gen/Amazonka/Chime/UpdateAppInstance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/UpdateAppInstance.hs
@@ -0,0 +1,190 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.UpdateAppInstance
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates @AppInstance@ metadata.
+module Amazonka.Chime.UpdateAppInstance
+  ( -- * Creating a Request
+    UpdateAppInstance (..),
+    newUpdateAppInstance,
+
+    -- * Request Lenses
+    updateAppInstance_metadata,
+    updateAppInstance_appInstanceArn,
+    updateAppInstance_name,
+
+    -- * Destructuring the Response
+    UpdateAppInstanceResponse (..),
+    newUpdateAppInstanceResponse,
+
+    -- * Response Lenses
+    updateAppInstanceResponse_appInstanceArn,
+    updateAppInstanceResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateAppInstance' smart constructor.
+data UpdateAppInstance = UpdateAppInstance'
+  { -- | The metadata that you want to change.
+    metadata :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The ARN of the @AppInstance@.
+    appInstanceArn :: Prelude.Text,
+    -- | The name that you want to change.
+    name :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateAppInstance' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'metadata', 'updateAppInstance_metadata' - The metadata that you want to change.
+--
+-- 'appInstanceArn', 'updateAppInstance_appInstanceArn' - The ARN of the @AppInstance@.
+--
+-- 'name', 'updateAppInstance_name' - The name that you want to change.
+newUpdateAppInstance ::
+  -- | 'appInstanceArn'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  UpdateAppInstance
+newUpdateAppInstance pAppInstanceArn_ pName_ =
+  UpdateAppInstance'
+    { metadata = Prelude.Nothing,
+      appInstanceArn = pAppInstanceArn_,
+      name = Data._Sensitive Lens.# pName_
+    }
+
+-- | The metadata that you want to change.
+updateAppInstance_metadata :: Lens.Lens' UpdateAppInstance (Prelude.Maybe Prelude.Text)
+updateAppInstance_metadata = Lens.lens (\UpdateAppInstance' {metadata} -> metadata) (\s@UpdateAppInstance' {} a -> s {metadata = a} :: UpdateAppInstance) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The ARN of the @AppInstance@.
+updateAppInstance_appInstanceArn :: Lens.Lens' UpdateAppInstance Prelude.Text
+updateAppInstance_appInstanceArn = Lens.lens (\UpdateAppInstance' {appInstanceArn} -> appInstanceArn) (\s@UpdateAppInstance' {} a -> s {appInstanceArn = a} :: UpdateAppInstance)
+
+-- | The name that you want to change.
+updateAppInstance_name :: Lens.Lens' UpdateAppInstance Prelude.Text
+updateAppInstance_name = Lens.lens (\UpdateAppInstance' {name} -> name) (\s@UpdateAppInstance' {} a -> s {name = a} :: UpdateAppInstance) Prelude.. Data._Sensitive
+
+instance Core.AWSRequest UpdateAppInstance where
+  type
+    AWSResponse UpdateAppInstance =
+      UpdateAppInstanceResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateAppInstanceResponse'
+            Prelude.<$> (x Data..?> "AppInstanceArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateAppInstance where
+  hashWithSalt _salt UpdateAppInstance' {..} =
+    _salt
+      `Prelude.hashWithSalt` metadata
+      `Prelude.hashWithSalt` appInstanceArn
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData UpdateAppInstance where
+  rnf UpdateAppInstance' {..} =
+    Prelude.rnf metadata
+      `Prelude.seq` Prelude.rnf appInstanceArn
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToHeaders UpdateAppInstance where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON UpdateAppInstance where
+  toJSON UpdateAppInstance' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Metadata" Data..=) Prelude.<$> metadata,
+            Prelude.Just ("Name" Data..= name)
+          ]
+      )
+
+instance Data.ToPath UpdateAppInstance where
+  toPath UpdateAppInstance' {..} =
+    Prelude.mconcat
+      ["/app-instances/", Data.toBS appInstanceArn]
+
+instance Data.ToQuery UpdateAppInstance where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateAppInstanceResponse' smart constructor.
+data UpdateAppInstanceResponse = UpdateAppInstanceResponse'
+  { -- | The ARN of the @AppInstance@.
+    appInstanceArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateAppInstanceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceArn', 'updateAppInstanceResponse_appInstanceArn' - The ARN of the @AppInstance@.
+--
+-- 'httpStatus', 'updateAppInstanceResponse_httpStatus' - The response's http status code.
+newUpdateAppInstanceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateAppInstanceResponse
+newUpdateAppInstanceResponse pHttpStatus_ =
+  UpdateAppInstanceResponse'
+    { appInstanceArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of the @AppInstance@.
+updateAppInstanceResponse_appInstanceArn :: Lens.Lens' UpdateAppInstanceResponse (Prelude.Maybe Prelude.Text)
+updateAppInstanceResponse_appInstanceArn = Lens.lens (\UpdateAppInstanceResponse' {appInstanceArn} -> appInstanceArn) (\s@UpdateAppInstanceResponse' {} a -> s {appInstanceArn = a} :: UpdateAppInstanceResponse)
+
+-- | The response's http status code.
+updateAppInstanceResponse_httpStatus :: Lens.Lens' UpdateAppInstanceResponse Prelude.Int
+updateAppInstanceResponse_httpStatus = Lens.lens (\UpdateAppInstanceResponse' {httpStatus} -> httpStatus) (\s@UpdateAppInstanceResponse' {} a -> s {httpStatus = a} :: UpdateAppInstanceResponse)
+
+instance Prelude.NFData UpdateAppInstanceResponse where
+  rnf UpdateAppInstanceResponse' {..} =
+    Prelude.rnf appInstanceArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/UpdateAppInstanceUser.hs b/gen/Amazonka/Chime/UpdateAppInstanceUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/UpdateAppInstanceUser.hs
@@ -0,0 +1,193 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.UpdateAppInstanceUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the details of an @AppInstanceUser@. You can update names and
+-- metadata.
+module Amazonka.Chime.UpdateAppInstanceUser
+  ( -- * Creating a Request
+    UpdateAppInstanceUser (..),
+    newUpdateAppInstanceUser,
+
+    -- * Request Lenses
+    updateAppInstanceUser_metadata,
+    updateAppInstanceUser_appInstanceUserArn,
+    updateAppInstanceUser_name,
+
+    -- * Destructuring the Response
+    UpdateAppInstanceUserResponse (..),
+    newUpdateAppInstanceUserResponse,
+
+    -- * Response Lenses
+    updateAppInstanceUserResponse_appInstanceUserArn,
+    updateAppInstanceUserResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateAppInstanceUser' smart constructor.
+data UpdateAppInstanceUser = UpdateAppInstanceUser'
+  { -- | The metadata of the @AppInstanceUser@.
+    metadata :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The ARN of the @AppInstanceUser@.
+    appInstanceUserArn :: Prelude.Text,
+    -- | The name of the @AppInstanceUser@.
+    name :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateAppInstanceUser' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'metadata', 'updateAppInstanceUser_metadata' - The metadata of the @AppInstanceUser@.
+--
+-- 'appInstanceUserArn', 'updateAppInstanceUser_appInstanceUserArn' - The ARN of the @AppInstanceUser@.
+--
+-- 'name', 'updateAppInstanceUser_name' - The name of the @AppInstanceUser@.
+newUpdateAppInstanceUser ::
+  -- | 'appInstanceUserArn'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  UpdateAppInstanceUser
+newUpdateAppInstanceUser pAppInstanceUserArn_ pName_ =
+  UpdateAppInstanceUser'
+    { metadata = Prelude.Nothing,
+      appInstanceUserArn = pAppInstanceUserArn_,
+      name = Data._Sensitive Lens.# pName_
+    }
+
+-- | The metadata of the @AppInstanceUser@.
+updateAppInstanceUser_metadata :: Lens.Lens' UpdateAppInstanceUser (Prelude.Maybe Prelude.Text)
+updateAppInstanceUser_metadata = Lens.lens (\UpdateAppInstanceUser' {metadata} -> metadata) (\s@UpdateAppInstanceUser' {} a -> s {metadata = a} :: UpdateAppInstanceUser) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The ARN of the @AppInstanceUser@.
+updateAppInstanceUser_appInstanceUserArn :: Lens.Lens' UpdateAppInstanceUser Prelude.Text
+updateAppInstanceUser_appInstanceUserArn = Lens.lens (\UpdateAppInstanceUser' {appInstanceUserArn} -> appInstanceUserArn) (\s@UpdateAppInstanceUser' {} a -> s {appInstanceUserArn = a} :: UpdateAppInstanceUser)
+
+-- | The name of the @AppInstanceUser@.
+updateAppInstanceUser_name :: Lens.Lens' UpdateAppInstanceUser Prelude.Text
+updateAppInstanceUser_name = Lens.lens (\UpdateAppInstanceUser' {name} -> name) (\s@UpdateAppInstanceUser' {} a -> s {name = a} :: UpdateAppInstanceUser) Prelude.. Data._Sensitive
+
+instance Core.AWSRequest UpdateAppInstanceUser where
+  type
+    AWSResponse UpdateAppInstanceUser =
+      UpdateAppInstanceUserResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateAppInstanceUserResponse'
+            Prelude.<$> (x Data..?> "AppInstanceUserArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateAppInstanceUser where
+  hashWithSalt _salt UpdateAppInstanceUser' {..} =
+    _salt
+      `Prelude.hashWithSalt` metadata
+      `Prelude.hashWithSalt` appInstanceUserArn
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData UpdateAppInstanceUser where
+  rnf UpdateAppInstanceUser' {..} =
+    Prelude.rnf metadata
+      `Prelude.seq` Prelude.rnf appInstanceUserArn
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToHeaders UpdateAppInstanceUser where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON UpdateAppInstanceUser where
+  toJSON UpdateAppInstanceUser' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Metadata" Data..=) Prelude.<$> metadata,
+            Prelude.Just ("Name" Data..= name)
+          ]
+      )
+
+instance Data.ToPath UpdateAppInstanceUser where
+  toPath UpdateAppInstanceUser' {..} =
+    Prelude.mconcat
+      [ "/app-instance-users/",
+        Data.toBS appInstanceUserArn
+      ]
+
+instance Data.ToQuery UpdateAppInstanceUser where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateAppInstanceUserResponse' smart constructor.
+data UpdateAppInstanceUserResponse = UpdateAppInstanceUserResponse'
+  { -- | The ARN of the @AppInstanceUser@.
+    appInstanceUserArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateAppInstanceUserResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appInstanceUserArn', 'updateAppInstanceUserResponse_appInstanceUserArn' - The ARN of the @AppInstanceUser@.
+--
+-- 'httpStatus', 'updateAppInstanceUserResponse_httpStatus' - The response's http status code.
+newUpdateAppInstanceUserResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateAppInstanceUserResponse
+newUpdateAppInstanceUserResponse pHttpStatus_ =
+  UpdateAppInstanceUserResponse'
+    { appInstanceUserArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of the @AppInstanceUser@.
+updateAppInstanceUserResponse_appInstanceUserArn :: Lens.Lens' UpdateAppInstanceUserResponse (Prelude.Maybe Prelude.Text)
+updateAppInstanceUserResponse_appInstanceUserArn = Lens.lens (\UpdateAppInstanceUserResponse' {appInstanceUserArn} -> appInstanceUserArn) (\s@UpdateAppInstanceUserResponse' {} a -> s {appInstanceUserArn = a} :: UpdateAppInstanceUserResponse)
+
+-- | The response's http status code.
+updateAppInstanceUserResponse_httpStatus :: Lens.Lens' UpdateAppInstanceUserResponse Prelude.Int
+updateAppInstanceUserResponse_httpStatus = Lens.lens (\UpdateAppInstanceUserResponse' {httpStatus} -> httpStatus) (\s@UpdateAppInstanceUserResponse' {} a -> s {httpStatus = a} :: UpdateAppInstanceUserResponse)
+
+instance Prelude.NFData UpdateAppInstanceUserResponse where
+  rnf UpdateAppInstanceUserResponse' {..} =
+    Prelude.rnf appInstanceUserArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/UpdateBot.hs b/gen/Amazonka/Chime/UpdateBot.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/UpdateBot.hs
@@ -0,0 +1,190 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.UpdateBot
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the status of the specified bot, such as starting or stopping
+-- the bot from running in your Amazon Chime Enterprise account.
+module Amazonka.Chime.UpdateBot
+  ( -- * Creating a Request
+    UpdateBot (..),
+    newUpdateBot,
+
+    -- * Request Lenses
+    updateBot_disabled,
+    updateBot_accountId,
+    updateBot_botId,
+
+    -- * Destructuring the Response
+    UpdateBotResponse (..),
+    newUpdateBotResponse,
+
+    -- * Response Lenses
+    updateBotResponse_bot,
+    updateBotResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateBot' smart constructor.
+data UpdateBot = UpdateBot'
+  { -- | When true, stops the specified bot from running in your account.
+    disabled :: Prelude.Maybe Prelude.Bool,
+    -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The bot ID.
+    botId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateBot' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'disabled', 'updateBot_disabled' - When true, stops the specified bot from running in your account.
+--
+-- 'accountId', 'updateBot_accountId' - The Amazon Chime account ID.
+--
+-- 'botId', 'updateBot_botId' - The bot ID.
+newUpdateBot ::
+  -- | 'accountId'
+  Prelude.Text ->
+  -- | 'botId'
+  Prelude.Text ->
+  UpdateBot
+newUpdateBot pAccountId_ pBotId_ =
+  UpdateBot'
+    { disabled = Prelude.Nothing,
+      accountId = pAccountId_,
+      botId = pBotId_
+    }
+
+-- | When true, stops the specified bot from running in your account.
+updateBot_disabled :: Lens.Lens' UpdateBot (Prelude.Maybe Prelude.Bool)
+updateBot_disabled = Lens.lens (\UpdateBot' {disabled} -> disabled) (\s@UpdateBot' {} a -> s {disabled = a} :: UpdateBot)
+
+-- | The Amazon Chime account ID.
+updateBot_accountId :: Lens.Lens' UpdateBot Prelude.Text
+updateBot_accountId = Lens.lens (\UpdateBot' {accountId} -> accountId) (\s@UpdateBot' {} a -> s {accountId = a} :: UpdateBot)
+
+-- | The bot ID.
+updateBot_botId :: Lens.Lens' UpdateBot Prelude.Text
+updateBot_botId = Lens.lens (\UpdateBot' {botId} -> botId) (\s@UpdateBot' {} a -> s {botId = a} :: UpdateBot)
+
+instance Core.AWSRequest UpdateBot where
+  type AWSResponse UpdateBot = UpdateBotResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateBotResponse'
+            Prelude.<$> (x Data..?> "Bot")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateBot where
+  hashWithSalt _salt UpdateBot' {..} =
+    _salt
+      `Prelude.hashWithSalt` disabled
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` botId
+
+instance Prelude.NFData UpdateBot where
+  rnf UpdateBot' {..} =
+    Prelude.rnf disabled
+      `Prelude.seq` Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf botId
+
+instance Data.ToHeaders UpdateBot where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON UpdateBot where
+  toJSON UpdateBot' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Disabled" Data..=) Prelude.<$> disabled]
+      )
+
+instance Data.ToPath UpdateBot where
+  toPath UpdateBot' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS accountId,
+        "/bots/",
+        Data.toBS botId
+      ]
+
+instance Data.ToQuery UpdateBot where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateBotResponse' smart constructor.
+data UpdateBotResponse = UpdateBotResponse'
+  { -- | The updated bot details.
+    bot :: Prelude.Maybe Bot,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateBotResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bot', 'updateBotResponse_bot' - The updated bot details.
+--
+-- 'httpStatus', 'updateBotResponse_httpStatus' - The response's http status code.
+newUpdateBotResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateBotResponse
+newUpdateBotResponse pHttpStatus_ =
+  UpdateBotResponse'
+    { bot = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The updated bot details.
+updateBotResponse_bot :: Lens.Lens' UpdateBotResponse (Prelude.Maybe Bot)
+updateBotResponse_bot = Lens.lens (\UpdateBotResponse' {bot} -> bot) (\s@UpdateBotResponse' {} a -> s {bot = a} :: UpdateBotResponse)
+
+-- | The response's http status code.
+updateBotResponse_httpStatus :: Lens.Lens' UpdateBotResponse Prelude.Int
+updateBotResponse_httpStatus = Lens.lens (\UpdateBotResponse' {httpStatus} -> httpStatus) (\s@UpdateBotResponse' {} a -> s {httpStatus = a} :: UpdateBotResponse)
+
+instance Prelude.NFData UpdateBotResponse where
+  rnf UpdateBotResponse' {..} =
+    Prelude.rnf bot
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/UpdateChannel.hs b/gen/Amazonka/Chime/UpdateChannel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/UpdateChannel.hs
@@ -0,0 +1,225 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.UpdateChannel
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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.
+module Amazonka.Chime.UpdateChannel
+  ( -- * Creating a Request
+    UpdateChannel (..),
+    newUpdateChannel,
+
+    -- * Request Lenses
+    updateChannel_chimeBearer,
+    updateChannel_metadata,
+    updateChannel_channelArn,
+    updateChannel_name,
+    updateChannel_mode,
+
+    -- * Destructuring the Response
+    UpdateChannelResponse (..),
+    newUpdateChannelResponse,
+
+    -- * Response Lenses
+    updateChannelResponse_channelArn,
+    updateChannelResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateChannel' smart constructor.
+data UpdateChannel = UpdateChannel'
+  { -- | The @AppInstanceUserArn@ of the user that makes the API call.
+    chimeBearer :: Prelude.Maybe Prelude.Text,
+    -- | The metadata for the update request.
+    metadata :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The ARN of the channel.
+    channelArn :: Prelude.Text,
+    -- | The name of the channel.
+    name :: Data.Sensitive Prelude.Text,
+    -- | The mode of the update request.
+    mode :: ChannelMode
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateChannel' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chimeBearer', 'updateChannel_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
+--
+-- 'metadata', 'updateChannel_metadata' - The metadata for the update request.
+--
+-- 'channelArn', 'updateChannel_channelArn' - The ARN of the channel.
+--
+-- 'name', 'updateChannel_name' - The name of the channel.
+--
+-- 'mode', 'updateChannel_mode' - The mode of the update request.
+newUpdateChannel ::
+  -- | 'channelArn'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'mode'
+  ChannelMode ->
+  UpdateChannel
+newUpdateChannel pChannelArn_ pName_ pMode_ =
+  UpdateChannel'
+    { chimeBearer = Prelude.Nothing,
+      metadata = Prelude.Nothing,
+      channelArn = pChannelArn_,
+      name = Data._Sensitive Lens.# pName_,
+      mode = pMode_
+    }
+
+-- | The @AppInstanceUserArn@ of the user that makes the API call.
+updateChannel_chimeBearer :: Lens.Lens' UpdateChannel (Prelude.Maybe Prelude.Text)
+updateChannel_chimeBearer = Lens.lens (\UpdateChannel' {chimeBearer} -> chimeBearer) (\s@UpdateChannel' {} a -> s {chimeBearer = a} :: UpdateChannel)
+
+-- | The metadata for the update request.
+updateChannel_metadata :: Lens.Lens' UpdateChannel (Prelude.Maybe Prelude.Text)
+updateChannel_metadata = Lens.lens (\UpdateChannel' {metadata} -> metadata) (\s@UpdateChannel' {} a -> s {metadata = a} :: UpdateChannel) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The ARN of the channel.
+updateChannel_channelArn :: Lens.Lens' UpdateChannel Prelude.Text
+updateChannel_channelArn = Lens.lens (\UpdateChannel' {channelArn} -> channelArn) (\s@UpdateChannel' {} a -> s {channelArn = a} :: UpdateChannel)
+
+-- | The name of the channel.
+updateChannel_name :: Lens.Lens' UpdateChannel Prelude.Text
+updateChannel_name = Lens.lens (\UpdateChannel' {name} -> name) (\s@UpdateChannel' {} a -> s {name = a} :: UpdateChannel) Prelude.. Data._Sensitive
+
+-- | The mode of the update request.
+updateChannel_mode :: Lens.Lens' UpdateChannel ChannelMode
+updateChannel_mode = Lens.lens (\UpdateChannel' {mode} -> mode) (\s@UpdateChannel' {} a -> s {mode = a} :: UpdateChannel)
+
+instance Core.AWSRequest UpdateChannel where
+  type
+    AWSResponse UpdateChannel =
+      UpdateChannelResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateChannelResponse'
+            Prelude.<$> (x Data..?> "ChannelArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateChannel where
+  hashWithSalt _salt UpdateChannel' {..} =
+    _salt
+      `Prelude.hashWithSalt` chimeBearer
+      `Prelude.hashWithSalt` metadata
+      `Prelude.hashWithSalt` channelArn
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` mode
+
+instance Prelude.NFData UpdateChannel where
+  rnf UpdateChannel' {..} =
+    Prelude.rnf chimeBearer
+      `Prelude.seq` Prelude.rnf metadata
+      `Prelude.seq` Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf mode
+
+instance Data.ToHeaders UpdateChannel where
+  toHeaders UpdateChannel' {..} =
+    Prelude.mconcat
+      ["x-amz-chime-bearer" Data.=# chimeBearer]
+
+instance Data.ToJSON UpdateChannel where
+  toJSON UpdateChannel' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Metadata" Data..=) Prelude.<$> metadata,
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("Mode" Data..= mode)
+          ]
+      )
+
+instance Data.ToPath UpdateChannel where
+  toPath UpdateChannel' {..} =
+    Prelude.mconcat
+      ["/channels/", Data.toBS channelArn]
+
+instance Data.ToQuery UpdateChannel where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateChannelResponse' smart constructor.
+data UpdateChannelResponse = UpdateChannelResponse'
+  { -- | The ARN of the channel.
+    channelArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateChannelResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channelArn', 'updateChannelResponse_channelArn' - The ARN of the channel.
+--
+-- 'httpStatus', 'updateChannelResponse_httpStatus' - The response's http status code.
+newUpdateChannelResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateChannelResponse
+newUpdateChannelResponse pHttpStatus_ =
+  UpdateChannelResponse'
+    { channelArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of the channel.
+updateChannelResponse_channelArn :: Lens.Lens' UpdateChannelResponse (Prelude.Maybe Prelude.Text)
+updateChannelResponse_channelArn = Lens.lens (\UpdateChannelResponse' {channelArn} -> channelArn) (\s@UpdateChannelResponse' {} a -> s {channelArn = a} :: UpdateChannelResponse)
+
+-- | The response's http status code.
+updateChannelResponse_httpStatus :: Lens.Lens' UpdateChannelResponse Prelude.Int
+updateChannelResponse_httpStatus = Lens.lens (\UpdateChannelResponse' {httpStatus} -> httpStatus) (\s@UpdateChannelResponse' {} a -> s {httpStatus = a} :: UpdateChannelResponse)
+
+instance Prelude.NFData UpdateChannelResponse where
+  rnf UpdateChannelResponse' {..} =
+    Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/UpdateChannelMessage.hs b/gen/Amazonka/Chime/UpdateChannelMessage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/UpdateChannelMessage.hs
@@ -0,0 +1,237 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.UpdateChannelMessage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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.
+module Amazonka.Chime.UpdateChannelMessage
+  ( -- * Creating a Request
+    UpdateChannelMessage (..),
+    newUpdateChannelMessage,
+
+    -- * Request Lenses
+    updateChannelMessage_chimeBearer,
+    updateChannelMessage_content,
+    updateChannelMessage_metadata,
+    updateChannelMessage_channelArn,
+    updateChannelMessage_messageId,
+
+    -- * Destructuring the Response
+    UpdateChannelMessageResponse (..),
+    newUpdateChannelMessageResponse,
+
+    -- * Response Lenses
+    updateChannelMessageResponse_channelArn,
+    updateChannelMessageResponse_messageId,
+    updateChannelMessageResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateChannelMessage' smart constructor.
+data UpdateChannelMessage = UpdateChannelMessage'
+  { -- | The @AppInstanceUserArn@ of the user that makes the API call.
+    chimeBearer :: Prelude.Maybe Prelude.Text,
+    -- | The content of the message being updated.
+    content :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The metadata of the message being updated.
+    metadata :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The ARN of the channel.
+    channelArn :: Prelude.Text,
+    -- | The ID string of the message being updated.
+    messageId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateChannelMessage' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chimeBearer', 'updateChannelMessage_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
+--
+-- 'content', 'updateChannelMessage_content' - The content of the message being updated.
+--
+-- 'metadata', 'updateChannelMessage_metadata' - The metadata of the message being updated.
+--
+-- 'channelArn', 'updateChannelMessage_channelArn' - The ARN of the channel.
+--
+-- 'messageId', 'updateChannelMessage_messageId' - The ID string of the message being updated.
+newUpdateChannelMessage ::
+  -- | 'channelArn'
+  Prelude.Text ->
+  -- | 'messageId'
+  Prelude.Text ->
+  UpdateChannelMessage
+newUpdateChannelMessage pChannelArn_ pMessageId_ =
+  UpdateChannelMessage'
+    { chimeBearer =
+        Prelude.Nothing,
+      content = Prelude.Nothing,
+      metadata = Prelude.Nothing,
+      channelArn = pChannelArn_,
+      messageId = pMessageId_
+    }
+
+-- | The @AppInstanceUserArn@ of the user that makes the API call.
+updateChannelMessage_chimeBearer :: Lens.Lens' UpdateChannelMessage (Prelude.Maybe Prelude.Text)
+updateChannelMessage_chimeBearer = Lens.lens (\UpdateChannelMessage' {chimeBearer} -> chimeBearer) (\s@UpdateChannelMessage' {} a -> s {chimeBearer = a} :: UpdateChannelMessage)
+
+-- | The content of the message being updated.
+updateChannelMessage_content :: Lens.Lens' UpdateChannelMessage (Prelude.Maybe Prelude.Text)
+updateChannelMessage_content = Lens.lens (\UpdateChannelMessage' {content} -> content) (\s@UpdateChannelMessage' {} a -> s {content = a} :: UpdateChannelMessage) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The metadata of the message being updated.
+updateChannelMessage_metadata :: Lens.Lens' UpdateChannelMessage (Prelude.Maybe Prelude.Text)
+updateChannelMessage_metadata = Lens.lens (\UpdateChannelMessage' {metadata} -> metadata) (\s@UpdateChannelMessage' {} a -> s {metadata = a} :: UpdateChannelMessage) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The ARN of the channel.
+updateChannelMessage_channelArn :: Lens.Lens' UpdateChannelMessage Prelude.Text
+updateChannelMessage_channelArn = Lens.lens (\UpdateChannelMessage' {channelArn} -> channelArn) (\s@UpdateChannelMessage' {} a -> s {channelArn = a} :: UpdateChannelMessage)
+
+-- | The ID string of the message being updated.
+updateChannelMessage_messageId :: Lens.Lens' UpdateChannelMessage Prelude.Text
+updateChannelMessage_messageId = Lens.lens (\UpdateChannelMessage' {messageId} -> messageId) (\s@UpdateChannelMessage' {} a -> s {messageId = a} :: UpdateChannelMessage)
+
+instance Core.AWSRequest UpdateChannelMessage where
+  type
+    AWSResponse UpdateChannelMessage =
+      UpdateChannelMessageResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateChannelMessageResponse'
+            Prelude.<$> (x Data..?> "ChannelArn")
+            Prelude.<*> (x Data..?> "MessageId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateChannelMessage where
+  hashWithSalt _salt UpdateChannelMessage' {..} =
+    _salt
+      `Prelude.hashWithSalt` chimeBearer
+      `Prelude.hashWithSalt` content
+      `Prelude.hashWithSalt` metadata
+      `Prelude.hashWithSalt` channelArn
+      `Prelude.hashWithSalt` messageId
+
+instance Prelude.NFData UpdateChannelMessage where
+  rnf UpdateChannelMessage' {..} =
+    Prelude.rnf chimeBearer
+      `Prelude.seq` Prelude.rnf content
+      `Prelude.seq` Prelude.rnf metadata
+      `Prelude.seq` Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf messageId
+
+instance Data.ToHeaders UpdateChannelMessage where
+  toHeaders UpdateChannelMessage' {..} =
+    Prelude.mconcat
+      ["x-amz-chime-bearer" Data.=# chimeBearer]
+
+instance Data.ToJSON UpdateChannelMessage where
+  toJSON UpdateChannelMessage' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Content" Data..=) Prelude.<$> content,
+            ("Metadata" Data..=) Prelude.<$> metadata
+          ]
+      )
+
+instance Data.ToPath UpdateChannelMessage where
+  toPath UpdateChannelMessage' {..} =
+    Prelude.mconcat
+      [ "/channels/",
+        Data.toBS channelArn,
+        "/messages/",
+        Data.toBS messageId
+      ]
+
+instance Data.ToQuery UpdateChannelMessage where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateChannelMessageResponse' smart constructor.
+data UpdateChannelMessageResponse = UpdateChannelMessageResponse'
+  { -- | The ARN of the channel.
+    channelArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID string of the message being updated.
+    messageId :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateChannelMessageResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channelArn', 'updateChannelMessageResponse_channelArn' - The ARN of the channel.
+--
+-- 'messageId', 'updateChannelMessageResponse_messageId' - The ID string of the message being updated.
+--
+-- 'httpStatus', 'updateChannelMessageResponse_httpStatus' - The response's http status code.
+newUpdateChannelMessageResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateChannelMessageResponse
+newUpdateChannelMessageResponse pHttpStatus_ =
+  UpdateChannelMessageResponse'
+    { channelArn =
+        Prelude.Nothing,
+      messageId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of the channel.
+updateChannelMessageResponse_channelArn :: Lens.Lens' UpdateChannelMessageResponse (Prelude.Maybe Prelude.Text)
+updateChannelMessageResponse_channelArn = Lens.lens (\UpdateChannelMessageResponse' {channelArn} -> channelArn) (\s@UpdateChannelMessageResponse' {} a -> s {channelArn = a} :: UpdateChannelMessageResponse)
+
+-- | The ID string of the message being updated.
+updateChannelMessageResponse_messageId :: Lens.Lens' UpdateChannelMessageResponse (Prelude.Maybe Prelude.Text)
+updateChannelMessageResponse_messageId = Lens.lens (\UpdateChannelMessageResponse' {messageId} -> messageId) (\s@UpdateChannelMessageResponse' {} a -> s {messageId = a} :: UpdateChannelMessageResponse)
+
+-- | The response's http status code.
+updateChannelMessageResponse_httpStatus :: Lens.Lens' UpdateChannelMessageResponse Prelude.Int
+updateChannelMessageResponse_httpStatus = Lens.lens (\UpdateChannelMessageResponse' {httpStatus} -> httpStatus) (\s@UpdateChannelMessageResponse' {} a -> s {httpStatus = a} :: UpdateChannelMessageResponse)
+
+instance Prelude.NFData UpdateChannelMessageResponse where
+  rnf UpdateChannelMessageResponse' {..} =
+    Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf messageId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/UpdateChannelReadMarker.hs b/gen/Amazonka/Chime/UpdateChannelReadMarker.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/UpdateChannelReadMarker.hs
@@ -0,0 +1,180 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.UpdateChannelReadMarker
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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.
+module Amazonka.Chime.UpdateChannelReadMarker
+  ( -- * Creating a Request
+    UpdateChannelReadMarker (..),
+    newUpdateChannelReadMarker,
+
+    -- * Request Lenses
+    updateChannelReadMarker_chimeBearer,
+    updateChannelReadMarker_channelArn,
+
+    -- * Destructuring the Response
+    UpdateChannelReadMarkerResponse (..),
+    newUpdateChannelReadMarkerResponse,
+
+    -- * Response Lenses
+    updateChannelReadMarkerResponse_channelArn,
+    updateChannelReadMarkerResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateChannelReadMarker' smart constructor.
+data UpdateChannelReadMarker = UpdateChannelReadMarker'
+  { -- | The @AppInstanceUserArn@ of the user that makes the API call.
+    chimeBearer :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the channel.
+    channelArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateChannelReadMarker' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chimeBearer', 'updateChannelReadMarker_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
+--
+-- 'channelArn', 'updateChannelReadMarker_channelArn' - The ARN of the channel.
+newUpdateChannelReadMarker ::
+  -- | 'channelArn'
+  Prelude.Text ->
+  UpdateChannelReadMarker
+newUpdateChannelReadMarker pChannelArn_ =
+  UpdateChannelReadMarker'
+    { chimeBearer =
+        Prelude.Nothing,
+      channelArn = pChannelArn_
+    }
+
+-- | The @AppInstanceUserArn@ of the user that makes the API call.
+updateChannelReadMarker_chimeBearer :: Lens.Lens' UpdateChannelReadMarker (Prelude.Maybe Prelude.Text)
+updateChannelReadMarker_chimeBearer = Lens.lens (\UpdateChannelReadMarker' {chimeBearer} -> chimeBearer) (\s@UpdateChannelReadMarker' {} a -> s {chimeBearer = a} :: UpdateChannelReadMarker)
+
+-- | The ARN of the channel.
+updateChannelReadMarker_channelArn :: Lens.Lens' UpdateChannelReadMarker Prelude.Text
+updateChannelReadMarker_channelArn = Lens.lens (\UpdateChannelReadMarker' {channelArn} -> channelArn) (\s@UpdateChannelReadMarker' {} a -> s {channelArn = a} :: UpdateChannelReadMarker)
+
+instance Core.AWSRequest UpdateChannelReadMarker where
+  type
+    AWSResponse UpdateChannelReadMarker =
+      UpdateChannelReadMarkerResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateChannelReadMarkerResponse'
+            Prelude.<$> (x Data..?> "ChannelArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateChannelReadMarker where
+  hashWithSalt _salt UpdateChannelReadMarker' {..} =
+    _salt
+      `Prelude.hashWithSalt` chimeBearer
+      `Prelude.hashWithSalt` channelArn
+
+instance Prelude.NFData UpdateChannelReadMarker where
+  rnf UpdateChannelReadMarker' {..} =
+    Prelude.rnf chimeBearer
+      `Prelude.seq` Prelude.rnf channelArn
+
+instance Data.ToHeaders UpdateChannelReadMarker where
+  toHeaders UpdateChannelReadMarker' {..} =
+    Prelude.mconcat
+      ["x-amz-chime-bearer" Data.=# chimeBearer]
+
+instance Data.ToJSON UpdateChannelReadMarker where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath UpdateChannelReadMarker where
+  toPath UpdateChannelReadMarker' {..} =
+    Prelude.mconcat
+      ["/channels/", Data.toBS channelArn, "/readMarker"]
+
+instance Data.ToQuery UpdateChannelReadMarker where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateChannelReadMarkerResponse' smart constructor.
+data UpdateChannelReadMarkerResponse = UpdateChannelReadMarkerResponse'
+  { -- | The ARN of the channel.
+    channelArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateChannelReadMarkerResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channelArn', 'updateChannelReadMarkerResponse_channelArn' - The ARN of the channel.
+--
+-- 'httpStatus', 'updateChannelReadMarkerResponse_httpStatus' - The response's http status code.
+newUpdateChannelReadMarkerResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateChannelReadMarkerResponse
+newUpdateChannelReadMarkerResponse pHttpStatus_ =
+  UpdateChannelReadMarkerResponse'
+    { channelArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of the channel.
+updateChannelReadMarkerResponse_channelArn :: Lens.Lens' UpdateChannelReadMarkerResponse (Prelude.Maybe Prelude.Text)
+updateChannelReadMarkerResponse_channelArn = Lens.lens (\UpdateChannelReadMarkerResponse' {channelArn} -> channelArn) (\s@UpdateChannelReadMarkerResponse' {} a -> s {channelArn = a} :: UpdateChannelReadMarkerResponse)
+
+-- | The response's http status code.
+updateChannelReadMarkerResponse_httpStatus :: Lens.Lens' UpdateChannelReadMarkerResponse Prelude.Int
+updateChannelReadMarkerResponse_httpStatus = Lens.lens (\UpdateChannelReadMarkerResponse' {httpStatus} -> httpStatus) (\s@UpdateChannelReadMarkerResponse' {} a -> s {httpStatus = a} :: UpdateChannelReadMarkerResponse)
+
+instance
+  Prelude.NFData
+    UpdateChannelReadMarkerResponse
+  where
+  rnf UpdateChannelReadMarkerResponse' {..} =
+    Prelude.rnf channelArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/UpdateGlobalSettings.hs b/gen/Amazonka/Chime/UpdateGlobalSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/UpdateGlobalSettings.hs
@@ -0,0 +1,141 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.UpdateGlobalSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates global settings for the administrator\'s AWS account, such as
+-- Amazon Chime Business Calling and Amazon Chime Voice Connector settings.
+module Amazonka.Chime.UpdateGlobalSettings
+  ( -- * Creating a Request
+    UpdateGlobalSettings (..),
+    newUpdateGlobalSettings,
+
+    -- * Request Lenses
+    updateGlobalSettings_businessCalling,
+    updateGlobalSettings_voiceConnector,
+
+    -- * Destructuring the Response
+    UpdateGlobalSettingsResponse (..),
+    newUpdateGlobalSettingsResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateGlobalSettings' smart constructor.
+data UpdateGlobalSettings = UpdateGlobalSettings'
+  { -- | The Amazon Chime Business Calling settings.
+    businessCalling :: Prelude.Maybe BusinessCallingSettings,
+    -- | The Amazon Chime Voice Connector settings.
+    voiceConnector :: Prelude.Maybe VoiceConnectorSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateGlobalSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'businessCalling', 'updateGlobalSettings_businessCalling' - The Amazon Chime Business Calling settings.
+--
+-- 'voiceConnector', 'updateGlobalSettings_voiceConnector' - The Amazon Chime Voice Connector settings.
+newUpdateGlobalSettings ::
+  UpdateGlobalSettings
+newUpdateGlobalSettings =
+  UpdateGlobalSettings'
+    { businessCalling =
+        Prelude.Nothing,
+      voiceConnector = Prelude.Nothing
+    }
+
+-- | The Amazon Chime Business Calling settings.
+updateGlobalSettings_businessCalling :: Lens.Lens' UpdateGlobalSettings (Prelude.Maybe BusinessCallingSettings)
+updateGlobalSettings_businessCalling = Lens.lens (\UpdateGlobalSettings' {businessCalling} -> businessCalling) (\s@UpdateGlobalSettings' {} a -> s {businessCalling = a} :: UpdateGlobalSettings)
+
+-- | The Amazon Chime Voice Connector settings.
+updateGlobalSettings_voiceConnector :: Lens.Lens' UpdateGlobalSettings (Prelude.Maybe VoiceConnectorSettings)
+updateGlobalSettings_voiceConnector = Lens.lens (\UpdateGlobalSettings' {voiceConnector} -> voiceConnector) (\s@UpdateGlobalSettings' {} a -> s {voiceConnector = a} :: UpdateGlobalSettings)
+
+instance Core.AWSRequest UpdateGlobalSettings where
+  type
+    AWSResponse UpdateGlobalSettings =
+      UpdateGlobalSettingsResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveNull UpdateGlobalSettingsResponse'
+
+instance Prelude.Hashable UpdateGlobalSettings where
+  hashWithSalt _salt UpdateGlobalSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` businessCalling
+      `Prelude.hashWithSalt` voiceConnector
+
+instance Prelude.NFData UpdateGlobalSettings where
+  rnf UpdateGlobalSettings' {..} =
+    Prelude.rnf businessCalling
+      `Prelude.seq` Prelude.rnf voiceConnector
+
+instance Data.ToHeaders UpdateGlobalSettings where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON UpdateGlobalSettings where
+  toJSON UpdateGlobalSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BusinessCalling" Data..=)
+              Prelude.<$> businessCalling,
+            ("VoiceConnector" Data..=)
+              Prelude.<$> voiceConnector
+          ]
+      )
+
+instance Data.ToPath UpdateGlobalSettings where
+  toPath = Prelude.const "/settings"
+
+instance Data.ToQuery UpdateGlobalSettings where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateGlobalSettingsResponse' smart constructor.
+data UpdateGlobalSettingsResponse = UpdateGlobalSettingsResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateGlobalSettingsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newUpdateGlobalSettingsResponse ::
+  UpdateGlobalSettingsResponse
+newUpdateGlobalSettingsResponse =
+  UpdateGlobalSettingsResponse'
+
+instance Prelude.NFData UpdateGlobalSettingsResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/UpdatePhoneNumber.hs b/gen/Amazonka/Chime/UpdatePhoneNumber.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/UpdatePhoneNumber.hs
@@ -0,0 +1,199 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.UpdatePhoneNumber
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates phone number details, such as product type or calling name, for
+-- the specified phone number ID. You can update one phone number detail at
+-- a time. For example, you can update either the product type or the
+-- calling name in one action.
+--
+-- For toll-free numbers, you cannot use the Amazon Chime Business Calling
+-- product type. For numbers outside the U.S., you must use the Amazon
+-- Chime SIP Media Application Dial-In product type.
+--
+-- Updates to outbound calling names can take 72 hours to complete. Pending
+-- updates to outbound calling names must be complete before you can
+-- request another update.
+module Amazonka.Chime.UpdatePhoneNumber
+  ( -- * Creating a Request
+    UpdatePhoneNumber (..),
+    newUpdatePhoneNumber,
+
+    -- * Request Lenses
+    updatePhoneNumber_callingName,
+    updatePhoneNumber_productType,
+    updatePhoneNumber_phoneNumberId,
+
+    -- * Destructuring the Response
+    UpdatePhoneNumberResponse (..),
+    newUpdatePhoneNumberResponse,
+
+    -- * Response Lenses
+    updatePhoneNumberResponse_phoneNumber,
+    updatePhoneNumberResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdatePhoneNumber' smart constructor.
+data UpdatePhoneNumber = UpdatePhoneNumber'
+  { -- | The outbound calling name associated with the phone number.
+    callingName :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The product type.
+    productType :: Prelude.Maybe PhoneNumberProductType,
+    -- | The phone number ID.
+    phoneNumberId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdatePhoneNumber' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'callingName', 'updatePhoneNumber_callingName' - The outbound calling name associated with the phone number.
+--
+-- 'productType', 'updatePhoneNumber_productType' - The product type.
+--
+-- 'phoneNumberId', 'updatePhoneNumber_phoneNumberId' - The phone number ID.
+newUpdatePhoneNumber ::
+  -- | 'phoneNumberId'
+  Prelude.Text ->
+  UpdatePhoneNumber
+newUpdatePhoneNumber pPhoneNumberId_ =
+  UpdatePhoneNumber'
+    { callingName = Prelude.Nothing,
+      productType = Prelude.Nothing,
+      phoneNumberId = pPhoneNumberId_
+    }
+
+-- | The outbound calling name associated with the phone number.
+updatePhoneNumber_callingName :: Lens.Lens' UpdatePhoneNumber (Prelude.Maybe Prelude.Text)
+updatePhoneNumber_callingName = Lens.lens (\UpdatePhoneNumber' {callingName} -> callingName) (\s@UpdatePhoneNumber' {} a -> s {callingName = a} :: UpdatePhoneNumber) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The product type.
+updatePhoneNumber_productType :: Lens.Lens' UpdatePhoneNumber (Prelude.Maybe PhoneNumberProductType)
+updatePhoneNumber_productType = Lens.lens (\UpdatePhoneNumber' {productType} -> productType) (\s@UpdatePhoneNumber' {} a -> s {productType = a} :: UpdatePhoneNumber)
+
+-- | The phone number ID.
+updatePhoneNumber_phoneNumberId :: Lens.Lens' UpdatePhoneNumber Prelude.Text
+updatePhoneNumber_phoneNumberId = Lens.lens (\UpdatePhoneNumber' {phoneNumberId} -> phoneNumberId) (\s@UpdatePhoneNumber' {} a -> s {phoneNumberId = a} :: UpdatePhoneNumber)
+
+instance Core.AWSRequest UpdatePhoneNumber where
+  type
+    AWSResponse UpdatePhoneNumber =
+      UpdatePhoneNumberResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdatePhoneNumberResponse'
+            Prelude.<$> (x Data..?> "PhoneNumber")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdatePhoneNumber where
+  hashWithSalt _salt UpdatePhoneNumber' {..} =
+    _salt
+      `Prelude.hashWithSalt` callingName
+      `Prelude.hashWithSalt` productType
+      `Prelude.hashWithSalt` phoneNumberId
+
+instance Prelude.NFData UpdatePhoneNumber where
+  rnf UpdatePhoneNumber' {..} =
+    Prelude.rnf callingName
+      `Prelude.seq` Prelude.rnf productType
+      `Prelude.seq` Prelude.rnf phoneNumberId
+
+instance Data.ToHeaders UpdatePhoneNumber where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON UpdatePhoneNumber where
+  toJSON UpdatePhoneNumber' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CallingName" Data..=) Prelude.<$> callingName,
+            ("ProductType" Data..=) Prelude.<$> productType
+          ]
+      )
+
+instance Data.ToPath UpdatePhoneNumber where
+  toPath UpdatePhoneNumber' {..} =
+    Prelude.mconcat
+      ["/phone-numbers/", Data.toBS phoneNumberId]
+
+instance Data.ToQuery UpdatePhoneNumber where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdatePhoneNumberResponse' smart constructor.
+data UpdatePhoneNumberResponse = UpdatePhoneNumberResponse'
+  { -- | The updated phone number details.
+    phoneNumber :: Prelude.Maybe PhoneNumber,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdatePhoneNumberResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'phoneNumber', 'updatePhoneNumberResponse_phoneNumber' - The updated phone number details.
+--
+-- 'httpStatus', 'updatePhoneNumberResponse_httpStatus' - The response's http status code.
+newUpdatePhoneNumberResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdatePhoneNumberResponse
+newUpdatePhoneNumberResponse pHttpStatus_ =
+  UpdatePhoneNumberResponse'
+    { phoneNumber =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The updated phone number details.
+updatePhoneNumberResponse_phoneNumber :: Lens.Lens' UpdatePhoneNumberResponse (Prelude.Maybe PhoneNumber)
+updatePhoneNumberResponse_phoneNumber = Lens.lens (\UpdatePhoneNumberResponse' {phoneNumber} -> phoneNumber) (\s@UpdatePhoneNumberResponse' {} a -> s {phoneNumber = a} :: UpdatePhoneNumberResponse)
+
+-- | The response's http status code.
+updatePhoneNumberResponse_httpStatus :: Lens.Lens' UpdatePhoneNumberResponse Prelude.Int
+updatePhoneNumberResponse_httpStatus = Lens.lens (\UpdatePhoneNumberResponse' {httpStatus} -> httpStatus) (\s@UpdatePhoneNumberResponse' {} a -> s {httpStatus = a} :: UpdatePhoneNumberResponse)
+
+instance Prelude.NFData UpdatePhoneNumberResponse where
+  rnf UpdatePhoneNumberResponse' {..} =
+    Prelude.rnf phoneNumber
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/UpdatePhoneNumberSettings.hs b/gen/Amazonka/Chime/UpdatePhoneNumberSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/UpdatePhoneNumberSettings.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.UpdatePhoneNumberSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the phone number settings for the administrator\'s AWS account,
+-- such as the default outbound calling name. You can update the default
+-- outbound calling name once every seven days. Outbound calling names can
+-- take up to 72 hours to update.
+module Amazonka.Chime.UpdatePhoneNumberSettings
+  ( -- * Creating a Request
+    UpdatePhoneNumberSettings (..),
+    newUpdatePhoneNumberSettings,
+
+    -- * Request Lenses
+    updatePhoneNumberSettings_callingName,
+
+    -- * Destructuring the Response
+    UpdatePhoneNumberSettingsResponse (..),
+    newUpdatePhoneNumberSettingsResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdatePhoneNumberSettings' smart constructor.
+data UpdatePhoneNumberSettings = UpdatePhoneNumberSettings'
+  { -- | The default outbound calling name for the account.
+    callingName :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdatePhoneNumberSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'callingName', 'updatePhoneNumberSettings_callingName' - The default outbound calling name for the account.
+newUpdatePhoneNumberSettings ::
+  -- | 'callingName'
+  Prelude.Text ->
+  UpdatePhoneNumberSettings
+newUpdatePhoneNumberSettings pCallingName_ =
+  UpdatePhoneNumberSettings'
+    { callingName =
+        Data._Sensitive Lens.# pCallingName_
+    }
+
+-- | The default outbound calling name for the account.
+updatePhoneNumberSettings_callingName :: Lens.Lens' UpdatePhoneNumberSettings Prelude.Text
+updatePhoneNumberSettings_callingName = Lens.lens (\UpdatePhoneNumberSettings' {callingName} -> callingName) (\s@UpdatePhoneNumberSettings' {} a -> s {callingName = a} :: UpdatePhoneNumberSettings) Prelude.. Data._Sensitive
+
+instance Core.AWSRequest UpdatePhoneNumberSettings where
+  type
+    AWSResponse UpdatePhoneNumberSettings =
+      UpdatePhoneNumberSettingsResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveNull
+      UpdatePhoneNumberSettingsResponse'
+
+instance Prelude.Hashable UpdatePhoneNumberSettings where
+  hashWithSalt _salt UpdatePhoneNumberSettings' {..} =
+    _salt `Prelude.hashWithSalt` callingName
+
+instance Prelude.NFData UpdatePhoneNumberSettings where
+  rnf UpdatePhoneNumberSettings' {..} =
+    Prelude.rnf callingName
+
+instance Data.ToHeaders UpdatePhoneNumberSettings where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON UpdatePhoneNumberSettings where
+  toJSON UpdatePhoneNumberSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("CallingName" Data..= callingName)]
+      )
+
+instance Data.ToPath UpdatePhoneNumberSettings where
+  toPath = Prelude.const "/settings/phone-number"
+
+instance Data.ToQuery UpdatePhoneNumberSettings where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdatePhoneNumberSettingsResponse' smart constructor.
+data UpdatePhoneNumberSettingsResponse = UpdatePhoneNumberSettingsResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdatePhoneNumberSettingsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newUpdatePhoneNumberSettingsResponse ::
+  UpdatePhoneNumberSettingsResponse
+newUpdatePhoneNumberSettingsResponse =
+  UpdatePhoneNumberSettingsResponse'
+
+instance
+  Prelude.NFData
+    UpdatePhoneNumberSettingsResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/UpdateProxySession.hs b/gen/Amazonka/Chime/UpdateProxySession.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/UpdateProxySession.hs
@@ -0,0 +1,210 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.UpdateProxySession
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the specified proxy session details, such as voice or SMS
+-- capabilities.
+module Amazonka.Chime.UpdateProxySession
+  ( -- * Creating a Request
+    UpdateProxySession (..),
+    newUpdateProxySession,
+
+    -- * Request Lenses
+    updateProxySession_expiryMinutes,
+    updateProxySession_capabilities,
+    updateProxySession_voiceConnectorId,
+    updateProxySession_proxySessionId,
+
+    -- * Destructuring the Response
+    UpdateProxySessionResponse (..),
+    newUpdateProxySessionResponse,
+
+    -- * Response Lenses
+    updateProxySessionResponse_proxySession,
+    updateProxySessionResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateProxySession' smart constructor.
+data UpdateProxySession = UpdateProxySession'
+  { -- | The number of minutes allowed for the proxy session.
+    expiryMinutes :: Prelude.Maybe Prelude.Natural,
+    -- | The proxy session capabilities.
+    capabilities :: [Capability],
+    -- | The Amazon Chime voice connector ID.
+    voiceConnectorId :: Prelude.Text,
+    -- | The proxy session ID.
+    proxySessionId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateProxySession' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'expiryMinutes', 'updateProxySession_expiryMinutes' - The number of minutes allowed for the proxy session.
+--
+-- 'capabilities', 'updateProxySession_capabilities' - The proxy session capabilities.
+--
+-- 'voiceConnectorId', 'updateProxySession_voiceConnectorId' - The Amazon Chime voice connector ID.
+--
+-- 'proxySessionId', 'updateProxySession_proxySessionId' - The proxy session ID.
+newUpdateProxySession ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  -- | 'proxySessionId'
+  Prelude.Text ->
+  UpdateProxySession
+newUpdateProxySession
+  pVoiceConnectorId_
+  pProxySessionId_ =
+    UpdateProxySession'
+      { expiryMinutes =
+          Prelude.Nothing,
+        capabilities = Prelude.mempty,
+        voiceConnectorId = pVoiceConnectorId_,
+        proxySessionId = pProxySessionId_
+      }
+
+-- | The number of minutes allowed for the proxy session.
+updateProxySession_expiryMinutes :: Lens.Lens' UpdateProxySession (Prelude.Maybe Prelude.Natural)
+updateProxySession_expiryMinutes = Lens.lens (\UpdateProxySession' {expiryMinutes} -> expiryMinutes) (\s@UpdateProxySession' {} a -> s {expiryMinutes = a} :: UpdateProxySession)
+
+-- | The proxy session capabilities.
+updateProxySession_capabilities :: Lens.Lens' UpdateProxySession [Capability]
+updateProxySession_capabilities = Lens.lens (\UpdateProxySession' {capabilities} -> capabilities) (\s@UpdateProxySession' {} a -> s {capabilities = a} :: UpdateProxySession) Prelude.. Lens.coerced
+
+-- | The Amazon Chime voice connector ID.
+updateProxySession_voiceConnectorId :: Lens.Lens' UpdateProxySession Prelude.Text
+updateProxySession_voiceConnectorId = Lens.lens (\UpdateProxySession' {voiceConnectorId} -> voiceConnectorId) (\s@UpdateProxySession' {} a -> s {voiceConnectorId = a} :: UpdateProxySession)
+
+-- | The proxy session ID.
+updateProxySession_proxySessionId :: Lens.Lens' UpdateProxySession Prelude.Text
+updateProxySession_proxySessionId = Lens.lens (\UpdateProxySession' {proxySessionId} -> proxySessionId) (\s@UpdateProxySession' {} a -> s {proxySessionId = a} :: UpdateProxySession)
+
+instance Core.AWSRequest UpdateProxySession where
+  type
+    AWSResponse UpdateProxySession =
+      UpdateProxySessionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateProxySessionResponse'
+            Prelude.<$> (x Data..?> "ProxySession")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateProxySession where
+  hashWithSalt _salt UpdateProxySession' {..} =
+    _salt
+      `Prelude.hashWithSalt` expiryMinutes
+      `Prelude.hashWithSalt` capabilities
+      `Prelude.hashWithSalt` voiceConnectorId
+      `Prelude.hashWithSalt` proxySessionId
+
+instance Prelude.NFData UpdateProxySession where
+  rnf UpdateProxySession' {..} =
+    Prelude.rnf expiryMinutes
+      `Prelude.seq` Prelude.rnf capabilities
+      `Prelude.seq` Prelude.rnf voiceConnectorId
+      `Prelude.seq` Prelude.rnf proxySessionId
+
+instance Data.ToHeaders UpdateProxySession where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON UpdateProxySession where
+  toJSON UpdateProxySession' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ExpiryMinutes" Data..=) Prelude.<$> expiryMinutes,
+            Prelude.Just ("Capabilities" Data..= capabilities)
+          ]
+      )
+
+instance Data.ToPath UpdateProxySession where
+  toPath UpdateProxySession' {..} =
+    Prelude.mconcat
+      [ "/voice-connectors/",
+        Data.toBS voiceConnectorId,
+        "/proxy-sessions/",
+        Data.toBS proxySessionId
+      ]
+
+instance Data.ToQuery UpdateProxySession where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateProxySessionResponse' smart constructor.
+data UpdateProxySessionResponse = UpdateProxySessionResponse'
+  { -- | The proxy session details.
+    proxySession :: Prelude.Maybe ProxySession,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateProxySessionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'proxySession', 'updateProxySessionResponse_proxySession' - The proxy session details.
+--
+-- 'httpStatus', 'updateProxySessionResponse_httpStatus' - The response's http status code.
+newUpdateProxySessionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateProxySessionResponse
+newUpdateProxySessionResponse pHttpStatus_ =
+  UpdateProxySessionResponse'
+    { proxySession =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The proxy session details.
+updateProxySessionResponse_proxySession :: Lens.Lens' UpdateProxySessionResponse (Prelude.Maybe ProxySession)
+updateProxySessionResponse_proxySession = Lens.lens (\UpdateProxySessionResponse' {proxySession} -> proxySession) (\s@UpdateProxySessionResponse' {} a -> s {proxySession = a} :: UpdateProxySessionResponse)
+
+-- | The response's http status code.
+updateProxySessionResponse_httpStatus :: Lens.Lens' UpdateProxySessionResponse Prelude.Int
+updateProxySessionResponse_httpStatus = Lens.lens (\UpdateProxySessionResponse' {httpStatus} -> httpStatus) (\s@UpdateProxySessionResponse' {} a -> s {httpStatus = a} :: UpdateProxySessionResponse)
+
+instance Prelude.NFData UpdateProxySessionResponse where
+  rnf UpdateProxySessionResponse' {..} =
+    Prelude.rnf proxySession
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/UpdateRoom.hs b/gen/Amazonka/Chime/UpdateRoom.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/UpdateRoom.hs
@@ -0,0 +1,190 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.UpdateRoom
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates room details, such as the room name, for a room in an Amazon
+-- Chime Enterprise account.
+module Amazonka.Chime.UpdateRoom
+  ( -- * Creating a Request
+    UpdateRoom (..),
+    newUpdateRoom,
+
+    -- * Request Lenses
+    updateRoom_name,
+    updateRoom_accountId,
+    updateRoom_roomId,
+
+    -- * Destructuring the Response
+    UpdateRoomResponse (..),
+    newUpdateRoomResponse,
+
+    -- * Response Lenses
+    updateRoomResponse_room,
+    updateRoomResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateRoom' smart constructor.
+data UpdateRoom = UpdateRoom'
+  { -- | The room name.
+    name :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The room ID.
+    roomId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateRoom' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'updateRoom_name' - The room name.
+--
+-- 'accountId', 'updateRoom_accountId' - The Amazon Chime account ID.
+--
+-- 'roomId', 'updateRoom_roomId' - The room ID.
+newUpdateRoom ::
+  -- | 'accountId'
+  Prelude.Text ->
+  -- | 'roomId'
+  Prelude.Text ->
+  UpdateRoom
+newUpdateRoom pAccountId_ pRoomId_ =
+  UpdateRoom'
+    { name = Prelude.Nothing,
+      accountId = pAccountId_,
+      roomId = pRoomId_
+    }
+
+-- | The room name.
+updateRoom_name :: Lens.Lens' UpdateRoom (Prelude.Maybe Prelude.Text)
+updateRoom_name = Lens.lens (\UpdateRoom' {name} -> name) (\s@UpdateRoom' {} a -> s {name = a} :: UpdateRoom) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The Amazon Chime account ID.
+updateRoom_accountId :: Lens.Lens' UpdateRoom Prelude.Text
+updateRoom_accountId = Lens.lens (\UpdateRoom' {accountId} -> accountId) (\s@UpdateRoom' {} a -> s {accountId = a} :: UpdateRoom)
+
+-- | The room ID.
+updateRoom_roomId :: Lens.Lens' UpdateRoom Prelude.Text
+updateRoom_roomId = Lens.lens (\UpdateRoom' {roomId} -> roomId) (\s@UpdateRoom' {} a -> s {roomId = a} :: UpdateRoom)
+
+instance Core.AWSRequest UpdateRoom where
+  type AWSResponse UpdateRoom = UpdateRoomResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateRoomResponse'
+            Prelude.<$> (x Data..?> "Room")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateRoom where
+  hashWithSalt _salt UpdateRoom' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` roomId
+
+instance Prelude.NFData UpdateRoom where
+  rnf UpdateRoom' {..} =
+    Prelude.rnf name
+      `Prelude.seq` Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf roomId
+
+instance Data.ToHeaders UpdateRoom where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON UpdateRoom where
+  toJSON UpdateRoom' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Name" Data..=) Prelude.<$> name]
+      )
+
+instance Data.ToPath UpdateRoom where
+  toPath UpdateRoom' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS accountId,
+        "/rooms/",
+        Data.toBS roomId
+      ]
+
+instance Data.ToQuery UpdateRoom where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateRoomResponse' smart constructor.
+data UpdateRoomResponse = UpdateRoomResponse'
+  { -- | The room details.
+    room :: Prelude.Maybe Room,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateRoomResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'room', 'updateRoomResponse_room' - The room details.
+--
+-- 'httpStatus', 'updateRoomResponse_httpStatus' - The response's http status code.
+newUpdateRoomResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateRoomResponse
+newUpdateRoomResponse pHttpStatus_ =
+  UpdateRoomResponse'
+    { room = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The room details.
+updateRoomResponse_room :: Lens.Lens' UpdateRoomResponse (Prelude.Maybe Room)
+updateRoomResponse_room = Lens.lens (\UpdateRoomResponse' {room} -> room) (\s@UpdateRoomResponse' {} a -> s {room = a} :: UpdateRoomResponse)
+
+-- | The response's http status code.
+updateRoomResponse_httpStatus :: Lens.Lens' UpdateRoomResponse Prelude.Int
+updateRoomResponse_httpStatus = Lens.lens (\UpdateRoomResponse' {httpStatus} -> httpStatus) (\s@UpdateRoomResponse' {} a -> s {httpStatus = a} :: UpdateRoomResponse)
+
+instance Prelude.NFData UpdateRoomResponse where
+  rnf UpdateRoomResponse' {..} =
+    Prelude.rnf room
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/UpdateRoomMembership.hs b/gen/Amazonka/Chime/UpdateRoomMembership.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/UpdateRoomMembership.hs
@@ -0,0 +1,214 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.UpdateRoomMembership
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates room membership details, such as the member role, for a room in
+-- an Amazon Chime Enterprise account. The member role designates whether
+-- the member is a chat room administrator or a general chat room member.
+-- The member role can be updated only for user IDs.
+module Amazonka.Chime.UpdateRoomMembership
+  ( -- * Creating a Request
+    UpdateRoomMembership (..),
+    newUpdateRoomMembership,
+
+    -- * Request Lenses
+    updateRoomMembership_role,
+    updateRoomMembership_accountId,
+    updateRoomMembership_roomId,
+    updateRoomMembership_memberId,
+
+    -- * Destructuring the Response
+    UpdateRoomMembershipResponse (..),
+    newUpdateRoomMembershipResponse,
+
+    -- * Response Lenses
+    updateRoomMembershipResponse_roomMembership,
+    updateRoomMembershipResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateRoomMembership' smart constructor.
+data UpdateRoomMembership = UpdateRoomMembership'
+  { -- | The role of the member.
+    role' :: Prelude.Maybe RoomMembershipRole,
+    -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The room ID.
+    roomId :: Prelude.Text,
+    -- | The member ID.
+    memberId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateRoomMembership' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'role'', 'updateRoomMembership_role' - The role of the member.
+--
+-- 'accountId', 'updateRoomMembership_accountId' - The Amazon Chime account ID.
+--
+-- 'roomId', 'updateRoomMembership_roomId' - The room ID.
+--
+-- 'memberId', 'updateRoomMembership_memberId' - The member ID.
+newUpdateRoomMembership ::
+  -- | 'accountId'
+  Prelude.Text ->
+  -- | 'roomId'
+  Prelude.Text ->
+  -- | 'memberId'
+  Prelude.Text ->
+  UpdateRoomMembership
+newUpdateRoomMembership
+  pAccountId_
+  pRoomId_
+  pMemberId_ =
+    UpdateRoomMembership'
+      { role' = Prelude.Nothing,
+        accountId = pAccountId_,
+        roomId = pRoomId_,
+        memberId = pMemberId_
+      }
+
+-- | The role of the member.
+updateRoomMembership_role :: Lens.Lens' UpdateRoomMembership (Prelude.Maybe RoomMembershipRole)
+updateRoomMembership_role = Lens.lens (\UpdateRoomMembership' {role'} -> role') (\s@UpdateRoomMembership' {} a -> s {role' = a} :: UpdateRoomMembership)
+
+-- | The Amazon Chime account ID.
+updateRoomMembership_accountId :: Lens.Lens' UpdateRoomMembership Prelude.Text
+updateRoomMembership_accountId = Lens.lens (\UpdateRoomMembership' {accountId} -> accountId) (\s@UpdateRoomMembership' {} a -> s {accountId = a} :: UpdateRoomMembership)
+
+-- | The room ID.
+updateRoomMembership_roomId :: Lens.Lens' UpdateRoomMembership Prelude.Text
+updateRoomMembership_roomId = Lens.lens (\UpdateRoomMembership' {roomId} -> roomId) (\s@UpdateRoomMembership' {} a -> s {roomId = a} :: UpdateRoomMembership)
+
+-- | The member ID.
+updateRoomMembership_memberId :: Lens.Lens' UpdateRoomMembership Prelude.Text
+updateRoomMembership_memberId = Lens.lens (\UpdateRoomMembership' {memberId} -> memberId) (\s@UpdateRoomMembership' {} a -> s {memberId = a} :: UpdateRoomMembership)
+
+instance Core.AWSRequest UpdateRoomMembership where
+  type
+    AWSResponse UpdateRoomMembership =
+      UpdateRoomMembershipResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateRoomMembershipResponse'
+            Prelude.<$> (x Data..?> "RoomMembership")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateRoomMembership where
+  hashWithSalt _salt UpdateRoomMembership' {..} =
+    _salt
+      `Prelude.hashWithSalt` role'
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` roomId
+      `Prelude.hashWithSalt` memberId
+
+instance Prelude.NFData UpdateRoomMembership where
+  rnf UpdateRoomMembership' {..} =
+    Prelude.rnf role'
+      `Prelude.seq` Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf roomId
+      `Prelude.seq` Prelude.rnf memberId
+
+instance Data.ToHeaders UpdateRoomMembership where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON UpdateRoomMembership where
+  toJSON UpdateRoomMembership' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Role" Data..=) Prelude.<$> role']
+      )
+
+instance Data.ToPath UpdateRoomMembership where
+  toPath UpdateRoomMembership' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS accountId,
+        "/rooms/",
+        Data.toBS roomId,
+        "/memberships/",
+        Data.toBS memberId
+      ]
+
+instance Data.ToQuery UpdateRoomMembership where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateRoomMembershipResponse' smart constructor.
+data UpdateRoomMembershipResponse = UpdateRoomMembershipResponse'
+  { -- | The room membership details.
+    roomMembership :: Prelude.Maybe RoomMembership,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateRoomMembershipResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'roomMembership', 'updateRoomMembershipResponse_roomMembership' - The room membership details.
+--
+-- 'httpStatus', 'updateRoomMembershipResponse_httpStatus' - The response's http status code.
+newUpdateRoomMembershipResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateRoomMembershipResponse
+newUpdateRoomMembershipResponse pHttpStatus_ =
+  UpdateRoomMembershipResponse'
+    { roomMembership =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The room membership details.
+updateRoomMembershipResponse_roomMembership :: Lens.Lens' UpdateRoomMembershipResponse (Prelude.Maybe RoomMembership)
+updateRoomMembershipResponse_roomMembership = Lens.lens (\UpdateRoomMembershipResponse' {roomMembership} -> roomMembership) (\s@UpdateRoomMembershipResponse' {} a -> s {roomMembership = a} :: UpdateRoomMembershipResponse)
+
+-- | The response's http status code.
+updateRoomMembershipResponse_httpStatus :: Lens.Lens' UpdateRoomMembershipResponse Prelude.Int
+updateRoomMembershipResponse_httpStatus = Lens.lens (\UpdateRoomMembershipResponse' {httpStatus} -> httpStatus) (\s@UpdateRoomMembershipResponse' {} a -> s {httpStatus = a} :: UpdateRoomMembershipResponse)
+
+instance Prelude.NFData UpdateRoomMembershipResponse where
+  rnf UpdateRoomMembershipResponse' {..} =
+    Prelude.rnf roomMembership
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/UpdateSipMediaApplication.hs b/gen/Amazonka/Chime/UpdateSipMediaApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/UpdateSipMediaApplication.hs
@@ -0,0 +1,194 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.UpdateSipMediaApplication
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the details of the specified SIP media application.
+module Amazonka.Chime.UpdateSipMediaApplication
+  ( -- * Creating a Request
+    UpdateSipMediaApplication (..),
+    newUpdateSipMediaApplication,
+
+    -- * Request Lenses
+    updateSipMediaApplication_endpoints,
+    updateSipMediaApplication_name,
+    updateSipMediaApplication_sipMediaApplicationId,
+
+    -- * Destructuring the Response
+    UpdateSipMediaApplicationResponse (..),
+    newUpdateSipMediaApplicationResponse,
+
+    -- * Response Lenses
+    updateSipMediaApplicationResponse_sipMediaApplication,
+    updateSipMediaApplicationResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateSipMediaApplication' smart constructor.
+data UpdateSipMediaApplication = UpdateSipMediaApplication'
+  { -- | The new set of endpoints for the specified SIP media application.
+    endpoints :: Prelude.Maybe (Prelude.NonEmpty SipMediaApplicationEndpoint),
+    -- | The new name for the specified SIP media application.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The SIP media application ID.
+    sipMediaApplicationId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateSipMediaApplication' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'endpoints', 'updateSipMediaApplication_endpoints' - The new set of endpoints for the specified SIP media application.
+--
+-- 'name', 'updateSipMediaApplication_name' - The new name for the specified SIP media application.
+--
+-- 'sipMediaApplicationId', 'updateSipMediaApplication_sipMediaApplicationId' - The SIP media application ID.
+newUpdateSipMediaApplication ::
+  -- | 'sipMediaApplicationId'
+  Prelude.Text ->
+  UpdateSipMediaApplication
+newUpdateSipMediaApplication pSipMediaApplicationId_ =
+  UpdateSipMediaApplication'
+    { endpoints =
+        Prelude.Nothing,
+      name = Prelude.Nothing,
+      sipMediaApplicationId = pSipMediaApplicationId_
+    }
+
+-- | The new set of endpoints for the specified SIP media application.
+updateSipMediaApplication_endpoints :: Lens.Lens' UpdateSipMediaApplication (Prelude.Maybe (Prelude.NonEmpty SipMediaApplicationEndpoint))
+updateSipMediaApplication_endpoints = Lens.lens (\UpdateSipMediaApplication' {endpoints} -> endpoints) (\s@UpdateSipMediaApplication' {} a -> s {endpoints = a} :: UpdateSipMediaApplication) Prelude.. Lens.mapping Lens.coerced
+
+-- | The new name for the specified SIP media application.
+updateSipMediaApplication_name :: Lens.Lens' UpdateSipMediaApplication (Prelude.Maybe Prelude.Text)
+updateSipMediaApplication_name = Lens.lens (\UpdateSipMediaApplication' {name} -> name) (\s@UpdateSipMediaApplication' {} a -> s {name = a} :: UpdateSipMediaApplication)
+
+-- | The SIP media application ID.
+updateSipMediaApplication_sipMediaApplicationId :: Lens.Lens' UpdateSipMediaApplication Prelude.Text
+updateSipMediaApplication_sipMediaApplicationId = Lens.lens (\UpdateSipMediaApplication' {sipMediaApplicationId} -> sipMediaApplicationId) (\s@UpdateSipMediaApplication' {} a -> s {sipMediaApplicationId = a} :: UpdateSipMediaApplication)
+
+instance Core.AWSRequest UpdateSipMediaApplication where
+  type
+    AWSResponse UpdateSipMediaApplication =
+      UpdateSipMediaApplicationResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateSipMediaApplicationResponse'
+            Prelude.<$> (x Data..?> "SipMediaApplication")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateSipMediaApplication where
+  hashWithSalt _salt UpdateSipMediaApplication' {..} =
+    _salt
+      `Prelude.hashWithSalt` endpoints
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` sipMediaApplicationId
+
+instance Prelude.NFData UpdateSipMediaApplication where
+  rnf UpdateSipMediaApplication' {..} =
+    Prelude.rnf endpoints
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf sipMediaApplicationId
+
+instance Data.ToHeaders UpdateSipMediaApplication where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON UpdateSipMediaApplication where
+  toJSON UpdateSipMediaApplication' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Endpoints" Data..=) Prelude.<$> endpoints,
+            ("Name" Data..=) Prelude.<$> name
+          ]
+      )
+
+instance Data.ToPath UpdateSipMediaApplication where
+  toPath UpdateSipMediaApplication' {..} =
+    Prelude.mconcat
+      [ "/sip-media-applications/",
+        Data.toBS sipMediaApplicationId
+      ]
+
+instance Data.ToQuery UpdateSipMediaApplication where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateSipMediaApplicationResponse' smart constructor.
+data UpdateSipMediaApplicationResponse = UpdateSipMediaApplicationResponse'
+  { -- | The updated SIP media application details.
+    sipMediaApplication :: Prelude.Maybe SipMediaApplication,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateSipMediaApplicationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sipMediaApplication', 'updateSipMediaApplicationResponse_sipMediaApplication' - The updated SIP media application details.
+--
+-- 'httpStatus', 'updateSipMediaApplicationResponse_httpStatus' - The response's http status code.
+newUpdateSipMediaApplicationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateSipMediaApplicationResponse
+newUpdateSipMediaApplicationResponse pHttpStatus_ =
+  UpdateSipMediaApplicationResponse'
+    { sipMediaApplication =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The updated SIP media application details.
+updateSipMediaApplicationResponse_sipMediaApplication :: Lens.Lens' UpdateSipMediaApplicationResponse (Prelude.Maybe SipMediaApplication)
+updateSipMediaApplicationResponse_sipMediaApplication = Lens.lens (\UpdateSipMediaApplicationResponse' {sipMediaApplication} -> sipMediaApplication) (\s@UpdateSipMediaApplicationResponse' {} a -> s {sipMediaApplication = a} :: UpdateSipMediaApplicationResponse)
+
+-- | The response's http status code.
+updateSipMediaApplicationResponse_httpStatus :: Lens.Lens' UpdateSipMediaApplicationResponse Prelude.Int
+updateSipMediaApplicationResponse_httpStatus = Lens.lens (\UpdateSipMediaApplicationResponse' {httpStatus} -> httpStatus) (\s@UpdateSipMediaApplicationResponse' {} a -> s {httpStatus = a} :: UpdateSipMediaApplicationResponse)
+
+instance
+  Prelude.NFData
+    UpdateSipMediaApplicationResponse
+  where
+  rnf UpdateSipMediaApplicationResponse' {..} =
+    Prelude.rnf sipMediaApplication
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/UpdateSipMediaApplicationCall.hs b/gen/Amazonka/Chime/UpdateSipMediaApplicationCall.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/UpdateSipMediaApplicationCall.hs
@@ -0,0 +1,208 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.UpdateSipMediaApplicationCall
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Invokes the AWS Lambda function associated with the SIP media
+-- application and transaction ID in an update request. The Lambda function
+-- can then return a new set of actions.
+module Amazonka.Chime.UpdateSipMediaApplicationCall
+  ( -- * Creating a Request
+    UpdateSipMediaApplicationCall (..),
+    newUpdateSipMediaApplicationCall,
+
+    -- * Request Lenses
+    updateSipMediaApplicationCall_sipMediaApplicationId,
+    updateSipMediaApplicationCall_transactionId,
+    updateSipMediaApplicationCall_arguments,
+
+    -- * Destructuring the Response
+    UpdateSipMediaApplicationCallResponse (..),
+    newUpdateSipMediaApplicationCallResponse,
+
+    -- * Response Lenses
+    updateSipMediaApplicationCallResponse_sipMediaApplicationCall,
+    updateSipMediaApplicationCallResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateSipMediaApplicationCall' smart constructor.
+data UpdateSipMediaApplicationCall = UpdateSipMediaApplicationCall'
+  { -- | The ID of the SIP media application handling the call.
+    sipMediaApplicationId :: Prelude.Text,
+    -- | The ID of the call transaction.
+    transactionId :: Prelude.Text,
+    -- | Arguments made available to the Lambda function as part of the
+    -- @CALL_UPDATE_REQUESTED@ event. Can contain 0-20 key-value pairs.
+    arguments :: Prelude.HashMap Prelude.Text (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateSipMediaApplicationCall' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sipMediaApplicationId', 'updateSipMediaApplicationCall_sipMediaApplicationId' - The ID of the SIP media application handling the call.
+--
+-- 'transactionId', 'updateSipMediaApplicationCall_transactionId' - The ID of the call transaction.
+--
+-- 'arguments', 'updateSipMediaApplicationCall_arguments' - Arguments made available to the Lambda function as part of the
+-- @CALL_UPDATE_REQUESTED@ event. Can contain 0-20 key-value pairs.
+newUpdateSipMediaApplicationCall ::
+  -- | 'sipMediaApplicationId'
+  Prelude.Text ->
+  -- | 'transactionId'
+  Prelude.Text ->
+  UpdateSipMediaApplicationCall
+newUpdateSipMediaApplicationCall
+  pSipMediaApplicationId_
+  pTransactionId_ =
+    UpdateSipMediaApplicationCall'
+      { sipMediaApplicationId =
+          pSipMediaApplicationId_,
+        transactionId = pTransactionId_,
+        arguments = Prelude.mempty
+      }
+
+-- | The ID of the SIP media application handling the call.
+updateSipMediaApplicationCall_sipMediaApplicationId :: Lens.Lens' UpdateSipMediaApplicationCall Prelude.Text
+updateSipMediaApplicationCall_sipMediaApplicationId = Lens.lens (\UpdateSipMediaApplicationCall' {sipMediaApplicationId} -> sipMediaApplicationId) (\s@UpdateSipMediaApplicationCall' {} a -> s {sipMediaApplicationId = a} :: UpdateSipMediaApplicationCall)
+
+-- | The ID of the call transaction.
+updateSipMediaApplicationCall_transactionId :: Lens.Lens' UpdateSipMediaApplicationCall Prelude.Text
+updateSipMediaApplicationCall_transactionId = Lens.lens (\UpdateSipMediaApplicationCall' {transactionId} -> transactionId) (\s@UpdateSipMediaApplicationCall' {} a -> s {transactionId = a} :: UpdateSipMediaApplicationCall)
+
+-- | Arguments made available to the Lambda function as part of the
+-- @CALL_UPDATE_REQUESTED@ event. Can contain 0-20 key-value pairs.
+updateSipMediaApplicationCall_arguments :: Lens.Lens' UpdateSipMediaApplicationCall (Prelude.HashMap Prelude.Text Prelude.Text)
+updateSipMediaApplicationCall_arguments = Lens.lens (\UpdateSipMediaApplicationCall' {arguments} -> arguments) (\s@UpdateSipMediaApplicationCall' {} a -> s {arguments = a} :: UpdateSipMediaApplicationCall) Prelude.. Lens.coerced
+
+instance
+  Core.AWSRequest
+    UpdateSipMediaApplicationCall
+  where
+  type
+    AWSResponse UpdateSipMediaApplicationCall =
+      UpdateSipMediaApplicationCallResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateSipMediaApplicationCallResponse'
+            Prelude.<$> (x Data..?> "SipMediaApplicationCall")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    UpdateSipMediaApplicationCall
+  where
+  hashWithSalt _salt UpdateSipMediaApplicationCall' {..} =
+    _salt
+      `Prelude.hashWithSalt` sipMediaApplicationId
+      `Prelude.hashWithSalt` transactionId
+      `Prelude.hashWithSalt` arguments
+
+instance Prelude.NFData UpdateSipMediaApplicationCall where
+  rnf UpdateSipMediaApplicationCall' {..} =
+    Prelude.rnf sipMediaApplicationId
+      `Prelude.seq` Prelude.rnf transactionId
+      `Prelude.seq` Prelude.rnf arguments
+
+instance Data.ToHeaders UpdateSipMediaApplicationCall where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON UpdateSipMediaApplicationCall where
+  toJSON UpdateSipMediaApplicationCall' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Arguments" Data..= arguments)]
+      )
+
+instance Data.ToPath UpdateSipMediaApplicationCall where
+  toPath UpdateSipMediaApplicationCall' {..} =
+    Prelude.mconcat
+      [ "/sip-media-applications/",
+        Data.toBS sipMediaApplicationId,
+        "/calls/",
+        Data.toBS transactionId
+      ]
+
+instance Data.ToQuery UpdateSipMediaApplicationCall where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateSipMediaApplicationCallResponse' smart constructor.
+data UpdateSipMediaApplicationCallResponse = UpdateSipMediaApplicationCallResponse'
+  { sipMediaApplicationCall :: Prelude.Maybe SipMediaApplicationCall,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateSipMediaApplicationCallResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sipMediaApplicationCall', 'updateSipMediaApplicationCallResponse_sipMediaApplicationCall' - Undocumented member.
+--
+-- 'httpStatus', 'updateSipMediaApplicationCallResponse_httpStatus' - The response's http status code.
+newUpdateSipMediaApplicationCallResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateSipMediaApplicationCallResponse
+newUpdateSipMediaApplicationCallResponse pHttpStatus_ =
+  UpdateSipMediaApplicationCallResponse'
+    { sipMediaApplicationCall =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+updateSipMediaApplicationCallResponse_sipMediaApplicationCall :: Lens.Lens' UpdateSipMediaApplicationCallResponse (Prelude.Maybe SipMediaApplicationCall)
+updateSipMediaApplicationCallResponse_sipMediaApplicationCall = Lens.lens (\UpdateSipMediaApplicationCallResponse' {sipMediaApplicationCall} -> sipMediaApplicationCall) (\s@UpdateSipMediaApplicationCallResponse' {} a -> s {sipMediaApplicationCall = a} :: UpdateSipMediaApplicationCallResponse)
+
+-- | The response's http status code.
+updateSipMediaApplicationCallResponse_httpStatus :: Lens.Lens' UpdateSipMediaApplicationCallResponse Prelude.Int
+updateSipMediaApplicationCallResponse_httpStatus = Lens.lens (\UpdateSipMediaApplicationCallResponse' {httpStatus} -> httpStatus) (\s@UpdateSipMediaApplicationCallResponse' {} a -> s {httpStatus = a} :: UpdateSipMediaApplicationCallResponse)
+
+instance
+  Prelude.NFData
+    UpdateSipMediaApplicationCallResponse
+  where
+  rnf UpdateSipMediaApplicationCallResponse' {..} =
+    Prelude.rnf sipMediaApplicationCall
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/UpdateSipRule.hs b/gen/Amazonka/Chime/UpdateSipRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/UpdateSipRule.hs
@@ -0,0 +1,203 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.UpdateSipRule
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the details of the specified SIP rule.
+module Amazonka.Chime.UpdateSipRule
+  ( -- * Creating a Request
+    UpdateSipRule (..),
+    newUpdateSipRule,
+
+    -- * Request Lenses
+    updateSipRule_disabled,
+    updateSipRule_targetApplications,
+    updateSipRule_sipRuleId,
+    updateSipRule_name,
+
+    -- * Destructuring the Response
+    UpdateSipRuleResponse (..),
+    newUpdateSipRuleResponse,
+
+    -- * Response Lenses
+    updateSipRuleResponse_sipRule,
+    updateSipRuleResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateSipRule' smart constructor.
+data UpdateSipRule = UpdateSipRule'
+  { -- | The new value specified to indicate whether the rule is disabled.
+    disabled :: Prelude.Maybe Prelude.Bool,
+    -- | The new value of the list of target applications.
+    targetApplications :: Prelude.Maybe (Prelude.NonEmpty SipRuleTargetApplication),
+    -- | The SIP rule ID.
+    sipRuleId :: Prelude.Text,
+    -- | The new name for the specified SIP rule.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateSipRule' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'disabled', 'updateSipRule_disabled' - The new value specified to indicate whether the rule is disabled.
+--
+-- 'targetApplications', 'updateSipRule_targetApplications' - The new value of the list of target applications.
+--
+-- 'sipRuleId', 'updateSipRule_sipRuleId' - The SIP rule ID.
+--
+-- 'name', 'updateSipRule_name' - The new name for the specified SIP rule.
+newUpdateSipRule ::
+  -- | 'sipRuleId'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  UpdateSipRule
+newUpdateSipRule pSipRuleId_ pName_ =
+  UpdateSipRule'
+    { disabled = Prelude.Nothing,
+      targetApplications = Prelude.Nothing,
+      sipRuleId = pSipRuleId_,
+      name = pName_
+    }
+
+-- | The new value specified to indicate whether the rule is disabled.
+updateSipRule_disabled :: Lens.Lens' UpdateSipRule (Prelude.Maybe Prelude.Bool)
+updateSipRule_disabled = Lens.lens (\UpdateSipRule' {disabled} -> disabled) (\s@UpdateSipRule' {} a -> s {disabled = a} :: UpdateSipRule)
+
+-- | The new value of the list of target applications.
+updateSipRule_targetApplications :: Lens.Lens' UpdateSipRule (Prelude.Maybe (Prelude.NonEmpty SipRuleTargetApplication))
+updateSipRule_targetApplications = Lens.lens (\UpdateSipRule' {targetApplications} -> targetApplications) (\s@UpdateSipRule' {} a -> s {targetApplications = a} :: UpdateSipRule) Prelude.. Lens.mapping Lens.coerced
+
+-- | The SIP rule ID.
+updateSipRule_sipRuleId :: Lens.Lens' UpdateSipRule Prelude.Text
+updateSipRule_sipRuleId = Lens.lens (\UpdateSipRule' {sipRuleId} -> sipRuleId) (\s@UpdateSipRule' {} a -> s {sipRuleId = a} :: UpdateSipRule)
+
+-- | The new name for the specified SIP rule.
+updateSipRule_name :: Lens.Lens' UpdateSipRule Prelude.Text
+updateSipRule_name = Lens.lens (\UpdateSipRule' {name} -> name) (\s@UpdateSipRule' {} a -> s {name = a} :: UpdateSipRule)
+
+instance Core.AWSRequest UpdateSipRule where
+  type
+    AWSResponse UpdateSipRule =
+      UpdateSipRuleResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateSipRuleResponse'
+            Prelude.<$> (x Data..?> "SipRule")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateSipRule where
+  hashWithSalt _salt UpdateSipRule' {..} =
+    _salt
+      `Prelude.hashWithSalt` disabled
+      `Prelude.hashWithSalt` targetApplications
+      `Prelude.hashWithSalt` sipRuleId
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData UpdateSipRule where
+  rnf UpdateSipRule' {..} =
+    Prelude.rnf disabled
+      `Prelude.seq` Prelude.rnf targetApplications
+      `Prelude.seq` Prelude.rnf sipRuleId
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToHeaders UpdateSipRule where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON UpdateSipRule where
+  toJSON UpdateSipRule' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Disabled" Data..=) Prelude.<$> disabled,
+            ("TargetApplications" Data..=)
+              Prelude.<$> targetApplications,
+            Prelude.Just ("Name" Data..= name)
+          ]
+      )
+
+instance Data.ToPath UpdateSipRule where
+  toPath UpdateSipRule' {..} =
+    Prelude.mconcat
+      ["/sip-rules/", Data.toBS sipRuleId]
+
+instance Data.ToQuery UpdateSipRule where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateSipRuleResponse' smart constructor.
+data UpdateSipRuleResponse = UpdateSipRuleResponse'
+  { -- | Updated SIP rule details.
+    sipRule :: Prelude.Maybe SipRule,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateSipRuleResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sipRule', 'updateSipRuleResponse_sipRule' - Updated SIP rule details.
+--
+-- 'httpStatus', 'updateSipRuleResponse_httpStatus' - The response's http status code.
+newUpdateSipRuleResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateSipRuleResponse
+newUpdateSipRuleResponse pHttpStatus_ =
+  UpdateSipRuleResponse'
+    { sipRule = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Updated SIP rule details.
+updateSipRuleResponse_sipRule :: Lens.Lens' UpdateSipRuleResponse (Prelude.Maybe SipRule)
+updateSipRuleResponse_sipRule = Lens.lens (\UpdateSipRuleResponse' {sipRule} -> sipRule) (\s@UpdateSipRuleResponse' {} a -> s {sipRule = a} :: UpdateSipRuleResponse)
+
+-- | The response's http status code.
+updateSipRuleResponse_httpStatus :: Lens.Lens' UpdateSipRuleResponse Prelude.Int
+updateSipRuleResponse_httpStatus = Lens.lens (\UpdateSipRuleResponse' {httpStatus} -> httpStatus) (\s@UpdateSipRuleResponse' {} a -> s {httpStatus = a} :: UpdateSipRuleResponse)
+
+instance Prelude.NFData UpdateSipRuleResponse where
+  rnf UpdateSipRuleResponse' {..} =
+    Prelude.rnf sipRule
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/UpdateUser.hs b/gen/Amazonka/Chime/UpdateUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/UpdateUser.hs
@@ -0,0 +1,222 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.UpdateUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates user details for a specified user ID. Currently, only
+-- @LicenseType@ updates are supported for this action.
+module Amazonka.Chime.UpdateUser
+  ( -- * Creating a Request
+    UpdateUser (..),
+    newUpdateUser,
+
+    -- * Request Lenses
+    updateUser_alexaForBusinessMetadata,
+    updateUser_licenseType,
+    updateUser_userType,
+    updateUser_accountId,
+    updateUser_userId,
+
+    -- * Destructuring the Response
+    UpdateUserResponse (..),
+    newUpdateUserResponse,
+
+    -- * Response Lenses
+    updateUserResponse_user,
+    updateUserResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateUser' smart constructor.
+data UpdateUser = UpdateUser'
+  { -- | The Alexa for Business metadata.
+    alexaForBusinessMetadata :: Prelude.Maybe AlexaForBusinessMetadata,
+    -- | The user license type to update. This must be a supported license type
+    -- for the Amazon Chime account that the user belongs to.
+    licenseType :: Prelude.Maybe License,
+    -- | The user type.
+    userType :: Prelude.Maybe UserType,
+    -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The user ID.
+    userId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateUser' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'alexaForBusinessMetadata', 'updateUser_alexaForBusinessMetadata' - The Alexa for Business metadata.
+--
+-- 'licenseType', 'updateUser_licenseType' - The user license type to update. This must be a supported license type
+-- for the Amazon Chime account that the user belongs to.
+--
+-- 'userType', 'updateUser_userType' - The user type.
+--
+-- 'accountId', 'updateUser_accountId' - The Amazon Chime account ID.
+--
+-- 'userId', 'updateUser_userId' - The user ID.
+newUpdateUser ::
+  -- | 'accountId'
+  Prelude.Text ->
+  -- | 'userId'
+  Prelude.Text ->
+  UpdateUser
+newUpdateUser pAccountId_ pUserId_ =
+  UpdateUser'
+    { alexaForBusinessMetadata =
+        Prelude.Nothing,
+      licenseType = Prelude.Nothing,
+      userType = Prelude.Nothing,
+      accountId = pAccountId_,
+      userId = pUserId_
+    }
+
+-- | The Alexa for Business metadata.
+updateUser_alexaForBusinessMetadata :: Lens.Lens' UpdateUser (Prelude.Maybe AlexaForBusinessMetadata)
+updateUser_alexaForBusinessMetadata = Lens.lens (\UpdateUser' {alexaForBusinessMetadata} -> alexaForBusinessMetadata) (\s@UpdateUser' {} a -> s {alexaForBusinessMetadata = a} :: UpdateUser)
+
+-- | The user license type to update. This must be a supported license type
+-- for the Amazon Chime account that the user belongs to.
+updateUser_licenseType :: Lens.Lens' UpdateUser (Prelude.Maybe License)
+updateUser_licenseType = Lens.lens (\UpdateUser' {licenseType} -> licenseType) (\s@UpdateUser' {} a -> s {licenseType = a} :: UpdateUser)
+
+-- | The user type.
+updateUser_userType :: Lens.Lens' UpdateUser (Prelude.Maybe UserType)
+updateUser_userType = Lens.lens (\UpdateUser' {userType} -> userType) (\s@UpdateUser' {} a -> s {userType = a} :: UpdateUser)
+
+-- | The Amazon Chime account ID.
+updateUser_accountId :: Lens.Lens' UpdateUser Prelude.Text
+updateUser_accountId = Lens.lens (\UpdateUser' {accountId} -> accountId) (\s@UpdateUser' {} a -> s {accountId = a} :: UpdateUser)
+
+-- | The user ID.
+updateUser_userId :: Lens.Lens' UpdateUser Prelude.Text
+updateUser_userId = Lens.lens (\UpdateUser' {userId} -> userId) (\s@UpdateUser' {} a -> s {userId = a} :: UpdateUser)
+
+instance Core.AWSRequest UpdateUser where
+  type AWSResponse UpdateUser = UpdateUserResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateUserResponse'
+            Prelude.<$> (x Data..?> "User")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateUser where
+  hashWithSalt _salt UpdateUser' {..} =
+    _salt
+      `Prelude.hashWithSalt` alexaForBusinessMetadata
+      `Prelude.hashWithSalt` licenseType
+      `Prelude.hashWithSalt` userType
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` userId
+
+instance Prelude.NFData UpdateUser where
+  rnf UpdateUser' {..} =
+    Prelude.rnf alexaForBusinessMetadata
+      `Prelude.seq` Prelude.rnf licenseType
+      `Prelude.seq` Prelude.rnf userType
+      `Prelude.seq` Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf userId
+
+instance Data.ToHeaders UpdateUser where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON UpdateUser where
+  toJSON UpdateUser' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AlexaForBusinessMetadata" Data..=)
+              Prelude.<$> alexaForBusinessMetadata,
+            ("LicenseType" Data..=) Prelude.<$> licenseType,
+            ("UserType" Data..=) Prelude.<$> userType
+          ]
+      )
+
+instance Data.ToPath UpdateUser where
+  toPath UpdateUser' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS accountId,
+        "/users/",
+        Data.toBS userId
+      ]
+
+instance Data.ToQuery UpdateUser where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateUserResponse' smart constructor.
+data UpdateUserResponse = UpdateUserResponse'
+  { -- | The updated user details.
+    user :: Prelude.Maybe User,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateUserResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'user', 'updateUserResponse_user' - The updated user details.
+--
+-- 'httpStatus', 'updateUserResponse_httpStatus' - The response's http status code.
+newUpdateUserResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateUserResponse
+newUpdateUserResponse pHttpStatus_ =
+  UpdateUserResponse'
+    { user = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The updated user details.
+updateUserResponse_user :: Lens.Lens' UpdateUserResponse (Prelude.Maybe User)
+updateUserResponse_user = Lens.lens (\UpdateUserResponse' {user} -> user) (\s@UpdateUserResponse' {} a -> s {user = a} :: UpdateUserResponse)
+
+-- | The response's http status code.
+updateUserResponse_httpStatus :: Lens.Lens' UpdateUserResponse Prelude.Int
+updateUserResponse_httpStatus = Lens.lens (\UpdateUserResponse' {httpStatus} -> httpStatus) (\s@UpdateUserResponse' {} a -> s {httpStatus = a} :: UpdateUserResponse)
+
+instance Prelude.NFData UpdateUserResponse where
+  rnf UpdateUserResponse' {..} =
+    Prelude.rnf user
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/UpdateUserSettings.hs b/gen/Amazonka/Chime/UpdateUserSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/UpdateUserSettings.hs
@@ -0,0 +1,164 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.UpdateUserSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the settings for the specified user, such as phone number
+-- settings.
+module Amazonka.Chime.UpdateUserSettings
+  ( -- * Creating a Request
+    UpdateUserSettings (..),
+    newUpdateUserSettings,
+
+    -- * Request Lenses
+    updateUserSettings_accountId,
+    updateUserSettings_userId,
+    updateUserSettings_userSettings,
+
+    -- * Destructuring the Response
+    UpdateUserSettingsResponse (..),
+    newUpdateUserSettingsResponse,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateUserSettings' smart constructor.
+data UpdateUserSettings = UpdateUserSettings'
+  { -- | The Amazon Chime account ID.
+    accountId :: Prelude.Text,
+    -- | The user ID.
+    userId :: Prelude.Text,
+    -- | The user settings to update.
+    userSettings :: UserSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateUserSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'updateUserSettings_accountId' - The Amazon Chime account ID.
+--
+-- 'userId', 'updateUserSettings_userId' - The user ID.
+--
+-- 'userSettings', 'updateUserSettings_userSettings' - The user settings to update.
+newUpdateUserSettings ::
+  -- | 'accountId'
+  Prelude.Text ->
+  -- | 'userId'
+  Prelude.Text ->
+  -- | 'userSettings'
+  UserSettings ->
+  UpdateUserSettings
+newUpdateUserSettings
+  pAccountId_
+  pUserId_
+  pUserSettings_ =
+    UpdateUserSettings'
+      { accountId = pAccountId_,
+        userId = pUserId_,
+        userSettings = pUserSettings_
+      }
+
+-- | The Amazon Chime account ID.
+updateUserSettings_accountId :: Lens.Lens' UpdateUserSettings Prelude.Text
+updateUserSettings_accountId = Lens.lens (\UpdateUserSettings' {accountId} -> accountId) (\s@UpdateUserSettings' {} a -> s {accountId = a} :: UpdateUserSettings)
+
+-- | The user ID.
+updateUserSettings_userId :: Lens.Lens' UpdateUserSettings Prelude.Text
+updateUserSettings_userId = Lens.lens (\UpdateUserSettings' {userId} -> userId) (\s@UpdateUserSettings' {} a -> s {userId = a} :: UpdateUserSettings)
+
+-- | The user settings to update.
+updateUserSettings_userSettings :: Lens.Lens' UpdateUserSettings UserSettings
+updateUserSettings_userSettings = Lens.lens (\UpdateUserSettings' {userSettings} -> userSettings) (\s@UpdateUserSettings' {} a -> s {userSettings = a} :: UpdateUserSettings)
+
+instance Core.AWSRequest UpdateUserSettings where
+  type
+    AWSResponse UpdateUserSettings =
+      UpdateUserSettingsResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveNull UpdateUserSettingsResponse'
+
+instance Prelude.Hashable UpdateUserSettings where
+  hashWithSalt _salt UpdateUserSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` userId
+      `Prelude.hashWithSalt` userSettings
+
+instance Prelude.NFData UpdateUserSettings where
+  rnf UpdateUserSettings' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf userId
+      `Prelude.seq` Prelude.rnf userSettings
+
+instance Data.ToHeaders UpdateUserSettings where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON UpdateUserSettings where
+  toJSON UpdateUserSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("UserSettings" Data..= userSettings)]
+      )
+
+instance Data.ToPath UpdateUserSettings where
+  toPath UpdateUserSettings' {..} =
+    Prelude.mconcat
+      [ "/accounts/",
+        Data.toBS accountId,
+        "/users/",
+        Data.toBS userId,
+        "/settings"
+      ]
+
+instance Data.ToQuery UpdateUserSettings where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateUserSettingsResponse' smart constructor.
+data UpdateUserSettingsResponse = UpdateUserSettingsResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateUserSettingsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newUpdateUserSettingsResponse ::
+  UpdateUserSettingsResponse
+newUpdateUserSettingsResponse =
+  UpdateUserSettingsResponse'
+
+instance Prelude.NFData UpdateUserSettingsResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/Chime/UpdateVoiceConnector.hs b/gen/Amazonka/Chime/UpdateVoiceConnector.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/UpdateVoiceConnector.hs
@@ -0,0 +1,197 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.UpdateVoiceConnector
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates details for the specified Amazon Chime Voice Connector.
+module Amazonka.Chime.UpdateVoiceConnector
+  ( -- * Creating a Request
+    UpdateVoiceConnector (..),
+    newUpdateVoiceConnector,
+
+    -- * Request Lenses
+    updateVoiceConnector_voiceConnectorId,
+    updateVoiceConnector_name,
+    updateVoiceConnector_requireEncryption,
+
+    -- * Destructuring the Response
+    UpdateVoiceConnectorResponse (..),
+    newUpdateVoiceConnectorResponse,
+
+    -- * Response Lenses
+    updateVoiceConnectorResponse_voiceConnector,
+    updateVoiceConnectorResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateVoiceConnector' smart constructor.
+data UpdateVoiceConnector = UpdateVoiceConnector'
+  { -- | The Amazon Chime Voice Connector ID.
+    voiceConnectorId :: Prelude.Text,
+    -- | The name of the Amazon Chime Voice Connector.
+    name :: Prelude.Text,
+    -- | When enabled, requires encryption for the Amazon Chime Voice Connector.
+    requireEncryption :: Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateVoiceConnector' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorId', 'updateVoiceConnector_voiceConnectorId' - The Amazon Chime Voice Connector ID.
+--
+-- 'name', 'updateVoiceConnector_name' - The name of the Amazon Chime Voice Connector.
+--
+-- 'requireEncryption', 'updateVoiceConnector_requireEncryption' - When enabled, requires encryption for the Amazon Chime Voice Connector.
+newUpdateVoiceConnector ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'requireEncryption'
+  Prelude.Bool ->
+  UpdateVoiceConnector
+newUpdateVoiceConnector
+  pVoiceConnectorId_
+  pName_
+  pRequireEncryption_ =
+    UpdateVoiceConnector'
+      { voiceConnectorId =
+          pVoiceConnectorId_,
+        name = pName_,
+        requireEncryption = pRequireEncryption_
+      }
+
+-- | The Amazon Chime Voice Connector ID.
+updateVoiceConnector_voiceConnectorId :: Lens.Lens' UpdateVoiceConnector Prelude.Text
+updateVoiceConnector_voiceConnectorId = Lens.lens (\UpdateVoiceConnector' {voiceConnectorId} -> voiceConnectorId) (\s@UpdateVoiceConnector' {} a -> s {voiceConnectorId = a} :: UpdateVoiceConnector)
+
+-- | The name of the Amazon Chime Voice Connector.
+updateVoiceConnector_name :: Lens.Lens' UpdateVoiceConnector Prelude.Text
+updateVoiceConnector_name = Lens.lens (\UpdateVoiceConnector' {name} -> name) (\s@UpdateVoiceConnector' {} a -> s {name = a} :: UpdateVoiceConnector)
+
+-- | When enabled, requires encryption for the Amazon Chime Voice Connector.
+updateVoiceConnector_requireEncryption :: Lens.Lens' UpdateVoiceConnector Prelude.Bool
+updateVoiceConnector_requireEncryption = Lens.lens (\UpdateVoiceConnector' {requireEncryption} -> requireEncryption) (\s@UpdateVoiceConnector' {} a -> s {requireEncryption = a} :: UpdateVoiceConnector)
+
+instance Core.AWSRequest UpdateVoiceConnector where
+  type
+    AWSResponse UpdateVoiceConnector =
+      UpdateVoiceConnectorResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateVoiceConnectorResponse'
+            Prelude.<$> (x Data..?> "VoiceConnector")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateVoiceConnector where
+  hashWithSalt _salt UpdateVoiceConnector' {..} =
+    _salt
+      `Prelude.hashWithSalt` voiceConnectorId
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` requireEncryption
+
+instance Prelude.NFData UpdateVoiceConnector where
+  rnf UpdateVoiceConnector' {..} =
+    Prelude.rnf voiceConnectorId
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf requireEncryption
+
+instance Data.ToHeaders UpdateVoiceConnector where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON UpdateVoiceConnector where
+  toJSON UpdateVoiceConnector' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Name" Data..= name),
+            Prelude.Just
+              ("RequireEncryption" Data..= requireEncryption)
+          ]
+      )
+
+instance Data.ToPath UpdateVoiceConnector where
+  toPath UpdateVoiceConnector' {..} =
+    Prelude.mconcat
+      ["/voice-connectors/", Data.toBS voiceConnectorId]
+
+instance Data.ToQuery UpdateVoiceConnector where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateVoiceConnectorResponse' smart constructor.
+data UpdateVoiceConnectorResponse = UpdateVoiceConnectorResponse'
+  { -- | The updated Amazon Chime Voice Connector details.
+    voiceConnector :: Prelude.Maybe VoiceConnector,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateVoiceConnectorResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnector', 'updateVoiceConnectorResponse_voiceConnector' - The updated Amazon Chime Voice Connector details.
+--
+-- 'httpStatus', 'updateVoiceConnectorResponse_httpStatus' - The response's http status code.
+newUpdateVoiceConnectorResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateVoiceConnectorResponse
+newUpdateVoiceConnectorResponse pHttpStatus_ =
+  UpdateVoiceConnectorResponse'
+    { voiceConnector =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The updated Amazon Chime Voice Connector details.
+updateVoiceConnectorResponse_voiceConnector :: Lens.Lens' UpdateVoiceConnectorResponse (Prelude.Maybe VoiceConnector)
+updateVoiceConnectorResponse_voiceConnector = Lens.lens (\UpdateVoiceConnectorResponse' {voiceConnector} -> voiceConnector) (\s@UpdateVoiceConnectorResponse' {} a -> s {voiceConnector = a} :: UpdateVoiceConnectorResponse)
+
+-- | The response's http status code.
+updateVoiceConnectorResponse_httpStatus :: Lens.Lens' UpdateVoiceConnectorResponse Prelude.Int
+updateVoiceConnectorResponse_httpStatus = Lens.lens (\UpdateVoiceConnectorResponse' {httpStatus} -> httpStatus) (\s@UpdateVoiceConnectorResponse' {} a -> s {httpStatus = a} :: UpdateVoiceConnectorResponse)
+
+instance Prelude.NFData UpdateVoiceConnectorResponse where
+  rnf UpdateVoiceConnectorResponse' {..} =
+    Prelude.rnf voiceConnector
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/UpdateVoiceConnectorGroup.hs b/gen/Amazonka/Chime/UpdateVoiceConnectorGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/UpdateVoiceConnectorGroup.hs
@@ -0,0 +1,200 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.UpdateVoiceConnectorGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates details of the specified Amazon Chime Voice Connector group,
+-- such as the name and Amazon Chime Voice Connector priority ranking.
+module Amazonka.Chime.UpdateVoiceConnectorGroup
+  ( -- * Creating a Request
+    UpdateVoiceConnectorGroup (..),
+    newUpdateVoiceConnectorGroup,
+
+    -- * Request Lenses
+    updateVoiceConnectorGroup_voiceConnectorGroupId,
+    updateVoiceConnectorGroup_name,
+    updateVoiceConnectorGroup_voiceConnectorItems,
+
+    -- * Destructuring the Response
+    UpdateVoiceConnectorGroupResponse (..),
+    newUpdateVoiceConnectorGroupResponse,
+
+    -- * Response Lenses
+    updateVoiceConnectorGroupResponse_voiceConnectorGroup,
+    updateVoiceConnectorGroupResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateVoiceConnectorGroup' smart constructor.
+data UpdateVoiceConnectorGroup = UpdateVoiceConnectorGroup'
+  { -- | The Amazon Chime Voice Connector group ID.
+    voiceConnectorGroupId :: Prelude.Text,
+    -- | The name of the Amazon Chime Voice Connector group.
+    name :: Prelude.Text,
+    -- | The @VoiceConnectorItems@ to associate with the group.
+    voiceConnectorItems :: [VoiceConnectorItem]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateVoiceConnectorGroup' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorGroupId', 'updateVoiceConnectorGroup_voiceConnectorGroupId' - The Amazon Chime Voice Connector group ID.
+--
+-- 'name', 'updateVoiceConnectorGroup_name' - The name of the Amazon Chime Voice Connector group.
+--
+-- 'voiceConnectorItems', 'updateVoiceConnectorGroup_voiceConnectorItems' - The @VoiceConnectorItems@ to associate with the group.
+newUpdateVoiceConnectorGroup ::
+  -- | 'voiceConnectorGroupId'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  UpdateVoiceConnectorGroup
+newUpdateVoiceConnectorGroup
+  pVoiceConnectorGroupId_
+  pName_ =
+    UpdateVoiceConnectorGroup'
+      { voiceConnectorGroupId =
+          pVoiceConnectorGroupId_,
+        name = pName_,
+        voiceConnectorItems = Prelude.mempty
+      }
+
+-- | The Amazon Chime Voice Connector group ID.
+updateVoiceConnectorGroup_voiceConnectorGroupId :: Lens.Lens' UpdateVoiceConnectorGroup Prelude.Text
+updateVoiceConnectorGroup_voiceConnectorGroupId = Lens.lens (\UpdateVoiceConnectorGroup' {voiceConnectorGroupId} -> voiceConnectorGroupId) (\s@UpdateVoiceConnectorGroup' {} a -> s {voiceConnectorGroupId = a} :: UpdateVoiceConnectorGroup)
+
+-- | The name of the Amazon Chime Voice Connector group.
+updateVoiceConnectorGroup_name :: Lens.Lens' UpdateVoiceConnectorGroup Prelude.Text
+updateVoiceConnectorGroup_name = Lens.lens (\UpdateVoiceConnectorGroup' {name} -> name) (\s@UpdateVoiceConnectorGroup' {} a -> s {name = a} :: UpdateVoiceConnectorGroup)
+
+-- | The @VoiceConnectorItems@ to associate with the group.
+updateVoiceConnectorGroup_voiceConnectorItems :: Lens.Lens' UpdateVoiceConnectorGroup [VoiceConnectorItem]
+updateVoiceConnectorGroup_voiceConnectorItems = Lens.lens (\UpdateVoiceConnectorGroup' {voiceConnectorItems} -> voiceConnectorItems) (\s@UpdateVoiceConnectorGroup' {} a -> s {voiceConnectorItems = a} :: UpdateVoiceConnectorGroup) Prelude.. Lens.coerced
+
+instance Core.AWSRequest UpdateVoiceConnectorGroup where
+  type
+    AWSResponse UpdateVoiceConnectorGroup =
+      UpdateVoiceConnectorGroupResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateVoiceConnectorGroupResponse'
+            Prelude.<$> (x Data..?> "VoiceConnectorGroup")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateVoiceConnectorGroup where
+  hashWithSalt _salt UpdateVoiceConnectorGroup' {..} =
+    _salt
+      `Prelude.hashWithSalt` voiceConnectorGroupId
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` voiceConnectorItems
+
+instance Prelude.NFData UpdateVoiceConnectorGroup where
+  rnf UpdateVoiceConnectorGroup' {..} =
+    Prelude.rnf voiceConnectorGroupId
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf voiceConnectorItems
+
+instance Data.ToHeaders UpdateVoiceConnectorGroup where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON UpdateVoiceConnectorGroup where
+  toJSON UpdateVoiceConnectorGroup' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Name" Data..= name),
+            Prelude.Just
+              ("VoiceConnectorItems" Data..= voiceConnectorItems)
+          ]
+      )
+
+instance Data.ToPath UpdateVoiceConnectorGroup where
+  toPath UpdateVoiceConnectorGroup' {..} =
+    Prelude.mconcat
+      [ "/voice-connector-groups/",
+        Data.toBS voiceConnectorGroupId
+      ]
+
+instance Data.ToQuery UpdateVoiceConnectorGroup where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateVoiceConnectorGroupResponse' smart constructor.
+data UpdateVoiceConnectorGroupResponse = UpdateVoiceConnectorGroupResponse'
+  { -- | The updated Amazon Chime Voice Connector group details.
+    voiceConnectorGroup :: Prelude.Maybe VoiceConnectorGroup,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateVoiceConnectorGroupResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorGroup', 'updateVoiceConnectorGroupResponse_voiceConnectorGroup' - The updated Amazon Chime Voice Connector group details.
+--
+-- 'httpStatus', 'updateVoiceConnectorGroupResponse_httpStatus' - The response's http status code.
+newUpdateVoiceConnectorGroupResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateVoiceConnectorGroupResponse
+newUpdateVoiceConnectorGroupResponse pHttpStatus_ =
+  UpdateVoiceConnectorGroupResponse'
+    { voiceConnectorGroup =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The updated Amazon Chime Voice Connector group details.
+updateVoiceConnectorGroupResponse_voiceConnectorGroup :: Lens.Lens' UpdateVoiceConnectorGroupResponse (Prelude.Maybe VoiceConnectorGroup)
+updateVoiceConnectorGroupResponse_voiceConnectorGroup = Lens.lens (\UpdateVoiceConnectorGroupResponse' {voiceConnectorGroup} -> voiceConnectorGroup) (\s@UpdateVoiceConnectorGroupResponse' {} a -> s {voiceConnectorGroup = a} :: UpdateVoiceConnectorGroupResponse)
+
+-- | The response's http status code.
+updateVoiceConnectorGroupResponse_httpStatus :: Lens.Lens' UpdateVoiceConnectorGroupResponse Prelude.Int
+updateVoiceConnectorGroupResponse_httpStatus = Lens.lens (\UpdateVoiceConnectorGroupResponse' {httpStatus} -> httpStatus) (\s@UpdateVoiceConnectorGroupResponse' {} a -> s {httpStatus = a} :: UpdateVoiceConnectorGroupResponse)
+
+instance
+  Prelude.NFData
+    UpdateVoiceConnectorGroupResponse
+  where
+  rnf UpdateVoiceConnectorGroupResponse' {..} =
+    Prelude.rnf voiceConnectorGroup
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/ValidateE911Address.hs b/gen/Amazonka/Chime/ValidateE911Address.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/ValidateE911Address.hs
@@ -0,0 +1,310 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.ValidateE911Address
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Validates an address to be used for 911 calls made with Amazon Chime
+-- Voice Connectors. You can use validated addresses in a Presence
+-- Information Data Format Location Object file that you include in SIP
+-- requests. That helps ensure that addresses are routed to the appropriate
+-- Public Safety Answering Point.
+module Amazonka.Chime.ValidateE911Address
+  ( -- * Creating a Request
+    ValidateE911Address (..),
+    newValidateE911Address,
+
+    -- * Request Lenses
+    validateE911Address_awsAccountId,
+    validateE911Address_streetNumber,
+    validateE911Address_streetInfo,
+    validateE911Address_city,
+    validateE911Address_state,
+    validateE911Address_country,
+    validateE911Address_postalCode,
+
+    -- * Destructuring the Response
+    ValidateE911AddressResponse (..),
+    newValidateE911AddressResponse,
+
+    -- * Response Lenses
+    validateE911AddressResponse_address,
+    validateE911AddressResponse_addressExternalId,
+    validateE911AddressResponse_candidateAddressList,
+    validateE911AddressResponse_validationResult,
+    validateE911AddressResponse_httpStatus,
+  )
+where
+
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newValidateE911Address' smart constructor.
+data ValidateE911Address = ValidateE911Address'
+  { -- | The AWS account ID.
+    awsAccountId :: Prelude.Text,
+    -- | The address street number, such as @200@ or @2121@.
+    streetNumber :: Data.Sensitive Prelude.Text,
+    -- | The address street information, such as @8th Avenue@.
+    streetInfo :: Data.Sensitive Prelude.Text,
+    -- | The address city, such as @Portland@.
+    city :: Data.Sensitive Prelude.Text,
+    -- | The address state, such as @ME@.
+    state :: Data.Sensitive Prelude.Text,
+    -- | The address country, such as @US@.
+    country :: Data.Sensitive Prelude.Text,
+    -- | The address postal code, such as @04352@.
+    postalCode :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ValidateE911Address' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsAccountId', 'validateE911Address_awsAccountId' - The AWS account ID.
+--
+-- 'streetNumber', 'validateE911Address_streetNumber' - The address street number, such as @200@ or @2121@.
+--
+-- 'streetInfo', 'validateE911Address_streetInfo' - The address street information, such as @8th Avenue@.
+--
+-- 'city', 'validateE911Address_city' - The address city, such as @Portland@.
+--
+-- 'state', 'validateE911Address_state' - The address state, such as @ME@.
+--
+-- 'country', 'validateE911Address_country' - The address country, such as @US@.
+--
+-- 'postalCode', 'validateE911Address_postalCode' - The address postal code, such as @04352@.
+newValidateE911Address ::
+  -- | 'awsAccountId'
+  Prelude.Text ->
+  -- | 'streetNumber'
+  Prelude.Text ->
+  -- | 'streetInfo'
+  Prelude.Text ->
+  -- | 'city'
+  Prelude.Text ->
+  -- | 'state'
+  Prelude.Text ->
+  -- | 'country'
+  Prelude.Text ->
+  -- | 'postalCode'
+  Prelude.Text ->
+  ValidateE911Address
+newValidateE911Address
+  pAwsAccountId_
+  pStreetNumber_
+  pStreetInfo_
+  pCity_
+  pState_
+  pCountry_
+  pPostalCode_ =
+    ValidateE911Address'
+      { awsAccountId = pAwsAccountId_,
+        streetNumber = Data._Sensitive Lens.# pStreetNumber_,
+        streetInfo = Data._Sensitive Lens.# pStreetInfo_,
+        city = Data._Sensitive Lens.# pCity_,
+        state = Data._Sensitive Lens.# pState_,
+        country = Data._Sensitive Lens.# pCountry_,
+        postalCode = Data._Sensitive Lens.# pPostalCode_
+      }
+
+-- | The AWS account ID.
+validateE911Address_awsAccountId :: Lens.Lens' ValidateE911Address Prelude.Text
+validateE911Address_awsAccountId = Lens.lens (\ValidateE911Address' {awsAccountId} -> awsAccountId) (\s@ValidateE911Address' {} a -> s {awsAccountId = a} :: ValidateE911Address)
+
+-- | The address street number, such as @200@ or @2121@.
+validateE911Address_streetNumber :: Lens.Lens' ValidateE911Address Prelude.Text
+validateE911Address_streetNumber = Lens.lens (\ValidateE911Address' {streetNumber} -> streetNumber) (\s@ValidateE911Address' {} a -> s {streetNumber = a} :: ValidateE911Address) Prelude.. Data._Sensitive
+
+-- | The address street information, such as @8th Avenue@.
+validateE911Address_streetInfo :: Lens.Lens' ValidateE911Address Prelude.Text
+validateE911Address_streetInfo = Lens.lens (\ValidateE911Address' {streetInfo} -> streetInfo) (\s@ValidateE911Address' {} a -> s {streetInfo = a} :: ValidateE911Address) Prelude.. Data._Sensitive
+
+-- | The address city, such as @Portland@.
+validateE911Address_city :: Lens.Lens' ValidateE911Address Prelude.Text
+validateE911Address_city = Lens.lens (\ValidateE911Address' {city} -> city) (\s@ValidateE911Address' {} a -> s {city = a} :: ValidateE911Address) Prelude.. Data._Sensitive
+
+-- | The address state, such as @ME@.
+validateE911Address_state :: Lens.Lens' ValidateE911Address Prelude.Text
+validateE911Address_state = Lens.lens (\ValidateE911Address' {state} -> state) (\s@ValidateE911Address' {} a -> s {state = a} :: ValidateE911Address) Prelude.. Data._Sensitive
+
+-- | The address country, such as @US@.
+validateE911Address_country :: Lens.Lens' ValidateE911Address Prelude.Text
+validateE911Address_country = Lens.lens (\ValidateE911Address' {country} -> country) (\s@ValidateE911Address' {} a -> s {country = a} :: ValidateE911Address) Prelude.. Data._Sensitive
+
+-- | The address postal code, such as @04352@.
+validateE911Address_postalCode :: Lens.Lens' ValidateE911Address Prelude.Text
+validateE911Address_postalCode = Lens.lens (\ValidateE911Address' {postalCode} -> postalCode) (\s@ValidateE911Address' {} a -> s {postalCode = a} :: ValidateE911Address) Prelude.. Data._Sensitive
+
+instance Core.AWSRequest ValidateE911Address where
+  type
+    AWSResponse ValidateE911Address =
+      ValidateE911AddressResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ValidateE911AddressResponse'
+            Prelude.<$> (x Data..?> "Address")
+            Prelude.<*> (x Data..?> "AddressExternalId")
+            Prelude.<*> ( x
+                            Data..?> "CandidateAddressList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "ValidationResult")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ValidateE911Address where
+  hashWithSalt _salt ValidateE911Address' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsAccountId
+      `Prelude.hashWithSalt` streetNumber
+      `Prelude.hashWithSalt` streetInfo
+      `Prelude.hashWithSalt` city
+      `Prelude.hashWithSalt` state
+      `Prelude.hashWithSalt` country
+      `Prelude.hashWithSalt` postalCode
+
+instance Prelude.NFData ValidateE911Address where
+  rnf ValidateE911Address' {..} =
+    Prelude.rnf awsAccountId
+      `Prelude.seq` Prelude.rnf streetNumber
+      `Prelude.seq` Prelude.rnf streetInfo
+      `Prelude.seq` Prelude.rnf city
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf country
+      `Prelude.seq` Prelude.rnf postalCode
+
+instance Data.ToHeaders ValidateE911Address where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON ValidateE911Address where
+  toJSON ValidateE911Address' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("AwsAccountId" Data..= awsAccountId),
+            Prelude.Just ("StreetNumber" Data..= streetNumber),
+            Prelude.Just ("StreetInfo" Data..= streetInfo),
+            Prelude.Just ("City" Data..= city),
+            Prelude.Just ("State" Data..= state),
+            Prelude.Just ("Country" Data..= country),
+            Prelude.Just ("PostalCode" Data..= postalCode)
+          ]
+      )
+
+instance Data.ToPath ValidateE911Address where
+  toPath = Prelude.const "/emergency-calling/address"
+
+instance Data.ToQuery ValidateE911Address where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newValidateE911AddressResponse' smart constructor.
+data ValidateE911AddressResponse = ValidateE911AddressResponse'
+  { -- | The validated address.
+    address :: Prelude.Maybe Address,
+    -- | The ID that represents the address.
+    addressExternalId :: Prelude.Maybe Prelude.Text,
+    -- | The list of address suggestions.
+    candidateAddressList :: Prelude.Maybe [CandidateAddress],
+    -- | Number indicating the result of address validation. @0@ means the
+    -- address was perfect as is and successfully validated. @1@ means the
+    -- address was corrected. @2@ means the address sent was not close enough
+    -- and was not validated.
+    validationResult :: Prelude.Maybe Prelude.Natural,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ValidateE911AddressResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'address', 'validateE911AddressResponse_address' - The validated address.
+--
+-- 'addressExternalId', 'validateE911AddressResponse_addressExternalId' - The ID that represents the address.
+--
+-- 'candidateAddressList', 'validateE911AddressResponse_candidateAddressList' - The list of address suggestions.
+--
+-- 'validationResult', 'validateE911AddressResponse_validationResult' - Number indicating the result of address validation. @0@ means the
+-- address was perfect as is and successfully validated. @1@ means the
+-- address was corrected. @2@ means the address sent was not close enough
+-- and was not validated.
+--
+-- 'httpStatus', 'validateE911AddressResponse_httpStatus' - The response's http status code.
+newValidateE911AddressResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ValidateE911AddressResponse
+newValidateE911AddressResponse pHttpStatus_ =
+  ValidateE911AddressResponse'
+    { address =
+        Prelude.Nothing,
+      addressExternalId = Prelude.Nothing,
+      candidateAddressList = Prelude.Nothing,
+      validationResult = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The validated address.
+validateE911AddressResponse_address :: Lens.Lens' ValidateE911AddressResponse (Prelude.Maybe Address)
+validateE911AddressResponse_address = Lens.lens (\ValidateE911AddressResponse' {address} -> address) (\s@ValidateE911AddressResponse' {} a -> s {address = a} :: ValidateE911AddressResponse)
+
+-- | The ID that represents the address.
+validateE911AddressResponse_addressExternalId :: Lens.Lens' ValidateE911AddressResponse (Prelude.Maybe Prelude.Text)
+validateE911AddressResponse_addressExternalId = Lens.lens (\ValidateE911AddressResponse' {addressExternalId} -> addressExternalId) (\s@ValidateE911AddressResponse' {} a -> s {addressExternalId = a} :: ValidateE911AddressResponse)
+
+-- | The list of address suggestions.
+validateE911AddressResponse_candidateAddressList :: Lens.Lens' ValidateE911AddressResponse (Prelude.Maybe [CandidateAddress])
+validateE911AddressResponse_candidateAddressList = Lens.lens (\ValidateE911AddressResponse' {candidateAddressList} -> candidateAddressList) (\s@ValidateE911AddressResponse' {} a -> s {candidateAddressList = a} :: ValidateE911AddressResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Number indicating the result of address validation. @0@ means the
+-- address was perfect as is and successfully validated. @1@ means the
+-- address was corrected. @2@ means the address sent was not close enough
+-- and was not validated.
+validateE911AddressResponse_validationResult :: Lens.Lens' ValidateE911AddressResponse (Prelude.Maybe Prelude.Natural)
+validateE911AddressResponse_validationResult = Lens.lens (\ValidateE911AddressResponse' {validationResult} -> validationResult) (\s@ValidateE911AddressResponse' {} a -> s {validationResult = a} :: ValidateE911AddressResponse)
+
+-- | The response's http status code.
+validateE911AddressResponse_httpStatus :: Lens.Lens' ValidateE911AddressResponse Prelude.Int
+validateE911AddressResponse_httpStatus = Lens.lens (\ValidateE911AddressResponse' {httpStatus} -> httpStatus) (\s@ValidateE911AddressResponse' {} a -> s {httpStatus = a} :: ValidateE911AddressResponse)
+
+instance Prelude.NFData ValidateE911AddressResponse where
+  rnf ValidateE911AddressResponse' {..} =
+    Prelude.rnf address
+      `Prelude.seq` Prelude.rnf addressExternalId
+      `Prelude.seq` Prelude.rnf candidateAddressList
+      `Prelude.seq` Prelude.rnf validationResult
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Chime/Waiters.hs b/gen/Amazonka/Chime/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Chime/Waiters.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE DisambiguateRecordFields #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Chime.Waiters
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Chime.Waiters where
+
+import Amazonka.Chime.Lens
+import Amazonka.Chime.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
diff --git a/src/.gitkeep b/src/.gitkeep
new file mode 100644
--- /dev/null
+++ b/src/.gitkeep
diff --git a/test/Main.hs b/test/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/Main.hs
@@ -0,0 +1,23 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Main
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Main (main) where
+
+import Test.Amazonka.Chime
+import Test.Amazonka.Chime.Internal
+import Test.Tasty
+
+main :: IO ()
+main =
+  defaultMain $
+    testGroup
+      "Chime"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/Amazonka/Chime.hs b/test/Test/Amazonka/Chime.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Chime.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.Chime
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Test.Amazonka.Chime
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/Chime/Internal.hs b/test/Test/Amazonka/Chime/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Chime/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.Chime.Internal
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Test.Amazonka.Chime.Internal where
diff --git a/test/Test/Amazonka/Gen/Chime.hs b/test/Test/Amazonka/Gen/Chime.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/Chime.hs
@@ -0,0 +1,3858 @@
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Test.Amazonka.Gen.Chime
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Test.Amazonka.Gen.Chime where
+
+import Amazonka.Chime
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.Chime.Internal
+import Test.Amazonka.Fixture
+import Test.Amazonka.Prelude
+import Test.Tasty
+
+-- Auto-generated: the actual test selection needs to be manually placed into
+-- the top-level so that real test data can be incrementally added.
+--
+-- This commented snippet is what the entire set should look like:
+
+-- fixtures :: TestTree
+-- fixtures =
+--     [ testGroup "request"
+--         [ requestAssociatePhoneNumberWithUser $
+--             newAssociatePhoneNumberWithUser
+--
+--         , requestAssociatePhoneNumbersWithVoiceConnector $
+--             newAssociatePhoneNumbersWithVoiceConnector
+--
+--         , requestAssociatePhoneNumbersWithVoiceConnectorGroup $
+--             newAssociatePhoneNumbersWithVoiceConnectorGroup
+--
+--         , requestAssociateSigninDelegateGroupsWithAccount $
+--             newAssociateSigninDelegateGroupsWithAccount
+--
+--         , requestBatchCreateAttendee $
+--             newBatchCreateAttendee
+--
+--         , requestBatchCreateChannelMembership $
+--             newBatchCreateChannelMembership
+--
+--         , requestBatchCreateRoomMembership $
+--             newBatchCreateRoomMembership
+--
+--         , requestBatchDeletePhoneNumber $
+--             newBatchDeletePhoneNumber
+--
+--         , requestBatchSuspendUser $
+--             newBatchSuspendUser
+--
+--         , requestBatchUnsuspendUser $
+--             newBatchUnsuspendUser
+--
+--         , requestBatchUpdatePhoneNumber $
+--             newBatchUpdatePhoneNumber
+--
+--         , requestBatchUpdateUser $
+--             newBatchUpdateUser
+--
+--         , requestCreateAccount $
+--             newCreateAccount
+--
+--         , requestCreateAppInstance $
+--             newCreateAppInstance
+--
+--         , requestCreateAppInstanceAdmin $
+--             newCreateAppInstanceAdmin
+--
+--         , requestCreateAppInstanceUser $
+--             newCreateAppInstanceUser
+--
+--         , requestCreateAttendee $
+--             newCreateAttendee
+--
+--         , requestCreateBot $
+--             newCreateBot
+--
+--         , requestCreateChannel $
+--             newCreateChannel
+--
+--         , requestCreateChannelBan $
+--             newCreateChannelBan
+--
+--         , requestCreateChannelMembership $
+--             newCreateChannelMembership
+--
+--         , requestCreateChannelModerator $
+--             newCreateChannelModerator
+--
+--         , requestCreateMediaCapturePipeline $
+--             newCreateMediaCapturePipeline
+--
+--         , requestCreateMeeting $
+--             newCreateMeeting
+--
+--         , requestCreateMeetingDialOut $
+--             newCreateMeetingDialOut
+--
+--         , requestCreateMeetingWithAttendees $
+--             newCreateMeetingWithAttendees
+--
+--         , requestCreatePhoneNumberOrder $
+--             newCreatePhoneNumberOrder
+--
+--         , requestCreateProxySession $
+--             newCreateProxySession
+--
+--         , requestCreateRoom $
+--             newCreateRoom
+--
+--         , requestCreateRoomMembership $
+--             newCreateRoomMembership
+--
+--         , requestCreateSipMediaApplication $
+--             newCreateSipMediaApplication
+--
+--         , requestCreateSipMediaApplicationCall $
+--             newCreateSipMediaApplicationCall
+--
+--         , requestCreateSipRule $
+--             newCreateSipRule
+--
+--         , requestCreateUser $
+--             newCreateUser
+--
+--         , requestCreateVoiceConnector $
+--             newCreateVoiceConnector
+--
+--         , requestCreateVoiceConnectorGroup $
+--             newCreateVoiceConnectorGroup
+--
+--         , requestDeleteAccount $
+--             newDeleteAccount
+--
+--         , requestDeleteAppInstance $
+--             newDeleteAppInstance
+--
+--         , requestDeleteAppInstanceAdmin $
+--             newDeleteAppInstanceAdmin
+--
+--         , requestDeleteAppInstanceStreamingConfigurations $
+--             newDeleteAppInstanceStreamingConfigurations
+--
+--         , requestDeleteAppInstanceUser $
+--             newDeleteAppInstanceUser
+--
+--         , requestDeleteAttendee $
+--             newDeleteAttendee
+--
+--         , requestDeleteChannel $
+--             newDeleteChannel
+--
+--         , requestDeleteChannelBan $
+--             newDeleteChannelBan
+--
+--         , requestDeleteChannelMembership $
+--             newDeleteChannelMembership
+--
+--         , requestDeleteChannelMessage $
+--             newDeleteChannelMessage
+--
+--         , requestDeleteChannelModerator $
+--             newDeleteChannelModerator
+--
+--         , requestDeleteEventsConfiguration $
+--             newDeleteEventsConfiguration
+--
+--         , requestDeleteMediaCapturePipeline $
+--             newDeleteMediaCapturePipeline
+--
+--         , requestDeleteMeeting $
+--             newDeleteMeeting
+--
+--         , requestDeletePhoneNumber $
+--             newDeletePhoneNumber
+--
+--         , requestDeleteProxySession $
+--             newDeleteProxySession
+--
+--         , requestDeleteRoom $
+--             newDeleteRoom
+--
+--         , requestDeleteRoomMembership $
+--             newDeleteRoomMembership
+--
+--         , requestDeleteSipMediaApplication $
+--             newDeleteSipMediaApplication
+--
+--         , requestDeleteSipRule $
+--             newDeleteSipRule
+--
+--         , requestDeleteVoiceConnector $
+--             newDeleteVoiceConnector
+--
+--         , requestDeleteVoiceConnectorEmergencyCallingConfiguration $
+--             newDeleteVoiceConnectorEmergencyCallingConfiguration
+--
+--         , requestDeleteVoiceConnectorGroup $
+--             newDeleteVoiceConnectorGroup
+--
+--         , requestDeleteVoiceConnectorOrigination $
+--             newDeleteVoiceConnectorOrigination
+--
+--         , requestDeleteVoiceConnectorProxy $
+--             newDeleteVoiceConnectorProxy
+--
+--         , requestDeleteVoiceConnectorStreamingConfiguration $
+--             newDeleteVoiceConnectorStreamingConfiguration
+--
+--         , requestDeleteVoiceConnectorTermination $
+--             newDeleteVoiceConnectorTermination
+--
+--         , requestDeleteVoiceConnectorTerminationCredentials $
+--             newDeleteVoiceConnectorTerminationCredentials
+--
+--         , requestDescribeAppInstance $
+--             newDescribeAppInstance
+--
+--         , requestDescribeAppInstanceAdmin $
+--             newDescribeAppInstanceAdmin
+--
+--         , requestDescribeAppInstanceUser $
+--             newDescribeAppInstanceUser
+--
+--         , requestDescribeChannel $
+--             newDescribeChannel
+--
+--         , requestDescribeChannelBan $
+--             newDescribeChannelBan
+--
+--         , requestDescribeChannelMembership $
+--             newDescribeChannelMembership
+--
+--         , requestDescribeChannelMembershipForAppInstanceUser $
+--             newDescribeChannelMembershipForAppInstanceUser
+--
+--         , requestDescribeChannelModeratedByAppInstanceUser $
+--             newDescribeChannelModeratedByAppInstanceUser
+--
+--         , requestDescribeChannelModerator $
+--             newDescribeChannelModerator
+--
+--         , requestDisassociatePhoneNumberFromUser $
+--             newDisassociatePhoneNumberFromUser
+--
+--         , requestDisassociatePhoneNumbersFromVoiceConnector $
+--             newDisassociatePhoneNumbersFromVoiceConnector
+--
+--         , requestDisassociatePhoneNumbersFromVoiceConnectorGroup $
+--             newDisassociatePhoneNumbersFromVoiceConnectorGroup
+--
+--         , requestDisassociateSigninDelegateGroupsFromAccount $
+--             newDisassociateSigninDelegateGroupsFromAccount
+--
+--         , requestGetAccount $
+--             newGetAccount
+--
+--         , requestGetAccountSettings $
+--             newGetAccountSettings
+--
+--         , requestGetAppInstanceRetentionSettings $
+--             newGetAppInstanceRetentionSettings
+--
+--         , requestGetAppInstanceStreamingConfigurations $
+--             newGetAppInstanceStreamingConfigurations
+--
+--         , requestGetAttendee $
+--             newGetAttendee
+--
+--         , requestGetBot $
+--             newGetBot
+--
+--         , requestGetChannelMessage $
+--             newGetChannelMessage
+--
+--         , requestGetEventsConfiguration $
+--             newGetEventsConfiguration
+--
+--         , requestGetGlobalSettings $
+--             newGetGlobalSettings
+--
+--         , requestGetMediaCapturePipeline $
+--             newGetMediaCapturePipeline
+--
+--         , requestGetMeeting $
+--             newGetMeeting
+--
+--         , requestGetMessagingSessionEndpoint $
+--             newGetMessagingSessionEndpoint
+--
+--         , requestGetPhoneNumber $
+--             newGetPhoneNumber
+--
+--         , requestGetPhoneNumberOrder $
+--             newGetPhoneNumberOrder
+--
+--         , requestGetPhoneNumberSettings $
+--             newGetPhoneNumberSettings
+--
+--         , requestGetProxySession $
+--             newGetProxySession
+--
+--         , requestGetRetentionSettings $
+--             newGetRetentionSettings
+--
+--         , requestGetRoom $
+--             newGetRoom
+--
+--         , requestGetSipMediaApplication $
+--             newGetSipMediaApplication
+--
+--         , requestGetSipMediaApplicationLoggingConfiguration $
+--             newGetSipMediaApplicationLoggingConfiguration
+--
+--         , requestGetSipRule $
+--             newGetSipRule
+--
+--         , requestGetUser $
+--             newGetUser
+--
+--         , requestGetUserSettings $
+--             newGetUserSettings
+--
+--         , requestGetVoiceConnector $
+--             newGetVoiceConnector
+--
+--         , requestGetVoiceConnectorEmergencyCallingConfiguration $
+--             newGetVoiceConnectorEmergencyCallingConfiguration
+--
+--         , requestGetVoiceConnectorGroup $
+--             newGetVoiceConnectorGroup
+--
+--         , requestGetVoiceConnectorLoggingConfiguration $
+--             newGetVoiceConnectorLoggingConfiguration
+--
+--         , requestGetVoiceConnectorOrigination $
+--             newGetVoiceConnectorOrigination
+--
+--         , requestGetVoiceConnectorProxy $
+--             newGetVoiceConnectorProxy
+--
+--         , requestGetVoiceConnectorStreamingConfiguration $
+--             newGetVoiceConnectorStreamingConfiguration
+--
+--         , requestGetVoiceConnectorTermination $
+--             newGetVoiceConnectorTermination
+--
+--         , requestGetVoiceConnectorTerminationHealth $
+--             newGetVoiceConnectorTerminationHealth
+--
+--         , requestInviteUsers $
+--             newInviteUsers
+--
+--         , requestListAccounts $
+--             newListAccounts
+--
+--         , requestListAppInstanceAdmins $
+--             newListAppInstanceAdmins
+--
+--         , requestListAppInstanceUsers $
+--             newListAppInstanceUsers
+--
+--         , requestListAppInstances $
+--             newListAppInstances
+--
+--         , requestListAttendeeTags $
+--             newListAttendeeTags
+--
+--         , requestListAttendees $
+--             newListAttendees
+--
+--         , requestListBots $
+--             newListBots
+--
+--         , requestListChannelBans $
+--             newListChannelBans
+--
+--         , requestListChannelMemberships $
+--             newListChannelMemberships
+--
+--         , requestListChannelMembershipsForAppInstanceUser $
+--             newListChannelMembershipsForAppInstanceUser
+--
+--         , requestListChannelMessages $
+--             newListChannelMessages
+--
+--         , requestListChannelModerators $
+--             newListChannelModerators
+--
+--         , requestListChannels $
+--             newListChannels
+--
+--         , requestListChannelsModeratedByAppInstanceUser $
+--             newListChannelsModeratedByAppInstanceUser
+--
+--         , requestListMediaCapturePipelines $
+--             newListMediaCapturePipelines
+--
+--         , requestListMeetingTags $
+--             newListMeetingTags
+--
+--         , requestListMeetings $
+--             newListMeetings
+--
+--         , requestListPhoneNumberOrders $
+--             newListPhoneNumberOrders
+--
+--         , requestListPhoneNumbers $
+--             newListPhoneNumbers
+--
+--         , requestListProxySessions $
+--             newListProxySessions
+--
+--         , requestListRoomMemberships $
+--             newListRoomMemberships
+--
+--         , requestListRooms $
+--             newListRooms
+--
+--         , requestListSipMediaApplications $
+--             newListSipMediaApplications
+--
+--         , requestListSipRules $
+--             newListSipRules
+--
+--         , requestListSupportedPhoneNumberCountries $
+--             newListSupportedPhoneNumberCountries
+--
+--         , requestListTagsForResource $
+--             newListTagsForResource
+--
+--         , requestListUsers $
+--             newListUsers
+--
+--         , requestListVoiceConnectorGroups $
+--             newListVoiceConnectorGroups
+--
+--         , requestListVoiceConnectorTerminationCredentials $
+--             newListVoiceConnectorTerminationCredentials
+--
+--         , requestListVoiceConnectors $
+--             newListVoiceConnectors
+--
+--         , requestLogoutUser $
+--             newLogoutUser
+--
+--         , requestPutAppInstanceRetentionSettings $
+--             newPutAppInstanceRetentionSettings
+--
+--         , requestPutAppInstanceStreamingConfigurations $
+--             newPutAppInstanceStreamingConfigurations
+--
+--         , requestPutEventsConfiguration $
+--             newPutEventsConfiguration
+--
+--         , requestPutRetentionSettings $
+--             newPutRetentionSettings
+--
+--         , requestPutSipMediaApplicationLoggingConfiguration $
+--             newPutSipMediaApplicationLoggingConfiguration
+--
+--         , requestPutVoiceConnectorEmergencyCallingConfiguration $
+--             newPutVoiceConnectorEmergencyCallingConfiguration
+--
+--         , requestPutVoiceConnectorLoggingConfiguration $
+--             newPutVoiceConnectorLoggingConfiguration
+--
+--         , requestPutVoiceConnectorOrigination $
+--             newPutVoiceConnectorOrigination
+--
+--         , requestPutVoiceConnectorProxy $
+--             newPutVoiceConnectorProxy
+--
+--         , requestPutVoiceConnectorStreamingConfiguration $
+--             newPutVoiceConnectorStreamingConfiguration
+--
+--         , requestPutVoiceConnectorTermination $
+--             newPutVoiceConnectorTermination
+--
+--         , requestPutVoiceConnectorTerminationCredentials $
+--             newPutVoiceConnectorTerminationCredentials
+--
+--         , requestRedactChannelMessage $
+--             newRedactChannelMessage
+--
+--         , requestRedactConversationMessage $
+--             newRedactConversationMessage
+--
+--         , requestRedactRoomMessage $
+--             newRedactRoomMessage
+--
+--         , requestRegenerateSecurityToken $
+--             newRegenerateSecurityToken
+--
+--         , requestResetPersonalPIN $
+--             newResetPersonalPIN
+--
+--         , requestRestorePhoneNumber $
+--             newRestorePhoneNumber
+--
+--         , requestSearchAvailablePhoneNumbers $
+--             newSearchAvailablePhoneNumbers
+--
+--         , requestSendChannelMessage $
+--             newSendChannelMessage
+--
+--         , requestStartMeetingTranscription $
+--             newStartMeetingTranscription
+--
+--         , requestStopMeetingTranscription $
+--             newStopMeetingTranscription
+--
+--         , requestTagAttendee $
+--             newTagAttendee
+--
+--         , requestTagMeeting $
+--             newTagMeeting
+--
+--         , requestTagResource $
+--             newTagResource
+--
+--         , requestUntagAttendee $
+--             newUntagAttendee
+--
+--         , requestUntagMeeting $
+--             newUntagMeeting
+--
+--         , requestUntagResource $
+--             newUntagResource
+--
+--         , requestUpdateAccount $
+--             newUpdateAccount
+--
+--         , requestUpdateAccountSettings $
+--             newUpdateAccountSettings
+--
+--         , requestUpdateAppInstance $
+--             newUpdateAppInstance
+--
+--         , requestUpdateAppInstanceUser $
+--             newUpdateAppInstanceUser
+--
+--         , requestUpdateBot $
+--             newUpdateBot
+--
+--         , requestUpdateChannel $
+--             newUpdateChannel
+--
+--         , requestUpdateChannelMessage $
+--             newUpdateChannelMessage
+--
+--         , requestUpdateChannelReadMarker $
+--             newUpdateChannelReadMarker
+--
+--         , requestUpdateGlobalSettings $
+--             newUpdateGlobalSettings
+--
+--         , requestUpdatePhoneNumber $
+--             newUpdatePhoneNumber
+--
+--         , requestUpdatePhoneNumberSettings $
+--             newUpdatePhoneNumberSettings
+--
+--         , requestUpdateProxySession $
+--             newUpdateProxySession
+--
+--         , requestUpdateRoom $
+--             newUpdateRoom
+--
+--         , requestUpdateRoomMembership $
+--             newUpdateRoomMembership
+--
+--         , requestUpdateSipMediaApplication $
+--             newUpdateSipMediaApplication
+--
+--         , requestUpdateSipMediaApplicationCall $
+--             newUpdateSipMediaApplicationCall
+--
+--         , requestUpdateSipRule $
+--             newUpdateSipRule
+--
+--         , requestUpdateUser $
+--             newUpdateUser
+--
+--         , requestUpdateUserSettings $
+--             newUpdateUserSettings
+--
+--         , requestUpdateVoiceConnector $
+--             newUpdateVoiceConnector
+--
+--         , requestUpdateVoiceConnectorGroup $
+--             newUpdateVoiceConnectorGroup
+--
+--         , requestValidateE911Address $
+--             newValidateE911Address
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseAssociatePhoneNumberWithUser $
+--             newAssociatePhoneNumberWithUserResponse
+--
+--         , responseAssociatePhoneNumbersWithVoiceConnector $
+--             newAssociatePhoneNumbersWithVoiceConnectorResponse
+--
+--         , responseAssociatePhoneNumbersWithVoiceConnectorGroup $
+--             newAssociatePhoneNumbersWithVoiceConnectorGroupResponse
+--
+--         , responseAssociateSigninDelegateGroupsWithAccount $
+--             newAssociateSigninDelegateGroupsWithAccountResponse
+--
+--         , responseBatchCreateAttendee $
+--             newBatchCreateAttendeeResponse
+--
+--         , responseBatchCreateChannelMembership $
+--             newBatchCreateChannelMembershipResponse
+--
+--         , responseBatchCreateRoomMembership $
+--             newBatchCreateRoomMembershipResponse
+--
+--         , responseBatchDeletePhoneNumber $
+--             newBatchDeletePhoneNumberResponse
+--
+--         , responseBatchSuspendUser $
+--             newBatchSuspendUserResponse
+--
+--         , responseBatchUnsuspendUser $
+--             newBatchUnsuspendUserResponse
+--
+--         , responseBatchUpdatePhoneNumber $
+--             newBatchUpdatePhoneNumberResponse
+--
+--         , responseBatchUpdateUser $
+--             newBatchUpdateUserResponse
+--
+--         , responseCreateAccount $
+--             newCreateAccountResponse
+--
+--         , responseCreateAppInstance $
+--             newCreateAppInstanceResponse
+--
+--         , responseCreateAppInstanceAdmin $
+--             newCreateAppInstanceAdminResponse
+--
+--         , responseCreateAppInstanceUser $
+--             newCreateAppInstanceUserResponse
+--
+--         , responseCreateAttendee $
+--             newCreateAttendeeResponse
+--
+--         , responseCreateBot $
+--             newCreateBotResponse
+--
+--         , responseCreateChannel $
+--             newCreateChannelResponse
+--
+--         , responseCreateChannelBan $
+--             newCreateChannelBanResponse
+--
+--         , responseCreateChannelMembership $
+--             newCreateChannelMembershipResponse
+--
+--         , responseCreateChannelModerator $
+--             newCreateChannelModeratorResponse
+--
+--         , responseCreateMediaCapturePipeline $
+--             newCreateMediaCapturePipelineResponse
+--
+--         , responseCreateMeeting $
+--             newCreateMeetingResponse
+--
+--         , responseCreateMeetingDialOut $
+--             newCreateMeetingDialOutResponse
+--
+--         , responseCreateMeetingWithAttendees $
+--             newCreateMeetingWithAttendeesResponse
+--
+--         , responseCreatePhoneNumberOrder $
+--             newCreatePhoneNumberOrderResponse
+--
+--         , responseCreateProxySession $
+--             newCreateProxySessionResponse
+--
+--         , responseCreateRoom $
+--             newCreateRoomResponse
+--
+--         , responseCreateRoomMembership $
+--             newCreateRoomMembershipResponse
+--
+--         , responseCreateSipMediaApplication $
+--             newCreateSipMediaApplicationResponse
+--
+--         , responseCreateSipMediaApplicationCall $
+--             newCreateSipMediaApplicationCallResponse
+--
+--         , responseCreateSipRule $
+--             newCreateSipRuleResponse
+--
+--         , responseCreateUser $
+--             newCreateUserResponse
+--
+--         , responseCreateVoiceConnector $
+--             newCreateVoiceConnectorResponse
+--
+--         , responseCreateVoiceConnectorGroup $
+--             newCreateVoiceConnectorGroupResponse
+--
+--         , responseDeleteAccount $
+--             newDeleteAccountResponse
+--
+--         , responseDeleteAppInstance $
+--             newDeleteAppInstanceResponse
+--
+--         , responseDeleteAppInstanceAdmin $
+--             newDeleteAppInstanceAdminResponse
+--
+--         , responseDeleteAppInstanceStreamingConfigurations $
+--             newDeleteAppInstanceStreamingConfigurationsResponse
+--
+--         , responseDeleteAppInstanceUser $
+--             newDeleteAppInstanceUserResponse
+--
+--         , responseDeleteAttendee $
+--             newDeleteAttendeeResponse
+--
+--         , responseDeleteChannel $
+--             newDeleteChannelResponse
+--
+--         , responseDeleteChannelBan $
+--             newDeleteChannelBanResponse
+--
+--         , responseDeleteChannelMembership $
+--             newDeleteChannelMembershipResponse
+--
+--         , responseDeleteChannelMessage $
+--             newDeleteChannelMessageResponse
+--
+--         , responseDeleteChannelModerator $
+--             newDeleteChannelModeratorResponse
+--
+--         , responseDeleteEventsConfiguration $
+--             newDeleteEventsConfigurationResponse
+--
+--         , responseDeleteMediaCapturePipeline $
+--             newDeleteMediaCapturePipelineResponse
+--
+--         , responseDeleteMeeting $
+--             newDeleteMeetingResponse
+--
+--         , responseDeletePhoneNumber $
+--             newDeletePhoneNumberResponse
+--
+--         , responseDeleteProxySession $
+--             newDeleteProxySessionResponse
+--
+--         , responseDeleteRoom $
+--             newDeleteRoomResponse
+--
+--         , responseDeleteRoomMembership $
+--             newDeleteRoomMembershipResponse
+--
+--         , responseDeleteSipMediaApplication $
+--             newDeleteSipMediaApplicationResponse
+--
+--         , responseDeleteSipRule $
+--             newDeleteSipRuleResponse
+--
+--         , responseDeleteVoiceConnector $
+--             newDeleteVoiceConnectorResponse
+--
+--         , responseDeleteVoiceConnectorEmergencyCallingConfiguration $
+--             newDeleteVoiceConnectorEmergencyCallingConfigurationResponse
+--
+--         , responseDeleteVoiceConnectorGroup $
+--             newDeleteVoiceConnectorGroupResponse
+--
+--         , responseDeleteVoiceConnectorOrigination $
+--             newDeleteVoiceConnectorOriginationResponse
+--
+--         , responseDeleteVoiceConnectorProxy $
+--             newDeleteVoiceConnectorProxyResponse
+--
+--         , responseDeleteVoiceConnectorStreamingConfiguration $
+--             newDeleteVoiceConnectorStreamingConfigurationResponse
+--
+--         , responseDeleteVoiceConnectorTermination $
+--             newDeleteVoiceConnectorTerminationResponse
+--
+--         , responseDeleteVoiceConnectorTerminationCredentials $
+--             newDeleteVoiceConnectorTerminationCredentialsResponse
+--
+--         , responseDescribeAppInstance $
+--             newDescribeAppInstanceResponse
+--
+--         , responseDescribeAppInstanceAdmin $
+--             newDescribeAppInstanceAdminResponse
+--
+--         , responseDescribeAppInstanceUser $
+--             newDescribeAppInstanceUserResponse
+--
+--         , responseDescribeChannel $
+--             newDescribeChannelResponse
+--
+--         , responseDescribeChannelBan $
+--             newDescribeChannelBanResponse
+--
+--         , responseDescribeChannelMembership $
+--             newDescribeChannelMembershipResponse
+--
+--         , responseDescribeChannelMembershipForAppInstanceUser $
+--             newDescribeChannelMembershipForAppInstanceUserResponse
+--
+--         , responseDescribeChannelModeratedByAppInstanceUser $
+--             newDescribeChannelModeratedByAppInstanceUserResponse
+--
+--         , responseDescribeChannelModerator $
+--             newDescribeChannelModeratorResponse
+--
+--         , responseDisassociatePhoneNumberFromUser $
+--             newDisassociatePhoneNumberFromUserResponse
+--
+--         , responseDisassociatePhoneNumbersFromVoiceConnector $
+--             newDisassociatePhoneNumbersFromVoiceConnectorResponse
+--
+--         , responseDisassociatePhoneNumbersFromVoiceConnectorGroup $
+--             newDisassociatePhoneNumbersFromVoiceConnectorGroupResponse
+--
+--         , responseDisassociateSigninDelegateGroupsFromAccount $
+--             newDisassociateSigninDelegateGroupsFromAccountResponse
+--
+--         , responseGetAccount $
+--             newGetAccountResponse
+--
+--         , responseGetAccountSettings $
+--             newGetAccountSettingsResponse
+--
+--         , responseGetAppInstanceRetentionSettings $
+--             newGetAppInstanceRetentionSettingsResponse
+--
+--         , responseGetAppInstanceStreamingConfigurations $
+--             newGetAppInstanceStreamingConfigurationsResponse
+--
+--         , responseGetAttendee $
+--             newGetAttendeeResponse
+--
+--         , responseGetBot $
+--             newGetBotResponse
+--
+--         , responseGetChannelMessage $
+--             newGetChannelMessageResponse
+--
+--         , responseGetEventsConfiguration $
+--             newGetEventsConfigurationResponse
+--
+--         , responseGetGlobalSettings $
+--             newGetGlobalSettingsResponse
+--
+--         , responseGetMediaCapturePipeline $
+--             newGetMediaCapturePipelineResponse
+--
+--         , responseGetMeeting $
+--             newGetMeetingResponse
+--
+--         , responseGetMessagingSessionEndpoint $
+--             newGetMessagingSessionEndpointResponse
+--
+--         , responseGetPhoneNumber $
+--             newGetPhoneNumberResponse
+--
+--         , responseGetPhoneNumberOrder $
+--             newGetPhoneNumberOrderResponse
+--
+--         , responseGetPhoneNumberSettings $
+--             newGetPhoneNumberSettingsResponse
+--
+--         , responseGetProxySession $
+--             newGetProxySessionResponse
+--
+--         , responseGetRetentionSettings $
+--             newGetRetentionSettingsResponse
+--
+--         , responseGetRoom $
+--             newGetRoomResponse
+--
+--         , responseGetSipMediaApplication $
+--             newGetSipMediaApplicationResponse
+--
+--         , responseGetSipMediaApplicationLoggingConfiguration $
+--             newGetSipMediaApplicationLoggingConfigurationResponse
+--
+--         , responseGetSipRule $
+--             newGetSipRuleResponse
+--
+--         , responseGetUser $
+--             newGetUserResponse
+--
+--         , responseGetUserSettings $
+--             newGetUserSettingsResponse
+--
+--         , responseGetVoiceConnector $
+--             newGetVoiceConnectorResponse
+--
+--         , responseGetVoiceConnectorEmergencyCallingConfiguration $
+--             newGetVoiceConnectorEmergencyCallingConfigurationResponse
+--
+--         , responseGetVoiceConnectorGroup $
+--             newGetVoiceConnectorGroupResponse
+--
+--         , responseGetVoiceConnectorLoggingConfiguration $
+--             newGetVoiceConnectorLoggingConfigurationResponse
+--
+--         , responseGetVoiceConnectorOrigination $
+--             newGetVoiceConnectorOriginationResponse
+--
+--         , responseGetVoiceConnectorProxy $
+--             newGetVoiceConnectorProxyResponse
+--
+--         , responseGetVoiceConnectorStreamingConfiguration $
+--             newGetVoiceConnectorStreamingConfigurationResponse
+--
+--         , responseGetVoiceConnectorTermination $
+--             newGetVoiceConnectorTerminationResponse
+--
+--         , responseGetVoiceConnectorTerminationHealth $
+--             newGetVoiceConnectorTerminationHealthResponse
+--
+--         , responseInviteUsers $
+--             newInviteUsersResponse
+--
+--         , responseListAccounts $
+--             newListAccountsResponse
+--
+--         , responseListAppInstanceAdmins $
+--             newListAppInstanceAdminsResponse
+--
+--         , responseListAppInstanceUsers $
+--             newListAppInstanceUsersResponse
+--
+--         , responseListAppInstances $
+--             newListAppInstancesResponse
+--
+--         , responseListAttendeeTags $
+--             newListAttendeeTagsResponse
+--
+--         , responseListAttendees $
+--             newListAttendeesResponse
+--
+--         , responseListBots $
+--             newListBotsResponse
+--
+--         , responseListChannelBans $
+--             newListChannelBansResponse
+--
+--         , responseListChannelMemberships $
+--             newListChannelMembershipsResponse
+--
+--         , responseListChannelMembershipsForAppInstanceUser $
+--             newListChannelMembershipsForAppInstanceUserResponse
+--
+--         , responseListChannelMessages $
+--             newListChannelMessagesResponse
+--
+--         , responseListChannelModerators $
+--             newListChannelModeratorsResponse
+--
+--         , responseListChannels $
+--             newListChannelsResponse
+--
+--         , responseListChannelsModeratedByAppInstanceUser $
+--             newListChannelsModeratedByAppInstanceUserResponse
+--
+--         , responseListMediaCapturePipelines $
+--             newListMediaCapturePipelinesResponse
+--
+--         , responseListMeetingTags $
+--             newListMeetingTagsResponse
+--
+--         , responseListMeetings $
+--             newListMeetingsResponse
+--
+--         , responseListPhoneNumberOrders $
+--             newListPhoneNumberOrdersResponse
+--
+--         , responseListPhoneNumbers $
+--             newListPhoneNumbersResponse
+--
+--         , responseListProxySessions $
+--             newListProxySessionsResponse
+--
+--         , responseListRoomMemberships $
+--             newListRoomMembershipsResponse
+--
+--         , responseListRooms $
+--             newListRoomsResponse
+--
+--         , responseListSipMediaApplications $
+--             newListSipMediaApplicationsResponse
+--
+--         , responseListSipRules $
+--             newListSipRulesResponse
+--
+--         , responseListSupportedPhoneNumberCountries $
+--             newListSupportedPhoneNumberCountriesResponse
+--
+--         , responseListTagsForResource $
+--             newListTagsForResourceResponse
+--
+--         , responseListUsers $
+--             newListUsersResponse
+--
+--         , responseListVoiceConnectorGroups $
+--             newListVoiceConnectorGroupsResponse
+--
+--         , responseListVoiceConnectorTerminationCredentials $
+--             newListVoiceConnectorTerminationCredentialsResponse
+--
+--         , responseListVoiceConnectors $
+--             newListVoiceConnectorsResponse
+--
+--         , responseLogoutUser $
+--             newLogoutUserResponse
+--
+--         , responsePutAppInstanceRetentionSettings $
+--             newPutAppInstanceRetentionSettingsResponse
+--
+--         , responsePutAppInstanceStreamingConfigurations $
+--             newPutAppInstanceStreamingConfigurationsResponse
+--
+--         , responsePutEventsConfiguration $
+--             newPutEventsConfigurationResponse
+--
+--         , responsePutRetentionSettings $
+--             newPutRetentionSettingsResponse
+--
+--         , responsePutSipMediaApplicationLoggingConfiguration $
+--             newPutSipMediaApplicationLoggingConfigurationResponse
+--
+--         , responsePutVoiceConnectorEmergencyCallingConfiguration $
+--             newPutVoiceConnectorEmergencyCallingConfigurationResponse
+--
+--         , responsePutVoiceConnectorLoggingConfiguration $
+--             newPutVoiceConnectorLoggingConfigurationResponse
+--
+--         , responsePutVoiceConnectorOrigination $
+--             newPutVoiceConnectorOriginationResponse
+--
+--         , responsePutVoiceConnectorProxy $
+--             newPutVoiceConnectorProxyResponse
+--
+--         , responsePutVoiceConnectorStreamingConfiguration $
+--             newPutVoiceConnectorStreamingConfigurationResponse
+--
+--         , responsePutVoiceConnectorTermination $
+--             newPutVoiceConnectorTerminationResponse
+--
+--         , responsePutVoiceConnectorTerminationCredentials $
+--             newPutVoiceConnectorTerminationCredentialsResponse
+--
+--         , responseRedactChannelMessage $
+--             newRedactChannelMessageResponse
+--
+--         , responseRedactConversationMessage $
+--             newRedactConversationMessageResponse
+--
+--         , responseRedactRoomMessage $
+--             newRedactRoomMessageResponse
+--
+--         , responseRegenerateSecurityToken $
+--             newRegenerateSecurityTokenResponse
+--
+--         , responseResetPersonalPIN $
+--             newResetPersonalPINResponse
+--
+--         , responseRestorePhoneNumber $
+--             newRestorePhoneNumberResponse
+--
+--         , responseSearchAvailablePhoneNumbers $
+--             newSearchAvailablePhoneNumbersResponse
+--
+--         , responseSendChannelMessage $
+--             newSendChannelMessageResponse
+--
+--         , responseStartMeetingTranscription $
+--             newStartMeetingTranscriptionResponse
+--
+--         , responseStopMeetingTranscription $
+--             newStopMeetingTranscriptionResponse
+--
+--         , responseTagAttendee $
+--             newTagAttendeeResponse
+--
+--         , responseTagMeeting $
+--             newTagMeetingResponse
+--
+--         , responseTagResource $
+--             newTagResourceResponse
+--
+--         , responseUntagAttendee $
+--             newUntagAttendeeResponse
+--
+--         , responseUntagMeeting $
+--             newUntagMeetingResponse
+--
+--         , responseUntagResource $
+--             newUntagResourceResponse
+--
+--         , responseUpdateAccount $
+--             newUpdateAccountResponse
+--
+--         , responseUpdateAccountSettings $
+--             newUpdateAccountSettingsResponse
+--
+--         , responseUpdateAppInstance $
+--             newUpdateAppInstanceResponse
+--
+--         , responseUpdateAppInstanceUser $
+--             newUpdateAppInstanceUserResponse
+--
+--         , responseUpdateBot $
+--             newUpdateBotResponse
+--
+--         , responseUpdateChannel $
+--             newUpdateChannelResponse
+--
+--         , responseUpdateChannelMessage $
+--             newUpdateChannelMessageResponse
+--
+--         , responseUpdateChannelReadMarker $
+--             newUpdateChannelReadMarkerResponse
+--
+--         , responseUpdateGlobalSettings $
+--             newUpdateGlobalSettingsResponse
+--
+--         , responseUpdatePhoneNumber $
+--             newUpdatePhoneNumberResponse
+--
+--         , responseUpdatePhoneNumberSettings $
+--             newUpdatePhoneNumberSettingsResponse
+--
+--         , responseUpdateProxySession $
+--             newUpdateProxySessionResponse
+--
+--         , responseUpdateRoom $
+--             newUpdateRoomResponse
+--
+--         , responseUpdateRoomMembership $
+--             newUpdateRoomMembershipResponse
+--
+--         , responseUpdateSipMediaApplication $
+--             newUpdateSipMediaApplicationResponse
+--
+--         , responseUpdateSipMediaApplicationCall $
+--             newUpdateSipMediaApplicationCallResponse
+--
+--         , responseUpdateSipRule $
+--             newUpdateSipRuleResponse
+--
+--         , responseUpdateUser $
+--             newUpdateUserResponse
+--
+--         , responseUpdateUserSettings $
+--             newUpdateUserSettingsResponse
+--
+--         , responseUpdateVoiceConnector $
+--             newUpdateVoiceConnectorResponse
+--
+--         , responseUpdateVoiceConnectorGroup $
+--             newUpdateVoiceConnectorGroupResponse
+--
+--         , responseValidateE911Address $
+--             newValidateE911AddressResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestAssociatePhoneNumberWithUser :: AssociatePhoneNumberWithUser -> TestTree
+requestAssociatePhoneNumberWithUser =
+  req
+    "AssociatePhoneNumberWithUser"
+    "fixture/AssociatePhoneNumberWithUser.yaml"
+
+requestAssociatePhoneNumbersWithVoiceConnector :: AssociatePhoneNumbersWithVoiceConnector -> TestTree
+requestAssociatePhoneNumbersWithVoiceConnector =
+  req
+    "AssociatePhoneNumbersWithVoiceConnector"
+    "fixture/AssociatePhoneNumbersWithVoiceConnector.yaml"
+
+requestAssociatePhoneNumbersWithVoiceConnectorGroup :: AssociatePhoneNumbersWithVoiceConnectorGroup -> TestTree
+requestAssociatePhoneNumbersWithVoiceConnectorGroup =
+  req
+    "AssociatePhoneNumbersWithVoiceConnectorGroup"
+    "fixture/AssociatePhoneNumbersWithVoiceConnectorGroup.yaml"
+
+requestAssociateSigninDelegateGroupsWithAccount :: AssociateSigninDelegateGroupsWithAccount -> TestTree
+requestAssociateSigninDelegateGroupsWithAccount =
+  req
+    "AssociateSigninDelegateGroupsWithAccount"
+    "fixture/AssociateSigninDelegateGroupsWithAccount.yaml"
+
+requestBatchCreateAttendee :: BatchCreateAttendee -> TestTree
+requestBatchCreateAttendee =
+  req
+    "BatchCreateAttendee"
+    "fixture/BatchCreateAttendee.yaml"
+
+requestBatchCreateChannelMembership :: BatchCreateChannelMembership -> TestTree
+requestBatchCreateChannelMembership =
+  req
+    "BatchCreateChannelMembership"
+    "fixture/BatchCreateChannelMembership.yaml"
+
+requestBatchCreateRoomMembership :: BatchCreateRoomMembership -> TestTree
+requestBatchCreateRoomMembership =
+  req
+    "BatchCreateRoomMembership"
+    "fixture/BatchCreateRoomMembership.yaml"
+
+requestBatchDeletePhoneNumber :: BatchDeletePhoneNumber -> TestTree
+requestBatchDeletePhoneNumber =
+  req
+    "BatchDeletePhoneNumber"
+    "fixture/BatchDeletePhoneNumber.yaml"
+
+requestBatchSuspendUser :: BatchSuspendUser -> TestTree
+requestBatchSuspendUser =
+  req
+    "BatchSuspendUser"
+    "fixture/BatchSuspendUser.yaml"
+
+requestBatchUnsuspendUser :: BatchUnsuspendUser -> TestTree
+requestBatchUnsuspendUser =
+  req
+    "BatchUnsuspendUser"
+    "fixture/BatchUnsuspendUser.yaml"
+
+requestBatchUpdatePhoneNumber :: BatchUpdatePhoneNumber -> TestTree
+requestBatchUpdatePhoneNumber =
+  req
+    "BatchUpdatePhoneNumber"
+    "fixture/BatchUpdatePhoneNumber.yaml"
+
+requestBatchUpdateUser :: BatchUpdateUser -> TestTree
+requestBatchUpdateUser =
+  req
+    "BatchUpdateUser"
+    "fixture/BatchUpdateUser.yaml"
+
+requestCreateAccount :: CreateAccount -> TestTree
+requestCreateAccount =
+  req
+    "CreateAccount"
+    "fixture/CreateAccount.yaml"
+
+requestCreateAppInstance :: CreateAppInstance -> TestTree
+requestCreateAppInstance =
+  req
+    "CreateAppInstance"
+    "fixture/CreateAppInstance.yaml"
+
+requestCreateAppInstanceAdmin :: CreateAppInstanceAdmin -> TestTree
+requestCreateAppInstanceAdmin =
+  req
+    "CreateAppInstanceAdmin"
+    "fixture/CreateAppInstanceAdmin.yaml"
+
+requestCreateAppInstanceUser :: CreateAppInstanceUser -> TestTree
+requestCreateAppInstanceUser =
+  req
+    "CreateAppInstanceUser"
+    "fixture/CreateAppInstanceUser.yaml"
+
+requestCreateAttendee :: CreateAttendee -> TestTree
+requestCreateAttendee =
+  req
+    "CreateAttendee"
+    "fixture/CreateAttendee.yaml"
+
+requestCreateBot :: CreateBot -> TestTree
+requestCreateBot =
+  req
+    "CreateBot"
+    "fixture/CreateBot.yaml"
+
+requestCreateChannel :: CreateChannel -> TestTree
+requestCreateChannel =
+  req
+    "CreateChannel"
+    "fixture/CreateChannel.yaml"
+
+requestCreateChannelBan :: CreateChannelBan -> TestTree
+requestCreateChannelBan =
+  req
+    "CreateChannelBan"
+    "fixture/CreateChannelBan.yaml"
+
+requestCreateChannelMembership :: CreateChannelMembership -> TestTree
+requestCreateChannelMembership =
+  req
+    "CreateChannelMembership"
+    "fixture/CreateChannelMembership.yaml"
+
+requestCreateChannelModerator :: CreateChannelModerator -> TestTree
+requestCreateChannelModerator =
+  req
+    "CreateChannelModerator"
+    "fixture/CreateChannelModerator.yaml"
+
+requestCreateMediaCapturePipeline :: CreateMediaCapturePipeline -> TestTree
+requestCreateMediaCapturePipeline =
+  req
+    "CreateMediaCapturePipeline"
+    "fixture/CreateMediaCapturePipeline.yaml"
+
+requestCreateMeeting :: CreateMeeting -> TestTree
+requestCreateMeeting =
+  req
+    "CreateMeeting"
+    "fixture/CreateMeeting.yaml"
+
+requestCreateMeetingDialOut :: CreateMeetingDialOut -> TestTree
+requestCreateMeetingDialOut =
+  req
+    "CreateMeetingDialOut"
+    "fixture/CreateMeetingDialOut.yaml"
+
+requestCreateMeetingWithAttendees :: CreateMeetingWithAttendees -> TestTree
+requestCreateMeetingWithAttendees =
+  req
+    "CreateMeetingWithAttendees"
+    "fixture/CreateMeetingWithAttendees.yaml"
+
+requestCreatePhoneNumberOrder :: CreatePhoneNumberOrder -> TestTree
+requestCreatePhoneNumberOrder =
+  req
+    "CreatePhoneNumberOrder"
+    "fixture/CreatePhoneNumberOrder.yaml"
+
+requestCreateProxySession :: CreateProxySession -> TestTree
+requestCreateProxySession =
+  req
+    "CreateProxySession"
+    "fixture/CreateProxySession.yaml"
+
+requestCreateRoom :: CreateRoom -> TestTree
+requestCreateRoom =
+  req
+    "CreateRoom"
+    "fixture/CreateRoom.yaml"
+
+requestCreateRoomMembership :: CreateRoomMembership -> TestTree
+requestCreateRoomMembership =
+  req
+    "CreateRoomMembership"
+    "fixture/CreateRoomMembership.yaml"
+
+requestCreateSipMediaApplication :: CreateSipMediaApplication -> TestTree
+requestCreateSipMediaApplication =
+  req
+    "CreateSipMediaApplication"
+    "fixture/CreateSipMediaApplication.yaml"
+
+requestCreateSipMediaApplicationCall :: CreateSipMediaApplicationCall -> TestTree
+requestCreateSipMediaApplicationCall =
+  req
+    "CreateSipMediaApplicationCall"
+    "fixture/CreateSipMediaApplicationCall.yaml"
+
+requestCreateSipRule :: CreateSipRule -> TestTree
+requestCreateSipRule =
+  req
+    "CreateSipRule"
+    "fixture/CreateSipRule.yaml"
+
+requestCreateUser :: CreateUser -> TestTree
+requestCreateUser =
+  req
+    "CreateUser"
+    "fixture/CreateUser.yaml"
+
+requestCreateVoiceConnector :: CreateVoiceConnector -> TestTree
+requestCreateVoiceConnector =
+  req
+    "CreateVoiceConnector"
+    "fixture/CreateVoiceConnector.yaml"
+
+requestCreateVoiceConnectorGroup :: CreateVoiceConnectorGroup -> TestTree
+requestCreateVoiceConnectorGroup =
+  req
+    "CreateVoiceConnectorGroup"
+    "fixture/CreateVoiceConnectorGroup.yaml"
+
+requestDeleteAccount :: DeleteAccount -> TestTree
+requestDeleteAccount =
+  req
+    "DeleteAccount"
+    "fixture/DeleteAccount.yaml"
+
+requestDeleteAppInstance :: DeleteAppInstance -> TestTree
+requestDeleteAppInstance =
+  req
+    "DeleteAppInstance"
+    "fixture/DeleteAppInstance.yaml"
+
+requestDeleteAppInstanceAdmin :: DeleteAppInstanceAdmin -> TestTree
+requestDeleteAppInstanceAdmin =
+  req
+    "DeleteAppInstanceAdmin"
+    "fixture/DeleteAppInstanceAdmin.yaml"
+
+requestDeleteAppInstanceStreamingConfigurations :: DeleteAppInstanceStreamingConfigurations -> TestTree
+requestDeleteAppInstanceStreamingConfigurations =
+  req
+    "DeleteAppInstanceStreamingConfigurations"
+    "fixture/DeleteAppInstanceStreamingConfigurations.yaml"
+
+requestDeleteAppInstanceUser :: DeleteAppInstanceUser -> TestTree
+requestDeleteAppInstanceUser =
+  req
+    "DeleteAppInstanceUser"
+    "fixture/DeleteAppInstanceUser.yaml"
+
+requestDeleteAttendee :: DeleteAttendee -> TestTree
+requestDeleteAttendee =
+  req
+    "DeleteAttendee"
+    "fixture/DeleteAttendee.yaml"
+
+requestDeleteChannel :: DeleteChannel -> TestTree
+requestDeleteChannel =
+  req
+    "DeleteChannel"
+    "fixture/DeleteChannel.yaml"
+
+requestDeleteChannelBan :: DeleteChannelBan -> TestTree
+requestDeleteChannelBan =
+  req
+    "DeleteChannelBan"
+    "fixture/DeleteChannelBan.yaml"
+
+requestDeleteChannelMembership :: DeleteChannelMembership -> TestTree
+requestDeleteChannelMembership =
+  req
+    "DeleteChannelMembership"
+    "fixture/DeleteChannelMembership.yaml"
+
+requestDeleteChannelMessage :: DeleteChannelMessage -> TestTree
+requestDeleteChannelMessage =
+  req
+    "DeleteChannelMessage"
+    "fixture/DeleteChannelMessage.yaml"
+
+requestDeleteChannelModerator :: DeleteChannelModerator -> TestTree
+requestDeleteChannelModerator =
+  req
+    "DeleteChannelModerator"
+    "fixture/DeleteChannelModerator.yaml"
+
+requestDeleteEventsConfiguration :: DeleteEventsConfiguration -> TestTree
+requestDeleteEventsConfiguration =
+  req
+    "DeleteEventsConfiguration"
+    "fixture/DeleteEventsConfiguration.yaml"
+
+requestDeleteMediaCapturePipeline :: DeleteMediaCapturePipeline -> TestTree
+requestDeleteMediaCapturePipeline =
+  req
+    "DeleteMediaCapturePipeline"
+    "fixture/DeleteMediaCapturePipeline.yaml"
+
+requestDeleteMeeting :: DeleteMeeting -> TestTree
+requestDeleteMeeting =
+  req
+    "DeleteMeeting"
+    "fixture/DeleteMeeting.yaml"
+
+requestDeletePhoneNumber :: DeletePhoneNumber -> TestTree
+requestDeletePhoneNumber =
+  req
+    "DeletePhoneNumber"
+    "fixture/DeletePhoneNumber.yaml"
+
+requestDeleteProxySession :: DeleteProxySession -> TestTree
+requestDeleteProxySession =
+  req
+    "DeleteProxySession"
+    "fixture/DeleteProxySession.yaml"
+
+requestDeleteRoom :: DeleteRoom -> TestTree
+requestDeleteRoom =
+  req
+    "DeleteRoom"
+    "fixture/DeleteRoom.yaml"
+
+requestDeleteRoomMembership :: DeleteRoomMembership -> TestTree
+requestDeleteRoomMembership =
+  req
+    "DeleteRoomMembership"
+    "fixture/DeleteRoomMembership.yaml"
+
+requestDeleteSipMediaApplication :: DeleteSipMediaApplication -> TestTree
+requestDeleteSipMediaApplication =
+  req
+    "DeleteSipMediaApplication"
+    "fixture/DeleteSipMediaApplication.yaml"
+
+requestDeleteSipRule :: DeleteSipRule -> TestTree
+requestDeleteSipRule =
+  req
+    "DeleteSipRule"
+    "fixture/DeleteSipRule.yaml"
+
+requestDeleteVoiceConnector :: DeleteVoiceConnector -> TestTree
+requestDeleteVoiceConnector =
+  req
+    "DeleteVoiceConnector"
+    "fixture/DeleteVoiceConnector.yaml"
+
+requestDeleteVoiceConnectorEmergencyCallingConfiguration :: DeleteVoiceConnectorEmergencyCallingConfiguration -> TestTree
+requestDeleteVoiceConnectorEmergencyCallingConfiguration =
+  req
+    "DeleteVoiceConnectorEmergencyCallingConfiguration"
+    "fixture/DeleteVoiceConnectorEmergencyCallingConfiguration.yaml"
+
+requestDeleteVoiceConnectorGroup :: DeleteVoiceConnectorGroup -> TestTree
+requestDeleteVoiceConnectorGroup =
+  req
+    "DeleteVoiceConnectorGroup"
+    "fixture/DeleteVoiceConnectorGroup.yaml"
+
+requestDeleteVoiceConnectorOrigination :: DeleteVoiceConnectorOrigination -> TestTree
+requestDeleteVoiceConnectorOrigination =
+  req
+    "DeleteVoiceConnectorOrigination"
+    "fixture/DeleteVoiceConnectorOrigination.yaml"
+
+requestDeleteVoiceConnectorProxy :: DeleteVoiceConnectorProxy -> TestTree
+requestDeleteVoiceConnectorProxy =
+  req
+    "DeleteVoiceConnectorProxy"
+    "fixture/DeleteVoiceConnectorProxy.yaml"
+
+requestDeleteVoiceConnectorStreamingConfiguration :: DeleteVoiceConnectorStreamingConfiguration -> TestTree
+requestDeleteVoiceConnectorStreamingConfiguration =
+  req
+    "DeleteVoiceConnectorStreamingConfiguration"
+    "fixture/DeleteVoiceConnectorStreamingConfiguration.yaml"
+
+requestDeleteVoiceConnectorTermination :: DeleteVoiceConnectorTermination -> TestTree
+requestDeleteVoiceConnectorTermination =
+  req
+    "DeleteVoiceConnectorTermination"
+    "fixture/DeleteVoiceConnectorTermination.yaml"
+
+requestDeleteVoiceConnectorTerminationCredentials :: DeleteVoiceConnectorTerminationCredentials -> TestTree
+requestDeleteVoiceConnectorTerminationCredentials =
+  req
+    "DeleteVoiceConnectorTerminationCredentials"
+    "fixture/DeleteVoiceConnectorTerminationCredentials.yaml"
+
+requestDescribeAppInstance :: DescribeAppInstance -> TestTree
+requestDescribeAppInstance =
+  req
+    "DescribeAppInstance"
+    "fixture/DescribeAppInstance.yaml"
+
+requestDescribeAppInstanceAdmin :: DescribeAppInstanceAdmin -> TestTree
+requestDescribeAppInstanceAdmin =
+  req
+    "DescribeAppInstanceAdmin"
+    "fixture/DescribeAppInstanceAdmin.yaml"
+
+requestDescribeAppInstanceUser :: DescribeAppInstanceUser -> TestTree
+requestDescribeAppInstanceUser =
+  req
+    "DescribeAppInstanceUser"
+    "fixture/DescribeAppInstanceUser.yaml"
+
+requestDescribeChannel :: DescribeChannel -> TestTree
+requestDescribeChannel =
+  req
+    "DescribeChannel"
+    "fixture/DescribeChannel.yaml"
+
+requestDescribeChannelBan :: DescribeChannelBan -> TestTree
+requestDescribeChannelBan =
+  req
+    "DescribeChannelBan"
+    "fixture/DescribeChannelBan.yaml"
+
+requestDescribeChannelMembership :: DescribeChannelMembership -> TestTree
+requestDescribeChannelMembership =
+  req
+    "DescribeChannelMembership"
+    "fixture/DescribeChannelMembership.yaml"
+
+requestDescribeChannelMembershipForAppInstanceUser :: DescribeChannelMembershipForAppInstanceUser -> TestTree
+requestDescribeChannelMembershipForAppInstanceUser =
+  req
+    "DescribeChannelMembershipForAppInstanceUser"
+    "fixture/DescribeChannelMembershipForAppInstanceUser.yaml"
+
+requestDescribeChannelModeratedByAppInstanceUser :: DescribeChannelModeratedByAppInstanceUser -> TestTree
+requestDescribeChannelModeratedByAppInstanceUser =
+  req
+    "DescribeChannelModeratedByAppInstanceUser"
+    "fixture/DescribeChannelModeratedByAppInstanceUser.yaml"
+
+requestDescribeChannelModerator :: DescribeChannelModerator -> TestTree
+requestDescribeChannelModerator =
+  req
+    "DescribeChannelModerator"
+    "fixture/DescribeChannelModerator.yaml"
+
+requestDisassociatePhoneNumberFromUser :: DisassociatePhoneNumberFromUser -> TestTree
+requestDisassociatePhoneNumberFromUser =
+  req
+    "DisassociatePhoneNumberFromUser"
+    "fixture/DisassociatePhoneNumberFromUser.yaml"
+
+requestDisassociatePhoneNumbersFromVoiceConnector :: DisassociatePhoneNumbersFromVoiceConnector -> TestTree
+requestDisassociatePhoneNumbersFromVoiceConnector =
+  req
+    "DisassociatePhoneNumbersFromVoiceConnector"
+    "fixture/DisassociatePhoneNumbersFromVoiceConnector.yaml"
+
+requestDisassociatePhoneNumbersFromVoiceConnectorGroup :: DisassociatePhoneNumbersFromVoiceConnectorGroup -> TestTree
+requestDisassociatePhoneNumbersFromVoiceConnectorGroup =
+  req
+    "DisassociatePhoneNumbersFromVoiceConnectorGroup"
+    "fixture/DisassociatePhoneNumbersFromVoiceConnectorGroup.yaml"
+
+requestDisassociateSigninDelegateGroupsFromAccount :: DisassociateSigninDelegateGroupsFromAccount -> TestTree
+requestDisassociateSigninDelegateGroupsFromAccount =
+  req
+    "DisassociateSigninDelegateGroupsFromAccount"
+    "fixture/DisassociateSigninDelegateGroupsFromAccount.yaml"
+
+requestGetAccount :: GetAccount -> TestTree
+requestGetAccount =
+  req
+    "GetAccount"
+    "fixture/GetAccount.yaml"
+
+requestGetAccountSettings :: GetAccountSettings -> TestTree
+requestGetAccountSettings =
+  req
+    "GetAccountSettings"
+    "fixture/GetAccountSettings.yaml"
+
+requestGetAppInstanceRetentionSettings :: GetAppInstanceRetentionSettings -> TestTree
+requestGetAppInstanceRetentionSettings =
+  req
+    "GetAppInstanceRetentionSettings"
+    "fixture/GetAppInstanceRetentionSettings.yaml"
+
+requestGetAppInstanceStreamingConfigurations :: GetAppInstanceStreamingConfigurations -> TestTree
+requestGetAppInstanceStreamingConfigurations =
+  req
+    "GetAppInstanceStreamingConfigurations"
+    "fixture/GetAppInstanceStreamingConfigurations.yaml"
+
+requestGetAttendee :: GetAttendee -> TestTree
+requestGetAttendee =
+  req
+    "GetAttendee"
+    "fixture/GetAttendee.yaml"
+
+requestGetBot :: GetBot -> TestTree
+requestGetBot =
+  req
+    "GetBot"
+    "fixture/GetBot.yaml"
+
+requestGetChannelMessage :: GetChannelMessage -> TestTree
+requestGetChannelMessage =
+  req
+    "GetChannelMessage"
+    "fixture/GetChannelMessage.yaml"
+
+requestGetEventsConfiguration :: GetEventsConfiguration -> TestTree
+requestGetEventsConfiguration =
+  req
+    "GetEventsConfiguration"
+    "fixture/GetEventsConfiguration.yaml"
+
+requestGetGlobalSettings :: GetGlobalSettings -> TestTree
+requestGetGlobalSettings =
+  req
+    "GetGlobalSettings"
+    "fixture/GetGlobalSettings.yaml"
+
+requestGetMediaCapturePipeline :: GetMediaCapturePipeline -> TestTree
+requestGetMediaCapturePipeline =
+  req
+    "GetMediaCapturePipeline"
+    "fixture/GetMediaCapturePipeline.yaml"
+
+requestGetMeeting :: GetMeeting -> TestTree
+requestGetMeeting =
+  req
+    "GetMeeting"
+    "fixture/GetMeeting.yaml"
+
+requestGetMessagingSessionEndpoint :: GetMessagingSessionEndpoint -> TestTree
+requestGetMessagingSessionEndpoint =
+  req
+    "GetMessagingSessionEndpoint"
+    "fixture/GetMessagingSessionEndpoint.yaml"
+
+requestGetPhoneNumber :: GetPhoneNumber -> TestTree
+requestGetPhoneNumber =
+  req
+    "GetPhoneNumber"
+    "fixture/GetPhoneNumber.yaml"
+
+requestGetPhoneNumberOrder :: GetPhoneNumberOrder -> TestTree
+requestGetPhoneNumberOrder =
+  req
+    "GetPhoneNumberOrder"
+    "fixture/GetPhoneNumberOrder.yaml"
+
+requestGetPhoneNumberSettings :: GetPhoneNumberSettings -> TestTree
+requestGetPhoneNumberSettings =
+  req
+    "GetPhoneNumberSettings"
+    "fixture/GetPhoneNumberSettings.yaml"
+
+requestGetProxySession :: GetProxySession -> TestTree
+requestGetProxySession =
+  req
+    "GetProxySession"
+    "fixture/GetProxySession.yaml"
+
+requestGetRetentionSettings :: GetRetentionSettings -> TestTree
+requestGetRetentionSettings =
+  req
+    "GetRetentionSettings"
+    "fixture/GetRetentionSettings.yaml"
+
+requestGetRoom :: GetRoom -> TestTree
+requestGetRoom =
+  req
+    "GetRoom"
+    "fixture/GetRoom.yaml"
+
+requestGetSipMediaApplication :: GetSipMediaApplication -> TestTree
+requestGetSipMediaApplication =
+  req
+    "GetSipMediaApplication"
+    "fixture/GetSipMediaApplication.yaml"
+
+requestGetSipMediaApplicationLoggingConfiguration :: GetSipMediaApplicationLoggingConfiguration -> TestTree
+requestGetSipMediaApplicationLoggingConfiguration =
+  req
+    "GetSipMediaApplicationLoggingConfiguration"
+    "fixture/GetSipMediaApplicationLoggingConfiguration.yaml"
+
+requestGetSipRule :: GetSipRule -> TestTree
+requestGetSipRule =
+  req
+    "GetSipRule"
+    "fixture/GetSipRule.yaml"
+
+requestGetUser :: GetUser -> TestTree
+requestGetUser =
+  req
+    "GetUser"
+    "fixture/GetUser.yaml"
+
+requestGetUserSettings :: GetUserSettings -> TestTree
+requestGetUserSettings =
+  req
+    "GetUserSettings"
+    "fixture/GetUserSettings.yaml"
+
+requestGetVoiceConnector :: GetVoiceConnector -> TestTree
+requestGetVoiceConnector =
+  req
+    "GetVoiceConnector"
+    "fixture/GetVoiceConnector.yaml"
+
+requestGetVoiceConnectorEmergencyCallingConfiguration :: GetVoiceConnectorEmergencyCallingConfiguration -> TestTree
+requestGetVoiceConnectorEmergencyCallingConfiguration =
+  req
+    "GetVoiceConnectorEmergencyCallingConfiguration"
+    "fixture/GetVoiceConnectorEmergencyCallingConfiguration.yaml"
+
+requestGetVoiceConnectorGroup :: GetVoiceConnectorGroup -> TestTree
+requestGetVoiceConnectorGroup =
+  req
+    "GetVoiceConnectorGroup"
+    "fixture/GetVoiceConnectorGroup.yaml"
+
+requestGetVoiceConnectorLoggingConfiguration :: GetVoiceConnectorLoggingConfiguration -> TestTree
+requestGetVoiceConnectorLoggingConfiguration =
+  req
+    "GetVoiceConnectorLoggingConfiguration"
+    "fixture/GetVoiceConnectorLoggingConfiguration.yaml"
+
+requestGetVoiceConnectorOrigination :: GetVoiceConnectorOrigination -> TestTree
+requestGetVoiceConnectorOrigination =
+  req
+    "GetVoiceConnectorOrigination"
+    "fixture/GetVoiceConnectorOrigination.yaml"
+
+requestGetVoiceConnectorProxy :: GetVoiceConnectorProxy -> TestTree
+requestGetVoiceConnectorProxy =
+  req
+    "GetVoiceConnectorProxy"
+    "fixture/GetVoiceConnectorProxy.yaml"
+
+requestGetVoiceConnectorStreamingConfiguration :: GetVoiceConnectorStreamingConfiguration -> TestTree
+requestGetVoiceConnectorStreamingConfiguration =
+  req
+    "GetVoiceConnectorStreamingConfiguration"
+    "fixture/GetVoiceConnectorStreamingConfiguration.yaml"
+
+requestGetVoiceConnectorTermination :: GetVoiceConnectorTermination -> TestTree
+requestGetVoiceConnectorTermination =
+  req
+    "GetVoiceConnectorTermination"
+    "fixture/GetVoiceConnectorTermination.yaml"
+
+requestGetVoiceConnectorTerminationHealth :: GetVoiceConnectorTerminationHealth -> TestTree
+requestGetVoiceConnectorTerminationHealth =
+  req
+    "GetVoiceConnectorTerminationHealth"
+    "fixture/GetVoiceConnectorTerminationHealth.yaml"
+
+requestInviteUsers :: InviteUsers -> TestTree
+requestInviteUsers =
+  req
+    "InviteUsers"
+    "fixture/InviteUsers.yaml"
+
+requestListAccounts :: ListAccounts -> TestTree
+requestListAccounts =
+  req
+    "ListAccounts"
+    "fixture/ListAccounts.yaml"
+
+requestListAppInstanceAdmins :: ListAppInstanceAdmins -> TestTree
+requestListAppInstanceAdmins =
+  req
+    "ListAppInstanceAdmins"
+    "fixture/ListAppInstanceAdmins.yaml"
+
+requestListAppInstanceUsers :: ListAppInstanceUsers -> TestTree
+requestListAppInstanceUsers =
+  req
+    "ListAppInstanceUsers"
+    "fixture/ListAppInstanceUsers.yaml"
+
+requestListAppInstances :: ListAppInstances -> TestTree
+requestListAppInstances =
+  req
+    "ListAppInstances"
+    "fixture/ListAppInstances.yaml"
+
+requestListAttendeeTags :: ListAttendeeTags -> TestTree
+requestListAttendeeTags =
+  req
+    "ListAttendeeTags"
+    "fixture/ListAttendeeTags.yaml"
+
+requestListAttendees :: ListAttendees -> TestTree
+requestListAttendees =
+  req
+    "ListAttendees"
+    "fixture/ListAttendees.yaml"
+
+requestListBots :: ListBots -> TestTree
+requestListBots =
+  req
+    "ListBots"
+    "fixture/ListBots.yaml"
+
+requestListChannelBans :: ListChannelBans -> TestTree
+requestListChannelBans =
+  req
+    "ListChannelBans"
+    "fixture/ListChannelBans.yaml"
+
+requestListChannelMemberships :: ListChannelMemberships -> TestTree
+requestListChannelMemberships =
+  req
+    "ListChannelMemberships"
+    "fixture/ListChannelMemberships.yaml"
+
+requestListChannelMembershipsForAppInstanceUser :: ListChannelMembershipsForAppInstanceUser -> TestTree
+requestListChannelMembershipsForAppInstanceUser =
+  req
+    "ListChannelMembershipsForAppInstanceUser"
+    "fixture/ListChannelMembershipsForAppInstanceUser.yaml"
+
+requestListChannelMessages :: ListChannelMessages -> TestTree
+requestListChannelMessages =
+  req
+    "ListChannelMessages"
+    "fixture/ListChannelMessages.yaml"
+
+requestListChannelModerators :: ListChannelModerators -> TestTree
+requestListChannelModerators =
+  req
+    "ListChannelModerators"
+    "fixture/ListChannelModerators.yaml"
+
+requestListChannels :: ListChannels -> TestTree
+requestListChannels =
+  req
+    "ListChannels"
+    "fixture/ListChannels.yaml"
+
+requestListChannelsModeratedByAppInstanceUser :: ListChannelsModeratedByAppInstanceUser -> TestTree
+requestListChannelsModeratedByAppInstanceUser =
+  req
+    "ListChannelsModeratedByAppInstanceUser"
+    "fixture/ListChannelsModeratedByAppInstanceUser.yaml"
+
+requestListMediaCapturePipelines :: ListMediaCapturePipelines -> TestTree
+requestListMediaCapturePipelines =
+  req
+    "ListMediaCapturePipelines"
+    "fixture/ListMediaCapturePipelines.yaml"
+
+requestListMeetingTags :: ListMeetingTags -> TestTree
+requestListMeetingTags =
+  req
+    "ListMeetingTags"
+    "fixture/ListMeetingTags.yaml"
+
+requestListMeetings :: ListMeetings -> TestTree
+requestListMeetings =
+  req
+    "ListMeetings"
+    "fixture/ListMeetings.yaml"
+
+requestListPhoneNumberOrders :: ListPhoneNumberOrders -> TestTree
+requestListPhoneNumberOrders =
+  req
+    "ListPhoneNumberOrders"
+    "fixture/ListPhoneNumberOrders.yaml"
+
+requestListPhoneNumbers :: ListPhoneNumbers -> TestTree
+requestListPhoneNumbers =
+  req
+    "ListPhoneNumbers"
+    "fixture/ListPhoneNumbers.yaml"
+
+requestListProxySessions :: ListProxySessions -> TestTree
+requestListProxySessions =
+  req
+    "ListProxySessions"
+    "fixture/ListProxySessions.yaml"
+
+requestListRoomMemberships :: ListRoomMemberships -> TestTree
+requestListRoomMemberships =
+  req
+    "ListRoomMemberships"
+    "fixture/ListRoomMemberships.yaml"
+
+requestListRooms :: ListRooms -> TestTree
+requestListRooms =
+  req
+    "ListRooms"
+    "fixture/ListRooms.yaml"
+
+requestListSipMediaApplications :: ListSipMediaApplications -> TestTree
+requestListSipMediaApplications =
+  req
+    "ListSipMediaApplications"
+    "fixture/ListSipMediaApplications.yaml"
+
+requestListSipRules :: ListSipRules -> TestTree
+requestListSipRules =
+  req
+    "ListSipRules"
+    "fixture/ListSipRules.yaml"
+
+requestListSupportedPhoneNumberCountries :: ListSupportedPhoneNumberCountries -> TestTree
+requestListSupportedPhoneNumberCountries =
+  req
+    "ListSupportedPhoneNumberCountries"
+    "fixture/ListSupportedPhoneNumberCountries.yaml"
+
+requestListTagsForResource :: ListTagsForResource -> TestTree
+requestListTagsForResource =
+  req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource.yaml"
+
+requestListUsers :: ListUsers -> TestTree
+requestListUsers =
+  req
+    "ListUsers"
+    "fixture/ListUsers.yaml"
+
+requestListVoiceConnectorGroups :: ListVoiceConnectorGroups -> TestTree
+requestListVoiceConnectorGroups =
+  req
+    "ListVoiceConnectorGroups"
+    "fixture/ListVoiceConnectorGroups.yaml"
+
+requestListVoiceConnectorTerminationCredentials :: ListVoiceConnectorTerminationCredentials -> TestTree
+requestListVoiceConnectorTerminationCredentials =
+  req
+    "ListVoiceConnectorTerminationCredentials"
+    "fixture/ListVoiceConnectorTerminationCredentials.yaml"
+
+requestListVoiceConnectors :: ListVoiceConnectors -> TestTree
+requestListVoiceConnectors =
+  req
+    "ListVoiceConnectors"
+    "fixture/ListVoiceConnectors.yaml"
+
+requestLogoutUser :: LogoutUser -> TestTree
+requestLogoutUser =
+  req
+    "LogoutUser"
+    "fixture/LogoutUser.yaml"
+
+requestPutAppInstanceRetentionSettings :: PutAppInstanceRetentionSettings -> TestTree
+requestPutAppInstanceRetentionSettings =
+  req
+    "PutAppInstanceRetentionSettings"
+    "fixture/PutAppInstanceRetentionSettings.yaml"
+
+requestPutAppInstanceStreamingConfigurations :: PutAppInstanceStreamingConfigurations -> TestTree
+requestPutAppInstanceStreamingConfigurations =
+  req
+    "PutAppInstanceStreamingConfigurations"
+    "fixture/PutAppInstanceStreamingConfigurations.yaml"
+
+requestPutEventsConfiguration :: PutEventsConfiguration -> TestTree
+requestPutEventsConfiguration =
+  req
+    "PutEventsConfiguration"
+    "fixture/PutEventsConfiguration.yaml"
+
+requestPutRetentionSettings :: PutRetentionSettings -> TestTree
+requestPutRetentionSettings =
+  req
+    "PutRetentionSettings"
+    "fixture/PutRetentionSettings.yaml"
+
+requestPutSipMediaApplicationLoggingConfiguration :: PutSipMediaApplicationLoggingConfiguration -> TestTree
+requestPutSipMediaApplicationLoggingConfiguration =
+  req
+    "PutSipMediaApplicationLoggingConfiguration"
+    "fixture/PutSipMediaApplicationLoggingConfiguration.yaml"
+
+requestPutVoiceConnectorEmergencyCallingConfiguration :: PutVoiceConnectorEmergencyCallingConfiguration -> TestTree
+requestPutVoiceConnectorEmergencyCallingConfiguration =
+  req
+    "PutVoiceConnectorEmergencyCallingConfiguration"
+    "fixture/PutVoiceConnectorEmergencyCallingConfiguration.yaml"
+
+requestPutVoiceConnectorLoggingConfiguration :: PutVoiceConnectorLoggingConfiguration -> TestTree
+requestPutVoiceConnectorLoggingConfiguration =
+  req
+    "PutVoiceConnectorLoggingConfiguration"
+    "fixture/PutVoiceConnectorLoggingConfiguration.yaml"
+
+requestPutVoiceConnectorOrigination :: PutVoiceConnectorOrigination -> TestTree
+requestPutVoiceConnectorOrigination =
+  req
+    "PutVoiceConnectorOrigination"
+    "fixture/PutVoiceConnectorOrigination.yaml"
+
+requestPutVoiceConnectorProxy :: PutVoiceConnectorProxy -> TestTree
+requestPutVoiceConnectorProxy =
+  req
+    "PutVoiceConnectorProxy"
+    "fixture/PutVoiceConnectorProxy.yaml"
+
+requestPutVoiceConnectorStreamingConfiguration :: PutVoiceConnectorStreamingConfiguration -> TestTree
+requestPutVoiceConnectorStreamingConfiguration =
+  req
+    "PutVoiceConnectorStreamingConfiguration"
+    "fixture/PutVoiceConnectorStreamingConfiguration.yaml"
+
+requestPutVoiceConnectorTermination :: PutVoiceConnectorTermination -> TestTree
+requestPutVoiceConnectorTermination =
+  req
+    "PutVoiceConnectorTermination"
+    "fixture/PutVoiceConnectorTermination.yaml"
+
+requestPutVoiceConnectorTerminationCredentials :: PutVoiceConnectorTerminationCredentials -> TestTree
+requestPutVoiceConnectorTerminationCredentials =
+  req
+    "PutVoiceConnectorTerminationCredentials"
+    "fixture/PutVoiceConnectorTerminationCredentials.yaml"
+
+requestRedactChannelMessage :: RedactChannelMessage -> TestTree
+requestRedactChannelMessage =
+  req
+    "RedactChannelMessage"
+    "fixture/RedactChannelMessage.yaml"
+
+requestRedactConversationMessage :: RedactConversationMessage -> TestTree
+requestRedactConversationMessage =
+  req
+    "RedactConversationMessage"
+    "fixture/RedactConversationMessage.yaml"
+
+requestRedactRoomMessage :: RedactRoomMessage -> TestTree
+requestRedactRoomMessage =
+  req
+    "RedactRoomMessage"
+    "fixture/RedactRoomMessage.yaml"
+
+requestRegenerateSecurityToken :: RegenerateSecurityToken -> TestTree
+requestRegenerateSecurityToken =
+  req
+    "RegenerateSecurityToken"
+    "fixture/RegenerateSecurityToken.yaml"
+
+requestResetPersonalPIN :: ResetPersonalPIN -> TestTree
+requestResetPersonalPIN =
+  req
+    "ResetPersonalPIN"
+    "fixture/ResetPersonalPIN.yaml"
+
+requestRestorePhoneNumber :: RestorePhoneNumber -> TestTree
+requestRestorePhoneNumber =
+  req
+    "RestorePhoneNumber"
+    "fixture/RestorePhoneNumber.yaml"
+
+requestSearchAvailablePhoneNumbers :: SearchAvailablePhoneNumbers -> TestTree
+requestSearchAvailablePhoneNumbers =
+  req
+    "SearchAvailablePhoneNumbers"
+    "fixture/SearchAvailablePhoneNumbers.yaml"
+
+requestSendChannelMessage :: SendChannelMessage -> TestTree
+requestSendChannelMessage =
+  req
+    "SendChannelMessage"
+    "fixture/SendChannelMessage.yaml"
+
+requestStartMeetingTranscription :: StartMeetingTranscription -> TestTree
+requestStartMeetingTranscription =
+  req
+    "StartMeetingTranscription"
+    "fixture/StartMeetingTranscription.yaml"
+
+requestStopMeetingTranscription :: StopMeetingTranscription -> TestTree
+requestStopMeetingTranscription =
+  req
+    "StopMeetingTranscription"
+    "fixture/StopMeetingTranscription.yaml"
+
+requestTagAttendee :: TagAttendee -> TestTree
+requestTagAttendee =
+  req
+    "TagAttendee"
+    "fixture/TagAttendee.yaml"
+
+requestTagMeeting :: TagMeeting -> TestTree
+requestTagMeeting =
+  req
+    "TagMeeting"
+    "fixture/TagMeeting.yaml"
+
+requestTagResource :: TagResource -> TestTree
+requestTagResource =
+  req
+    "TagResource"
+    "fixture/TagResource.yaml"
+
+requestUntagAttendee :: UntagAttendee -> TestTree
+requestUntagAttendee =
+  req
+    "UntagAttendee"
+    "fixture/UntagAttendee.yaml"
+
+requestUntagMeeting :: UntagMeeting -> TestTree
+requestUntagMeeting =
+  req
+    "UntagMeeting"
+    "fixture/UntagMeeting.yaml"
+
+requestUntagResource :: UntagResource -> TestTree
+requestUntagResource =
+  req
+    "UntagResource"
+    "fixture/UntagResource.yaml"
+
+requestUpdateAccount :: UpdateAccount -> TestTree
+requestUpdateAccount =
+  req
+    "UpdateAccount"
+    "fixture/UpdateAccount.yaml"
+
+requestUpdateAccountSettings :: UpdateAccountSettings -> TestTree
+requestUpdateAccountSettings =
+  req
+    "UpdateAccountSettings"
+    "fixture/UpdateAccountSettings.yaml"
+
+requestUpdateAppInstance :: UpdateAppInstance -> TestTree
+requestUpdateAppInstance =
+  req
+    "UpdateAppInstance"
+    "fixture/UpdateAppInstance.yaml"
+
+requestUpdateAppInstanceUser :: UpdateAppInstanceUser -> TestTree
+requestUpdateAppInstanceUser =
+  req
+    "UpdateAppInstanceUser"
+    "fixture/UpdateAppInstanceUser.yaml"
+
+requestUpdateBot :: UpdateBot -> TestTree
+requestUpdateBot =
+  req
+    "UpdateBot"
+    "fixture/UpdateBot.yaml"
+
+requestUpdateChannel :: UpdateChannel -> TestTree
+requestUpdateChannel =
+  req
+    "UpdateChannel"
+    "fixture/UpdateChannel.yaml"
+
+requestUpdateChannelMessage :: UpdateChannelMessage -> TestTree
+requestUpdateChannelMessage =
+  req
+    "UpdateChannelMessage"
+    "fixture/UpdateChannelMessage.yaml"
+
+requestUpdateChannelReadMarker :: UpdateChannelReadMarker -> TestTree
+requestUpdateChannelReadMarker =
+  req
+    "UpdateChannelReadMarker"
+    "fixture/UpdateChannelReadMarker.yaml"
+
+requestUpdateGlobalSettings :: UpdateGlobalSettings -> TestTree
+requestUpdateGlobalSettings =
+  req
+    "UpdateGlobalSettings"
+    "fixture/UpdateGlobalSettings.yaml"
+
+requestUpdatePhoneNumber :: UpdatePhoneNumber -> TestTree
+requestUpdatePhoneNumber =
+  req
+    "UpdatePhoneNumber"
+    "fixture/UpdatePhoneNumber.yaml"
+
+requestUpdatePhoneNumberSettings :: UpdatePhoneNumberSettings -> TestTree
+requestUpdatePhoneNumberSettings =
+  req
+    "UpdatePhoneNumberSettings"
+    "fixture/UpdatePhoneNumberSettings.yaml"
+
+requestUpdateProxySession :: UpdateProxySession -> TestTree
+requestUpdateProxySession =
+  req
+    "UpdateProxySession"
+    "fixture/UpdateProxySession.yaml"
+
+requestUpdateRoom :: UpdateRoom -> TestTree
+requestUpdateRoom =
+  req
+    "UpdateRoom"
+    "fixture/UpdateRoom.yaml"
+
+requestUpdateRoomMembership :: UpdateRoomMembership -> TestTree
+requestUpdateRoomMembership =
+  req
+    "UpdateRoomMembership"
+    "fixture/UpdateRoomMembership.yaml"
+
+requestUpdateSipMediaApplication :: UpdateSipMediaApplication -> TestTree
+requestUpdateSipMediaApplication =
+  req
+    "UpdateSipMediaApplication"
+    "fixture/UpdateSipMediaApplication.yaml"
+
+requestUpdateSipMediaApplicationCall :: UpdateSipMediaApplicationCall -> TestTree
+requestUpdateSipMediaApplicationCall =
+  req
+    "UpdateSipMediaApplicationCall"
+    "fixture/UpdateSipMediaApplicationCall.yaml"
+
+requestUpdateSipRule :: UpdateSipRule -> TestTree
+requestUpdateSipRule =
+  req
+    "UpdateSipRule"
+    "fixture/UpdateSipRule.yaml"
+
+requestUpdateUser :: UpdateUser -> TestTree
+requestUpdateUser =
+  req
+    "UpdateUser"
+    "fixture/UpdateUser.yaml"
+
+requestUpdateUserSettings :: UpdateUserSettings -> TestTree
+requestUpdateUserSettings =
+  req
+    "UpdateUserSettings"
+    "fixture/UpdateUserSettings.yaml"
+
+requestUpdateVoiceConnector :: UpdateVoiceConnector -> TestTree
+requestUpdateVoiceConnector =
+  req
+    "UpdateVoiceConnector"
+    "fixture/UpdateVoiceConnector.yaml"
+
+requestUpdateVoiceConnectorGroup :: UpdateVoiceConnectorGroup -> TestTree
+requestUpdateVoiceConnectorGroup =
+  req
+    "UpdateVoiceConnectorGroup"
+    "fixture/UpdateVoiceConnectorGroup.yaml"
+
+requestValidateE911Address :: ValidateE911Address -> TestTree
+requestValidateE911Address =
+  req
+    "ValidateE911Address"
+    "fixture/ValidateE911Address.yaml"
+
+-- Responses
+
+responseAssociatePhoneNumberWithUser :: AssociatePhoneNumberWithUserResponse -> TestTree
+responseAssociatePhoneNumberWithUser =
+  res
+    "AssociatePhoneNumberWithUserResponse"
+    "fixture/AssociatePhoneNumberWithUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AssociatePhoneNumberWithUser)
+
+responseAssociatePhoneNumbersWithVoiceConnector :: AssociatePhoneNumbersWithVoiceConnectorResponse -> TestTree
+responseAssociatePhoneNumbersWithVoiceConnector =
+  res
+    "AssociatePhoneNumbersWithVoiceConnectorResponse"
+    "fixture/AssociatePhoneNumbersWithVoiceConnectorResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AssociatePhoneNumbersWithVoiceConnector)
+
+responseAssociatePhoneNumbersWithVoiceConnectorGroup :: AssociatePhoneNumbersWithVoiceConnectorGroupResponse -> TestTree
+responseAssociatePhoneNumbersWithVoiceConnectorGroup =
+  res
+    "AssociatePhoneNumbersWithVoiceConnectorGroupResponse"
+    "fixture/AssociatePhoneNumbersWithVoiceConnectorGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AssociatePhoneNumbersWithVoiceConnectorGroup)
+
+responseAssociateSigninDelegateGroupsWithAccount :: AssociateSigninDelegateGroupsWithAccountResponse -> TestTree
+responseAssociateSigninDelegateGroupsWithAccount =
+  res
+    "AssociateSigninDelegateGroupsWithAccountResponse"
+    "fixture/AssociateSigninDelegateGroupsWithAccountResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AssociateSigninDelegateGroupsWithAccount)
+
+responseBatchCreateAttendee :: BatchCreateAttendeeResponse -> TestTree
+responseBatchCreateAttendee =
+  res
+    "BatchCreateAttendeeResponse"
+    "fixture/BatchCreateAttendeeResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy BatchCreateAttendee)
+
+responseBatchCreateChannelMembership :: BatchCreateChannelMembershipResponse -> TestTree
+responseBatchCreateChannelMembership =
+  res
+    "BatchCreateChannelMembershipResponse"
+    "fixture/BatchCreateChannelMembershipResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy BatchCreateChannelMembership)
+
+responseBatchCreateRoomMembership :: BatchCreateRoomMembershipResponse -> TestTree
+responseBatchCreateRoomMembership =
+  res
+    "BatchCreateRoomMembershipResponse"
+    "fixture/BatchCreateRoomMembershipResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy BatchCreateRoomMembership)
+
+responseBatchDeletePhoneNumber :: BatchDeletePhoneNumberResponse -> TestTree
+responseBatchDeletePhoneNumber =
+  res
+    "BatchDeletePhoneNumberResponse"
+    "fixture/BatchDeletePhoneNumberResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy BatchDeletePhoneNumber)
+
+responseBatchSuspendUser :: BatchSuspendUserResponse -> TestTree
+responseBatchSuspendUser =
+  res
+    "BatchSuspendUserResponse"
+    "fixture/BatchSuspendUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy BatchSuspendUser)
+
+responseBatchUnsuspendUser :: BatchUnsuspendUserResponse -> TestTree
+responseBatchUnsuspendUser =
+  res
+    "BatchUnsuspendUserResponse"
+    "fixture/BatchUnsuspendUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy BatchUnsuspendUser)
+
+responseBatchUpdatePhoneNumber :: BatchUpdatePhoneNumberResponse -> TestTree
+responseBatchUpdatePhoneNumber =
+  res
+    "BatchUpdatePhoneNumberResponse"
+    "fixture/BatchUpdatePhoneNumberResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy BatchUpdatePhoneNumber)
+
+responseBatchUpdateUser :: BatchUpdateUserResponse -> TestTree
+responseBatchUpdateUser =
+  res
+    "BatchUpdateUserResponse"
+    "fixture/BatchUpdateUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy BatchUpdateUser)
+
+responseCreateAccount :: CreateAccountResponse -> TestTree
+responseCreateAccount =
+  res
+    "CreateAccountResponse"
+    "fixture/CreateAccountResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateAccount)
+
+responseCreateAppInstance :: CreateAppInstanceResponse -> TestTree
+responseCreateAppInstance =
+  res
+    "CreateAppInstanceResponse"
+    "fixture/CreateAppInstanceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateAppInstance)
+
+responseCreateAppInstanceAdmin :: CreateAppInstanceAdminResponse -> TestTree
+responseCreateAppInstanceAdmin =
+  res
+    "CreateAppInstanceAdminResponse"
+    "fixture/CreateAppInstanceAdminResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateAppInstanceAdmin)
+
+responseCreateAppInstanceUser :: CreateAppInstanceUserResponse -> TestTree
+responseCreateAppInstanceUser =
+  res
+    "CreateAppInstanceUserResponse"
+    "fixture/CreateAppInstanceUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateAppInstanceUser)
+
+responseCreateAttendee :: CreateAttendeeResponse -> TestTree
+responseCreateAttendee =
+  res
+    "CreateAttendeeResponse"
+    "fixture/CreateAttendeeResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateAttendee)
+
+responseCreateBot :: CreateBotResponse -> TestTree
+responseCreateBot =
+  res
+    "CreateBotResponse"
+    "fixture/CreateBotResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateBot)
+
+responseCreateChannel :: CreateChannelResponse -> TestTree
+responseCreateChannel =
+  res
+    "CreateChannelResponse"
+    "fixture/CreateChannelResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateChannel)
+
+responseCreateChannelBan :: CreateChannelBanResponse -> TestTree
+responseCreateChannelBan =
+  res
+    "CreateChannelBanResponse"
+    "fixture/CreateChannelBanResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateChannelBan)
+
+responseCreateChannelMembership :: CreateChannelMembershipResponse -> TestTree
+responseCreateChannelMembership =
+  res
+    "CreateChannelMembershipResponse"
+    "fixture/CreateChannelMembershipResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateChannelMembership)
+
+responseCreateChannelModerator :: CreateChannelModeratorResponse -> TestTree
+responseCreateChannelModerator =
+  res
+    "CreateChannelModeratorResponse"
+    "fixture/CreateChannelModeratorResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateChannelModerator)
+
+responseCreateMediaCapturePipeline :: CreateMediaCapturePipelineResponse -> TestTree
+responseCreateMediaCapturePipeline =
+  res
+    "CreateMediaCapturePipelineResponse"
+    "fixture/CreateMediaCapturePipelineResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateMediaCapturePipeline)
+
+responseCreateMeeting :: CreateMeetingResponse -> TestTree
+responseCreateMeeting =
+  res
+    "CreateMeetingResponse"
+    "fixture/CreateMeetingResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateMeeting)
+
+responseCreateMeetingDialOut :: CreateMeetingDialOutResponse -> TestTree
+responseCreateMeetingDialOut =
+  res
+    "CreateMeetingDialOutResponse"
+    "fixture/CreateMeetingDialOutResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateMeetingDialOut)
+
+responseCreateMeetingWithAttendees :: CreateMeetingWithAttendeesResponse -> TestTree
+responseCreateMeetingWithAttendees =
+  res
+    "CreateMeetingWithAttendeesResponse"
+    "fixture/CreateMeetingWithAttendeesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateMeetingWithAttendees)
+
+responseCreatePhoneNumberOrder :: CreatePhoneNumberOrderResponse -> TestTree
+responseCreatePhoneNumberOrder =
+  res
+    "CreatePhoneNumberOrderResponse"
+    "fixture/CreatePhoneNumberOrderResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreatePhoneNumberOrder)
+
+responseCreateProxySession :: CreateProxySessionResponse -> TestTree
+responseCreateProxySession =
+  res
+    "CreateProxySessionResponse"
+    "fixture/CreateProxySessionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateProxySession)
+
+responseCreateRoom :: CreateRoomResponse -> TestTree
+responseCreateRoom =
+  res
+    "CreateRoomResponse"
+    "fixture/CreateRoomResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateRoom)
+
+responseCreateRoomMembership :: CreateRoomMembershipResponse -> TestTree
+responseCreateRoomMembership =
+  res
+    "CreateRoomMembershipResponse"
+    "fixture/CreateRoomMembershipResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateRoomMembership)
+
+responseCreateSipMediaApplication :: CreateSipMediaApplicationResponse -> TestTree
+responseCreateSipMediaApplication =
+  res
+    "CreateSipMediaApplicationResponse"
+    "fixture/CreateSipMediaApplicationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateSipMediaApplication)
+
+responseCreateSipMediaApplicationCall :: CreateSipMediaApplicationCallResponse -> TestTree
+responseCreateSipMediaApplicationCall =
+  res
+    "CreateSipMediaApplicationCallResponse"
+    "fixture/CreateSipMediaApplicationCallResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateSipMediaApplicationCall)
+
+responseCreateSipRule :: CreateSipRuleResponse -> TestTree
+responseCreateSipRule =
+  res
+    "CreateSipRuleResponse"
+    "fixture/CreateSipRuleResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateSipRule)
+
+responseCreateUser :: CreateUserResponse -> TestTree
+responseCreateUser =
+  res
+    "CreateUserResponse"
+    "fixture/CreateUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateUser)
+
+responseCreateVoiceConnector :: CreateVoiceConnectorResponse -> TestTree
+responseCreateVoiceConnector =
+  res
+    "CreateVoiceConnectorResponse"
+    "fixture/CreateVoiceConnectorResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateVoiceConnector)
+
+responseCreateVoiceConnectorGroup :: CreateVoiceConnectorGroupResponse -> TestTree
+responseCreateVoiceConnectorGroup =
+  res
+    "CreateVoiceConnectorGroupResponse"
+    "fixture/CreateVoiceConnectorGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateVoiceConnectorGroup)
+
+responseDeleteAccount :: DeleteAccountResponse -> TestTree
+responseDeleteAccount =
+  res
+    "DeleteAccountResponse"
+    "fixture/DeleteAccountResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteAccount)
+
+responseDeleteAppInstance :: DeleteAppInstanceResponse -> TestTree
+responseDeleteAppInstance =
+  res
+    "DeleteAppInstanceResponse"
+    "fixture/DeleteAppInstanceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteAppInstance)
+
+responseDeleteAppInstanceAdmin :: DeleteAppInstanceAdminResponse -> TestTree
+responseDeleteAppInstanceAdmin =
+  res
+    "DeleteAppInstanceAdminResponse"
+    "fixture/DeleteAppInstanceAdminResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteAppInstanceAdmin)
+
+responseDeleteAppInstanceStreamingConfigurations :: DeleteAppInstanceStreamingConfigurationsResponse -> TestTree
+responseDeleteAppInstanceStreamingConfigurations =
+  res
+    "DeleteAppInstanceStreamingConfigurationsResponse"
+    "fixture/DeleteAppInstanceStreamingConfigurationsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteAppInstanceStreamingConfigurations)
+
+responseDeleteAppInstanceUser :: DeleteAppInstanceUserResponse -> TestTree
+responseDeleteAppInstanceUser =
+  res
+    "DeleteAppInstanceUserResponse"
+    "fixture/DeleteAppInstanceUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteAppInstanceUser)
+
+responseDeleteAttendee :: DeleteAttendeeResponse -> TestTree
+responseDeleteAttendee =
+  res
+    "DeleteAttendeeResponse"
+    "fixture/DeleteAttendeeResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteAttendee)
+
+responseDeleteChannel :: DeleteChannelResponse -> TestTree
+responseDeleteChannel =
+  res
+    "DeleteChannelResponse"
+    "fixture/DeleteChannelResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteChannel)
+
+responseDeleteChannelBan :: DeleteChannelBanResponse -> TestTree
+responseDeleteChannelBan =
+  res
+    "DeleteChannelBanResponse"
+    "fixture/DeleteChannelBanResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteChannelBan)
+
+responseDeleteChannelMembership :: DeleteChannelMembershipResponse -> TestTree
+responseDeleteChannelMembership =
+  res
+    "DeleteChannelMembershipResponse"
+    "fixture/DeleteChannelMembershipResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteChannelMembership)
+
+responseDeleteChannelMessage :: DeleteChannelMessageResponse -> TestTree
+responseDeleteChannelMessage =
+  res
+    "DeleteChannelMessageResponse"
+    "fixture/DeleteChannelMessageResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteChannelMessage)
+
+responseDeleteChannelModerator :: DeleteChannelModeratorResponse -> TestTree
+responseDeleteChannelModerator =
+  res
+    "DeleteChannelModeratorResponse"
+    "fixture/DeleteChannelModeratorResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteChannelModerator)
+
+responseDeleteEventsConfiguration :: DeleteEventsConfigurationResponse -> TestTree
+responseDeleteEventsConfiguration =
+  res
+    "DeleteEventsConfigurationResponse"
+    "fixture/DeleteEventsConfigurationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteEventsConfiguration)
+
+responseDeleteMediaCapturePipeline :: DeleteMediaCapturePipelineResponse -> TestTree
+responseDeleteMediaCapturePipeline =
+  res
+    "DeleteMediaCapturePipelineResponse"
+    "fixture/DeleteMediaCapturePipelineResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteMediaCapturePipeline)
+
+responseDeleteMeeting :: DeleteMeetingResponse -> TestTree
+responseDeleteMeeting =
+  res
+    "DeleteMeetingResponse"
+    "fixture/DeleteMeetingResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteMeeting)
+
+responseDeletePhoneNumber :: DeletePhoneNumberResponse -> TestTree
+responseDeletePhoneNumber =
+  res
+    "DeletePhoneNumberResponse"
+    "fixture/DeletePhoneNumberResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeletePhoneNumber)
+
+responseDeleteProxySession :: DeleteProxySessionResponse -> TestTree
+responseDeleteProxySession =
+  res
+    "DeleteProxySessionResponse"
+    "fixture/DeleteProxySessionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteProxySession)
+
+responseDeleteRoom :: DeleteRoomResponse -> TestTree
+responseDeleteRoom =
+  res
+    "DeleteRoomResponse"
+    "fixture/DeleteRoomResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteRoom)
+
+responseDeleteRoomMembership :: DeleteRoomMembershipResponse -> TestTree
+responseDeleteRoomMembership =
+  res
+    "DeleteRoomMembershipResponse"
+    "fixture/DeleteRoomMembershipResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteRoomMembership)
+
+responseDeleteSipMediaApplication :: DeleteSipMediaApplicationResponse -> TestTree
+responseDeleteSipMediaApplication =
+  res
+    "DeleteSipMediaApplicationResponse"
+    "fixture/DeleteSipMediaApplicationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteSipMediaApplication)
+
+responseDeleteSipRule :: DeleteSipRuleResponse -> TestTree
+responseDeleteSipRule =
+  res
+    "DeleteSipRuleResponse"
+    "fixture/DeleteSipRuleResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteSipRule)
+
+responseDeleteVoiceConnector :: DeleteVoiceConnectorResponse -> TestTree
+responseDeleteVoiceConnector =
+  res
+    "DeleteVoiceConnectorResponse"
+    "fixture/DeleteVoiceConnectorResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteVoiceConnector)
+
+responseDeleteVoiceConnectorEmergencyCallingConfiguration :: DeleteVoiceConnectorEmergencyCallingConfigurationResponse -> TestTree
+responseDeleteVoiceConnectorEmergencyCallingConfiguration =
+  res
+    "DeleteVoiceConnectorEmergencyCallingConfigurationResponse"
+    "fixture/DeleteVoiceConnectorEmergencyCallingConfigurationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteVoiceConnectorEmergencyCallingConfiguration)
+
+responseDeleteVoiceConnectorGroup :: DeleteVoiceConnectorGroupResponse -> TestTree
+responseDeleteVoiceConnectorGroup =
+  res
+    "DeleteVoiceConnectorGroupResponse"
+    "fixture/DeleteVoiceConnectorGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteVoiceConnectorGroup)
+
+responseDeleteVoiceConnectorOrigination :: DeleteVoiceConnectorOriginationResponse -> TestTree
+responseDeleteVoiceConnectorOrigination =
+  res
+    "DeleteVoiceConnectorOriginationResponse"
+    "fixture/DeleteVoiceConnectorOriginationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteVoiceConnectorOrigination)
+
+responseDeleteVoiceConnectorProxy :: DeleteVoiceConnectorProxyResponse -> TestTree
+responseDeleteVoiceConnectorProxy =
+  res
+    "DeleteVoiceConnectorProxyResponse"
+    "fixture/DeleteVoiceConnectorProxyResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteVoiceConnectorProxy)
+
+responseDeleteVoiceConnectorStreamingConfiguration :: DeleteVoiceConnectorStreamingConfigurationResponse -> TestTree
+responseDeleteVoiceConnectorStreamingConfiguration =
+  res
+    "DeleteVoiceConnectorStreamingConfigurationResponse"
+    "fixture/DeleteVoiceConnectorStreamingConfigurationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteVoiceConnectorStreamingConfiguration)
+
+responseDeleteVoiceConnectorTermination :: DeleteVoiceConnectorTerminationResponse -> TestTree
+responseDeleteVoiceConnectorTermination =
+  res
+    "DeleteVoiceConnectorTerminationResponse"
+    "fixture/DeleteVoiceConnectorTerminationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteVoiceConnectorTermination)
+
+responseDeleteVoiceConnectorTerminationCredentials :: DeleteVoiceConnectorTerminationCredentialsResponse -> TestTree
+responseDeleteVoiceConnectorTerminationCredentials =
+  res
+    "DeleteVoiceConnectorTerminationCredentialsResponse"
+    "fixture/DeleteVoiceConnectorTerminationCredentialsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteVoiceConnectorTerminationCredentials)
+
+responseDescribeAppInstance :: DescribeAppInstanceResponse -> TestTree
+responseDescribeAppInstance =
+  res
+    "DescribeAppInstanceResponse"
+    "fixture/DescribeAppInstanceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeAppInstance)
+
+responseDescribeAppInstanceAdmin :: DescribeAppInstanceAdminResponse -> TestTree
+responseDescribeAppInstanceAdmin =
+  res
+    "DescribeAppInstanceAdminResponse"
+    "fixture/DescribeAppInstanceAdminResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeAppInstanceAdmin)
+
+responseDescribeAppInstanceUser :: DescribeAppInstanceUserResponse -> TestTree
+responseDescribeAppInstanceUser =
+  res
+    "DescribeAppInstanceUserResponse"
+    "fixture/DescribeAppInstanceUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeAppInstanceUser)
+
+responseDescribeChannel :: DescribeChannelResponse -> TestTree
+responseDescribeChannel =
+  res
+    "DescribeChannelResponse"
+    "fixture/DescribeChannelResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeChannel)
+
+responseDescribeChannelBan :: DescribeChannelBanResponse -> TestTree
+responseDescribeChannelBan =
+  res
+    "DescribeChannelBanResponse"
+    "fixture/DescribeChannelBanResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeChannelBan)
+
+responseDescribeChannelMembership :: DescribeChannelMembershipResponse -> TestTree
+responseDescribeChannelMembership =
+  res
+    "DescribeChannelMembershipResponse"
+    "fixture/DescribeChannelMembershipResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeChannelMembership)
+
+responseDescribeChannelMembershipForAppInstanceUser :: DescribeChannelMembershipForAppInstanceUserResponse -> TestTree
+responseDescribeChannelMembershipForAppInstanceUser =
+  res
+    "DescribeChannelMembershipForAppInstanceUserResponse"
+    "fixture/DescribeChannelMembershipForAppInstanceUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeChannelMembershipForAppInstanceUser)
+
+responseDescribeChannelModeratedByAppInstanceUser :: DescribeChannelModeratedByAppInstanceUserResponse -> TestTree
+responseDescribeChannelModeratedByAppInstanceUser =
+  res
+    "DescribeChannelModeratedByAppInstanceUserResponse"
+    "fixture/DescribeChannelModeratedByAppInstanceUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeChannelModeratedByAppInstanceUser)
+
+responseDescribeChannelModerator :: DescribeChannelModeratorResponse -> TestTree
+responseDescribeChannelModerator =
+  res
+    "DescribeChannelModeratorResponse"
+    "fixture/DescribeChannelModeratorResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeChannelModerator)
+
+responseDisassociatePhoneNumberFromUser :: DisassociatePhoneNumberFromUserResponse -> TestTree
+responseDisassociatePhoneNumberFromUser =
+  res
+    "DisassociatePhoneNumberFromUserResponse"
+    "fixture/DisassociatePhoneNumberFromUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DisassociatePhoneNumberFromUser)
+
+responseDisassociatePhoneNumbersFromVoiceConnector :: DisassociatePhoneNumbersFromVoiceConnectorResponse -> TestTree
+responseDisassociatePhoneNumbersFromVoiceConnector =
+  res
+    "DisassociatePhoneNumbersFromVoiceConnectorResponse"
+    "fixture/DisassociatePhoneNumbersFromVoiceConnectorResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DisassociatePhoneNumbersFromVoiceConnector)
+
+responseDisassociatePhoneNumbersFromVoiceConnectorGroup :: DisassociatePhoneNumbersFromVoiceConnectorGroupResponse -> TestTree
+responseDisassociatePhoneNumbersFromVoiceConnectorGroup =
+  res
+    "DisassociatePhoneNumbersFromVoiceConnectorGroupResponse"
+    "fixture/DisassociatePhoneNumbersFromVoiceConnectorGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DisassociatePhoneNumbersFromVoiceConnectorGroup)
+
+responseDisassociateSigninDelegateGroupsFromAccount :: DisassociateSigninDelegateGroupsFromAccountResponse -> TestTree
+responseDisassociateSigninDelegateGroupsFromAccount =
+  res
+    "DisassociateSigninDelegateGroupsFromAccountResponse"
+    "fixture/DisassociateSigninDelegateGroupsFromAccountResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DisassociateSigninDelegateGroupsFromAccount)
+
+responseGetAccount :: GetAccountResponse -> TestTree
+responseGetAccount =
+  res
+    "GetAccountResponse"
+    "fixture/GetAccountResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetAccount)
+
+responseGetAccountSettings :: GetAccountSettingsResponse -> TestTree
+responseGetAccountSettings =
+  res
+    "GetAccountSettingsResponse"
+    "fixture/GetAccountSettingsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetAccountSettings)
+
+responseGetAppInstanceRetentionSettings :: GetAppInstanceRetentionSettingsResponse -> TestTree
+responseGetAppInstanceRetentionSettings =
+  res
+    "GetAppInstanceRetentionSettingsResponse"
+    "fixture/GetAppInstanceRetentionSettingsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetAppInstanceRetentionSettings)
+
+responseGetAppInstanceStreamingConfigurations :: GetAppInstanceStreamingConfigurationsResponse -> TestTree
+responseGetAppInstanceStreamingConfigurations =
+  res
+    "GetAppInstanceStreamingConfigurationsResponse"
+    "fixture/GetAppInstanceStreamingConfigurationsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetAppInstanceStreamingConfigurations)
+
+responseGetAttendee :: GetAttendeeResponse -> TestTree
+responseGetAttendee =
+  res
+    "GetAttendeeResponse"
+    "fixture/GetAttendeeResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetAttendee)
+
+responseGetBot :: GetBotResponse -> TestTree
+responseGetBot =
+  res
+    "GetBotResponse"
+    "fixture/GetBotResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetBot)
+
+responseGetChannelMessage :: GetChannelMessageResponse -> TestTree
+responseGetChannelMessage =
+  res
+    "GetChannelMessageResponse"
+    "fixture/GetChannelMessageResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetChannelMessage)
+
+responseGetEventsConfiguration :: GetEventsConfigurationResponse -> TestTree
+responseGetEventsConfiguration =
+  res
+    "GetEventsConfigurationResponse"
+    "fixture/GetEventsConfigurationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetEventsConfiguration)
+
+responseGetGlobalSettings :: GetGlobalSettingsResponse -> TestTree
+responseGetGlobalSettings =
+  res
+    "GetGlobalSettingsResponse"
+    "fixture/GetGlobalSettingsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetGlobalSettings)
+
+responseGetMediaCapturePipeline :: GetMediaCapturePipelineResponse -> TestTree
+responseGetMediaCapturePipeline =
+  res
+    "GetMediaCapturePipelineResponse"
+    "fixture/GetMediaCapturePipelineResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetMediaCapturePipeline)
+
+responseGetMeeting :: GetMeetingResponse -> TestTree
+responseGetMeeting =
+  res
+    "GetMeetingResponse"
+    "fixture/GetMeetingResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetMeeting)
+
+responseGetMessagingSessionEndpoint :: GetMessagingSessionEndpointResponse -> TestTree
+responseGetMessagingSessionEndpoint =
+  res
+    "GetMessagingSessionEndpointResponse"
+    "fixture/GetMessagingSessionEndpointResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetMessagingSessionEndpoint)
+
+responseGetPhoneNumber :: GetPhoneNumberResponse -> TestTree
+responseGetPhoneNumber =
+  res
+    "GetPhoneNumberResponse"
+    "fixture/GetPhoneNumberResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetPhoneNumber)
+
+responseGetPhoneNumberOrder :: GetPhoneNumberOrderResponse -> TestTree
+responseGetPhoneNumberOrder =
+  res
+    "GetPhoneNumberOrderResponse"
+    "fixture/GetPhoneNumberOrderResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetPhoneNumberOrder)
+
+responseGetPhoneNumberSettings :: GetPhoneNumberSettingsResponse -> TestTree
+responseGetPhoneNumberSettings =
+  res
+    "GetPhoneNumberSettingsResponse"
+    "fixture/GetPhoneNumberSettingsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetPhoneNumberSettings)
+
+responseGetProxySession :: GetProxySessionResponse -> TestTree
+responseGetProxySession =
+  res
+    "GetProxySessionResponse"
+    "fixture/GetProxySessionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetProxySession)
+
+responseGetRetentionSettings :: GetRetentionSettingsResponse -> TestTree
+responseGetRetentionSettings =
+  res
+    "GetRetentionSettingsResponse"
+    "fixture/GetRetentionSettingsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetRetentionSettings)
+
+responseGetRoom :: GetRoomResponse -> TestTree
+responseGetRoom =
+  res
+    "GetRoomResponse"
+    "fixture/GetRoomResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetRoom)
+
+responseGetSipMediaApplication :: GetSipMediaApplicationResponse -> TestTree
+responseGetSipMediaApplication =
+  res
+    "GetSipMediaApplicationResponse"
+    "fixture/GetSipMediaApplicationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetSipMediaApplication)
+
+responseGetSipMediaApplicationLoggingConfiguration :: GetSipMediaApplicationLoggingConfigurationResponse -> TestTree
+responseGetSipMediaApplicationLoggingConfiguration =
+  res
+    "GetSipMediaApplicationLoggingConfigurationResponse"
+    "fixture/GetSipMediaApplicationLoggingConfigurationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetSipMediaApplicationLoggingConfiguration)
+
+responseGetSipRule :: GetSipRuleResponse -> TestTree
+responseGetSipRule =
+  res
+    "GetSipRuleResponse"
+    "fixture/GetSipRuleResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetSipRule)
+
+responseGetUser :: GetUserResponse -> TestTree
+responseGetUser =
+  res
+    "GetUserResponse"
+    "fixture/GetUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetUser)
+
+responseGetUserSettings :: GetUserSettingsResponse -> TestTree
+responseGetUserSettings =
+  res
+    "GetUserSettingsResponse"
+    "fixture/GetUserSettingsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetUserSettings)
+
+responseGetVoiceConnector :: GetVoiceConnectorResponse -> TestTree
+responseGetVoiceConnector =
+  res
+    "GetVoiceConnectorResponse"
+    "fixture/GetVoiceConnectorResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetVoiceConnector)
+
+responseGetVoiceConnectorEmergencyCallingConfiguration :: GetVoiceConnectorEmergencyCallingConfigurationResponse -> TestTree
+responseGetVoiceConnectorEmergencyCallingConfiguration =
+  res
+    "GetVoiceConnectorEmergencyCallingConfigurationResponse"
+    "fixture/GetVoiceConnectorEmergencyCallingConfigurationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetVoiceConnectorEmergencyCallingConfiguration)
+
+responseGetVoiceConnectorGroup :: GetVoiceConnectorGroupResponse -> TestTree
+responseGetVoiceConnectorGroup =
+  res
+    "GetVoiceConnectorGroupResponse"
+    "fixture/GetVoiceConnectorGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetVoiceConnectorGroup)
+
+responseGetVoiceConnectorLoggingConfiguration :: GetVoiceConnectorLoggingConfigurationResponse -> TestTree
+responseGetVoiceConnectorLoggingConfiguration =
+  res
+    "GetVoiceConnectorLoggingConfigurationResponse"
+    "fixture/GetVoiceConnectorLoggingConfigurationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetVoiceConnectorLoggingConfiguration)
+
+responseGetVoiceConnectorOrigination :: GetVoiceConnectorOriginationResponse -> TestTree
+responseGetVoiceConnectorOrigination =
+  res
+    "GetVoiceConnectorOriginationResponse"
+    "fixture/GetVoiceConnectorOriginationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetVoiceConnectorOrigination)
+
+responseGetVoiceConnectorProxy :: GetVoiceConnectorProxyResponse -> TestTree
+responseGetVoiceConnectorProxy =
+  res
+    "GetVoiceConnectorProxyResponse"
+    "fixture/GetVoiceConnectorProxyResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetVoiceConnectorProxy)
+
+responseGetVoiceConnectorStreamingConfiguration :: GetVoiceConnectorStreamingConfigurationResponse -> TestTree
+responseGetVoiceConnectorStreamingConfiguration =
+  res
+    "GetVoiceConnectorStreamingConfigurationResponse"
+    "fixture/GetVoiceConnectorStreamingConfigurationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetVoiceConnectorStreamingConfiguration)
+
+responseGetVoiceConnectorTermination :: GetVoiceConnectorTerminationResponse -> TestTree
+responseGetVoiceConnectorTermination =
+  res
+    "GetVoiceConnectorTerminationResponse"
+    "fixture/GetVoiceConnectorTerminationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetVoiceConnectorTermination)
+
+responseGetVoiceConnectorTerminationHealth :: GetVoiceConnectorTerminationHealthResponse -> TestTree
+responseGetVoiceConnectorTerminationHealth =
+  res
+    "GetVoiceConnectorTerminationHealthResponse"
+    "fixture/GetVoiceConnectorTerminationHealthResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetVoiceConnectorTerminationHealth)
+
+responseInviteUsers :: InviteUsersResponse -> TestTree
+responseInviteUsers =
+  res
+    "InviteUsersResponse"
+    "fixture/InviteUsersResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy InviteUsers)
+
+responseListAccounts :: ListAccountsResponse -> TestTree
+responseListAccounts =
+  res
+    "ListAccountsResponse"
+    "fixture/ListAccountsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListAccounts)
+
+responseListAppInstanceAdmins :: ListAppInstanceAdminsResponse -> TestTree
+responseListAppInstanceAdmins =
+  res
+    "ListAppInstanceAdminsResponse"
+    "fixture/ListAppInstanceAdminsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListAppInstanceAdmins)
+
+responseListAppInstanceUsers :: ListAppInstanceUsersResponse -> TestTree
+responseListAppInstanceUsers =
+  res
+    "ListAppInstanceUsersResponse"
+    "fixture/ListAppInstanceUsersResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListAppInstanceUsers)
+
+responseListAppInstances :: ListAppInstancesResponse -> TestTree
+responseListAppInstances =
+  res
+    "ListAppInstancesResponse"
+    "fixture/ListAppInstancesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListAppInstances)
+
+responseListAttendeeTags :: ListAttendeeTagsResponse -> TestTree
+responseListAttendeeTags =
+  res
+    "ListAttendeeTagsResponse"
+    "fixture/ListAttendeeTagsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListAttendeeTags)
+
+responseListAttendees :: ListAttendeesResponse -> TestTree
+responseListAttendees =
+  res
+    "ListAttendeesResponse"
+    "fixture/ListAttendeesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListAttendees)
+
+responseListBots :: ListBotsResponse -> TestTree
+responseListBots =
+  res
+    "ListBotsResponse"
+    "fixture/ListBotsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListBots)
+
+responseListChannelBans :: ListChannelBansResponse -> TestTree
+responseListChannelBans =
+  res
+    "ListChannelBansResponse"
+    "fixture/ListChannelBansResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListChannelBans)
+
+responseListChannelMemberships :: ListChannelMembershipsResponse -> TestTree
+responseListChannelMemberships =
+  res
+    "ListChannelMembershipsResponse"
+    "fixture/ListChannelMembershipsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListChannelMemberships)
+
+responseListChannelMembershipsForAppInstanceUser :: ListChannelMembershipsForAppInstanceUserResponse -> TestTree
+responseListChannelMembershipsForAppInstanceUser =
+  res
+    "ListChannelMembershipsForAppInstanceUserResponse"
+    "fixture/ListChannelMembershipsForAppInstanceUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListChannelMembershipsForAppInstanceUser)
+
+responseListChannelMessages :: ListChannelMessagesResponse -> TestTree
+responseListChannelMessages =
+  res
+    "ListChannelMessagesResponse"
+    "fixture/ListChannelMessagesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListChannelMessages)
+
+responseListChannelModerators :: ListChannelModeratorsResponse -> TestTree
+responseListChannelModerators =
+  res
+    "ListChannelModeratorsResponse"
+    "fixture/ListChannelModeratorsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListChannelModerators)
+
+responseListChannels :: ListChannelsResponse -> TestTree
+responseListChannels =
+  res
+    "ListChannelsResponse"
+    "fixture/ListChannelsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListChannels)
+
+responseListChannelsModeratedByAppInstanceUser :: ListChannelsModeratedByAppInstanceUserResponse -> TestTree
+responseListChannelsModeratedByAppInstanceUser =
+  res
+    "ListChannelsModeratedByAppInstanceUserResponse"
+    "fixture/ListChannelsModeratedByAppInstanceUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListChannelsModeratedByAppInstanceUser)
+
+responseListMediaCapturePipelines :: ListMediaCapturePipelinesResponse -> TestTree
+responseListMediaCapturePipelines =
+  res
+    "ListMediaCapturePipelinesResponse"
+    "fixture/ListMediaCapturePipelinesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListMediaCapturePipelines)
+
+responseListMeetingTags :: ListMeetingTagsResponse -> TestTree
+responseListMeetingTags =
+  res
+    "ListMeetingTagsResponse"
+    "fixture/ListMeetingTagsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListMeetingTags)
+
+responseListMeetings :: ListMeetingsResponse -> TestTree
+responseListMeetings =
+  res
+    "ListMeetingsResponse"
+    "fixture/ListMeetingsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListMeetings)
+
+responseListPhoneNumberOrders :: ListPhoneNumberOrdersResponse -> TestTree
+responseListPhoneNumberOrders =
+  res
+    "ListPhoneNumberOrdersResponse"
+    "fixture/ListPhoneNumberOrdersResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListPhoneNumberOrders)
+
+responseListPhoneNumbers :: ListPhoneNumbersResponse -> TestTree
+responseListPhoneNumbers =
+  res
+    "ListPhoneNumbersResponse"
+    "fixture/ListPhoneNumbersResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListPhoneNumbers)
+
+responseListProxySessions :: ListProxySessionsResponse -> TestTree
+responseListProxySessions =
+  res
+    "ListProxySessionsResponse"
+    "fixture/ListProxySessionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListProxySessions)
+
+responseListRoomMemberships :: ListRoomMembershipsResponse -> TestTree
+responseListRoomMemberships =
+  res
+    "ListRoomMembershipsResponse"
+    "fixture/ListRoomMembershipsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListRoomMemberships)
+
+responseListRooms :: ListRoomsResponse -> TestTree
+responseListRooms =
+  res
+    "ListRoomsResponse"
+    "fixture/ListRoomsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListRooms)
+
+responseListSipMediaApplications :: ListSipMediaApplicationsResponse -> TestTree
+responseListSipMediaApplications =
+  res
+    "ListSipMediaApplicationsResponse"
+    "fixture/ListSipMediaApplicationsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListSipMediaApplications)
+
+responseListSipRules :: ListSipRulesResponse -> TestTree
+responseListSipRules =
+  res
+    "ListSipRulesResponse"
+    "fixture/ListSipRulesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListSipRules)
+
+responseListSupportedPhoneNumberCountries :: ListSupportedPhoneNumberCountriesResponse -> TestTree
+responseListSupportedPhoneNumberCountries =
+  res
+    "ListSupportedPhoneNumberCountriesResponse"
+    "fixture/ListSupportedPhoneNumberCountriesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListSupportedPhoneNumberCountries)
+
+responseListTagsForResource :: ListTagsForResourceResponse -> TestTree
+responseListTagsForResource =
+  res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)
+
+responseListUsers :: ListUsersResponse -> TestTree
+responseListUsers =
+  res
+    "ListUsersResponse"
+    "fixture/ListUsersResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListUsers)
+
+responseListVoiceConnectorGroups :: ListVoiceConnectorGroupsResponse -> TestTree
+responseListVoiceConnectorGroups =
+  res
+    "ListVoiceConnectorGroupsResponse"
+    "fixture/ListVoiceConnectorGroupsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListVoiceConnectorGroups)
+
+responseListVoiceConnectorTerminationCredentials :: ListVoiceConnectorTerminationCredentialsResponse -> TestTree
+responseListVoiceConnectorTerminationCredentials =
+  res
+    "ListVoiceConnectorTerminationCredentialsResponse"
+    "fixture/ListVoiceConnectorTerminationCredentialsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListVoiceConnectorTerminationCredentials)
+
+responseListVoiceConnectors :: ListVoiceConnectorsResponse -> TestTree
+responseListVoiceConnectors =
+  res
+    "ListVoiceConnectorsResponse"
+    "fixture/ListVoiceConnectorsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListVoiceConnectors)
+
+responseLogoutUser :: LogoutUserResponse -> TestTree
+responseLogoutUser =
+  res
+    "LogoutUserResponse"
+    "fixture/LogoutUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy LogoutUser)
+
+responsePutAppInstanceRetentionSettings :: PutAppInstanceRetentionSettingsResponse -> TestTree
+responsePutAppInstanceRetentionSettings =
+  res
+    "PutAppInstanceRetentionSettingsResponse"
+    "fixture/PutAppInstanceRetentionSettingsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy PutAppInstanceRetentionSettings)
+
+responsePutAppInstanceStreamingConfigurations :: PutAppInstanceStreamingConfigurationsResponse -> TestTree
+responsePutAppInstanceStreamingConfigurations =
+  res
+    "PutAppInstanceStreamingConfigurationsResponse"
+    "fixture/PutAppInstanceStreamingConfigurationsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy PutAppInstanceStreamingConfigurations)
+
+responsePutEventsConfiguration :: PutEventsConfigurationResponse -> TestTree
+responsePutEventsConfiguration =
+  res
+    "PutEventsConfigurationResponse"
+    "fixture/PutEventsConfigurationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy PutEventsConfiguration)
+
+responsePutRetentionSettings :: PutRetentionSettingsResponse -> TestTree
+responsePutRetentionSettings =
+  res
+    "PutRetentionSettingsResponse"
+    "fixture/PutRetentionSettingsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy PutRetentionSettings)
+
+responsePutSipMediaApplicationLoggingConfiguration :: PutSipMediaApplicationLoggingConfigurationResponse -> TestTree
+responsePutSipMediaApplicationLoggingConfiguration =
+  res
+    "PutSipMediaApplicationLoggingConfigurationResponse"
+    "fixture/PutSipMediaApplicationLoggingConfigurationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy PutSipMediaApplicationLoggingConfiguration)
+
+responsePutVoiceConnectorEmergencyCallingConfiguration :: PutVoiceConnectorEmergencyCallingConfigurationResponse -> TestTree
+responsePutVoiceConnectorEmergencyCallingConfiguration =
+  res
+    "PutVoiceConnectorEmergencyCallingConfigurationResponse"
+    "fixture/PutVoiceConnectorEmergencyCallingConfigurationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy PutVoiceConnectorEmergencyCallingConfiguration)
+
+responsePutVoiceConnectorLoggingConfiguration :: PutVoiceConnectorLoggingConfigurationResponse -> TestTree
+responsePutVoiceConnectorLoggingConfiguration =
+  res
+    "PutVoiceConnectorLoggingConfigurationResponse"
+    "fixture/PutVoiceConnectorLoggingConfigurationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy PutVoiceConnectorLoggingConfiguration)
+
+responsePutVoiceConnectorOrigination :: PutVoiceConnectorOriginationResponse -> TestTree
+responsePutVoiceConnectorOrigination =
+  res
+    "PutVoiceConnectorOriginationResponse"
+    "fixture/PutVoiceConnectorOriginationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy PutVoiceConnectorOrigination)
+
+responsePutVoiceConnectorProxy :: PutVoiceConnectorProxyResponse -> TestTree
+responsePutVoiceConnectorProxy =
+  res
+    "PutVoiceConnectorProxyResponse"
+    "fixture/PutVoiceConnectorProxyResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy PutVoiceConnectorProxy)
+
+responsePutVoiceConnectorStreamingConfiguration :: PutVoiceConnectorStreamingConfigurationResponse -> TestTree
+responsePutVoiceConnectorStreamingConfiguration =
+  res
+    "PutVoiceConnectorStreamingConfigurationResponse"
+    "fixture/PutVoiceConnectorStreamingConfigurationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy PutVoiceConnectorStreamingConfiguration)
+
+responsePutVoiceConnectorTermination :: PutVoiceConnectorTerminationResponse -> TestTree
+responsePutVoiceConnectorTermination =
+  res
+    "PutVoiceConnectorTerminationResponse"
+    "fixture/PutVoiceConnectorTerminationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy PutVoiceConnectorTermination)
+
+responsePutVoiceConnectorTerminationCredentials :: PutVoiceConnectorTerminationCredentialsResponse -> TestTree
+responsePutVoiceConnectorTerminationCredentials =
+  res
+    "PutVoiceConnectorTerminationCredentialsResponse"
+    "fixture/PutVoiceConnectorTerminationCredentialsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy PutVoiceConnectorTerminationCredentials)
+
+responseRedactChannelMessage :: RedactChannelMessageResponse -> TestTree
+responseRedactChannelMessage =
+  res
+    "RedactChannelMessageResponse"
+    "fixture/RedactChannelMessageResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy RedactChannelMessage)
+
+responseRedactConversationMessage :: RedactConversationMessageResponse -> TestTree
+responseRedactConversationMessage =
+  res
+    "RedactConversationMessageResponse"
+    "fixture/RedactConversationMessageResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy RedactConversationMessage)
+
+responseRedactRoomMessage :: RedactRoomMessageResponse -> TestTree
+responseRedactRoomMessage =
+  res
+    "RedactRoomMessageResponse"
+    "fixture/RedactRoomMessageResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy RedactRoomMessage)
+
+responseRegenerateSecurityToken :: RegenerateSecurityTokenResponse -> TestTree
+responseRegenerateSecurityToken =
+  res
+    "RegenerateSecurityTokenResponse"
+    "fixture/RegenerateSecurityTokenResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy RegenerateSecurityToken)
+
+responseResetPersonalPIN :: ResetPersonalPINResponse -> TestTree
+responseResetPersonalPIN =
+  res
+    "ResetPersonalPINResponse"
+    "fixture/ResetPersonalPINResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ResetPersonalPIN)
+
+responseRestorePhoneNumber :: RestorePhoneNumberResponse -> TestTree
+responseRestorePhoneNumber =
+  res
+    "RestorePhoneNumberResponse"
+    "fixture/RestorePhoneNumberResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy RestorePhoneNumber)
+
+responseSearchAvailablePhoneNumbers :: SearchAvailablePhoneNumbersResponse -> TestTree
+responseSearchAvailablePhoneNumbers =
+  res
+    "SearchAvailablePhoneNumbersResponse"
+    "fixture/SearchAvailablePhoneNumbersResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy SearchAvailablePhoneNumbers)
+
+responseSendChannelMessage :: SendChannelMessageResponse -> TestTree
+responseSendChannelMessage =
+  res
+    "SendChannelMessageResponse"
+    "fixture/SendChannelMessageResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy SendChannelMessage)
+
+responseStartMeetingTranscription :: StartMeetingTranscriptionResponse -> TestTree
+responseStartMeetingTranscription =
+  res
+    "StartMeetingTranscriptionResponse"
+    "fixture/StartMeetingTranscriptionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StartMeetingTranscription)
+
+responseStopMeetingTranscription :: StopMeetingTranscriptionResponse -> TestTree
+responseStopMeetingTranscription =
+  res
+    "StopMeetingTranscriptionResponse"
+    "fixture/StopMeetingTranscriptionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StopMeetingTranscription)
+
+responseTagAttendee :: TagAttendeeResponse -> TestTree
+responseTagAttendee =
+  res
+    "TagAttendeeResponse"
+    "fixture/TagAttendeeResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy TagAttendee)
+
+responseTagMeeting :: TagMeetingResponse -> TestTree
+responseTagMeeting =
+  res
+    "TagMeetingResponse"
+    "fixture/TagMeetingResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy TagMeeting)
+
+responseTagResource :: TagResourceResponse -> TestTree
+responseTagResource =
+  res
+    "TagResourceResponse"
+    "fixture/TagResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy TagResource)
+
+responseUntagAttendee :: UntagAttendeeResponse -> TestTree
+responseUntagAttendee =
+  res
+    "UntagAttendeeResponse"
+    "fixture/UntagAttendeeResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UntagAttendee)
+
+responseUntagMeeting :: UntagMeetingResponse -> TestTree
+responseUntagMeeting =
+  res
+    "UntagMeetingResponse"
+    "fixture/UntagMeetingResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UntagMeeting)
+
+responseUntagResource :: UntagResourceResponse -> TestTree
+responseUntagResource =
+  res
+    "UntagResourceResponse"
+    "fixture/UntagResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UntagResource)
+
+responseUpdateAccount :: UpdateAccountResponse -> TestTree
+responseUpdateAccount =
+  res
+    "UpdateAccountResponse"
+    "fixture/UpdateAccountResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateAccount)
+
+responseUpdateAccountSettings :: UpdateAccountSettingsResponse -> TestTree
+responseUpdateAccountSettings =
+  res
+    "UpdateAccountSettingsResponse"
+    "fixture/UpdateAccountSettingsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateAccountSettings)
+
+responseUpdateAppInstance :: UpdateAppInstanceResponse -> TestTree
+responseUpdateAppInstance =
+  res
+    "UpdateAppInstanceResponse"
+    "fixture/UpdateAppInstanceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateAppInstance)
+
+responseUpdateAppInstanceUser :: UpdateAppInstanceUserResponse -> TestTree
+responseUpdateAppInstanceUser =
+  res
+    "UpdateAppInstanceUserResponse"
+    "fixture/UpdateAppInstanceUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateAppInstanceUser)
+
+responseUpdateBot :: UpdateBotResponse -> TestTree
+responseUpdateBot =
+  res
+    "UpdateBotResponse"
+    "fixture/UpdateBotResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateBot)
+
+responseUpdateChannel :: UpdateChannelResponse -> TestTree
+responseUpdateChannel =
+  res
+    "UpdateChannelResponse"
+    "fixture/UpdateChannelResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateChannel)
+
+responseUpdateChannelMessage :: UpdateChannelMessageResponse -> TestTree
+responseUpdateChannelMessage =
+  res
+    "UpdateChannelMessageResponse"
+    "fixture/UpdateChannelMessageResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateChannelMessage)
+
+responseUpdateChannelReadMarker :: UpdateChannelReadMarkerResponse -> TestTree
+responseUpdateChannelReadMarker =
+  res
+    "UpdateChannelReadMarkerResponse"
+    "fixture/UpdateChannelReadMarkerResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateChannelReadMarker)
+
+responseUpdateGlobalSettings :: UpdateGlobalSettingsResponse -> TestTree
+responseUpdateGlobalSettings =
+  res
+    "UpdateGlobalSettingsResponse"
+    "fixture/UpdateGlobalSettingsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateGlobalSettings)
+
+responseUpdatePhoneNumber :: UpdatePhoneNumberResponse -> TestTree
+responseUpdatePhoneNumber =
+  res
+    "UpdatePhoneNumberResponse"
+    "fixture/UpdatePhoneNumberResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdatePhoneNumber)
+
+responseUpdatePhoneNumberSettings :: UpdatePhoneNumberSettingsResponse -> TestTree
+responseUpdatePhoneNumberSettings =
+  res
+    "UpdatePhoneNumberSettingsResponse"
+    "fixture/UpdatePhoneNumberSettingsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdatePhoneNumberSettings)
+
+responseUpdateProxySession :: UpdateProxySessionResponse -> TestTree
+responseUpdateProxySession =
+  res
+    "UpdateProxySessionResponse"
+    "fixture/UpdateProxySessionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateProxySession)
+
+responseUpdateRoom :: UpdateRoomResponse -> TestTree
+responseUpdateRoom =
+  res
+    "UpdateRoomResponse"
+    "fixture/UpdateRoomResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateRoom)
+
+responseUpdateRoomMembership :: UpdateRoomMembershipResponse -> TestTree
+responseUpdateRoomMembership =
+  res
+    "UpdateRoomMembershipResponse"
+    "fixture/UpdateRoomMembershipResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateRoomMembership)
+
+responseUpdateSipMediaApplication :: UpdateSipMediaApplicationResponse -> TestTree
+responseUpdateSipMediaApplication =
+  res
+    "UpdateSipMediaApplicationResponse"
+    "fixture/UpdateSipMediaApplicationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateSipMediaApplication)
+
+responseUpdateSipMediaApplicationCall :: UpdateSipMediaApplicationCallResponse -> TestTree
+responseUpdateSipMediaApplicationCall =
+  res
+    "UpdateSipMediaApplicationCallResponse"
+    "fixture/UpdateSipMediaApplicationCallResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateSipMediaApplicationCall)
+
+responseUpdateSipRule :: UpdateSipRuleResponse -> TestTree
+responseUpdateSipRule =
+  res
+    "UpdateSipRuleResponse"
+    "fixture/UpdateSipRuleResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateSipRule)
+
+responseUpdateUser :: UpdateUserResponse -> TestTree
+responseUpdateUser =
+  res
+    "UpdateUserResponse"
+    "fixture/UpdateUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateUser)
+
+responseUpdateUserSettings :: UpdateUserSettingsResponse -> TestTree
+responseUpdateUserSettings =
+  res
+    "UpdateUserSettingsResponse"
+    "fixture/UpdateUserSettingsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateUserSettings)
+
+responseUpdateVoiceConnector :: UpdateVoiceConnectorResponse -> TestTree
+responseUpdateVoiceConnector =
+  res
+    "UpdateVoiceConnectorResponse"
+    "fixture/UpdateVoiceConnectorResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateVoiceConnector)
+
+responseUpdateVoiceConnectorGroup :: UpdateVoiceConnectorGroupResponse -> TestTree
+responseUpdateVoiceConnectorGroup =
+  res
+    "UpdateVoiceConnectorGroupResponse"
+    "fixture/UpdateVoiceConnectorGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateVoiceConnectorGroup)
+
+responseValidateE911Address :: ValidateE911AddressResponse -> TestTree
+responseValidateE911Address =
+  res
+    "ValidateE911AddressResponse"
+    "fixture/ValidateE911AddressResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ValidateE911Address)
