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 Voice SDK
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+ 
+`2.0` - Derived from API version @2022-08-03@ of the AWS service descriptions, licensed under Apache 2.0.
+
+## Description
+
+Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-chime-sdk-voice)
+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.ChimeSdkVoice](http://hackage.haskell.org/package/amazonka-chime-sdk-voice/docs/Amazonka-ChimeSdkVoice.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-sdk-voice` 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-sdk-voice.cabal b/amazonka-chime-sdk-voice.cabal
new file mode 100644
--- /dev/null
+++ b/amazonka-chime-sdk-voice.cabal
@@ -0,0 +1,210 @@
+cabal-version:      2.2
+name:               amazonka-chime-sdk-voice
+version:            2.0
+synopsis:           Amazon Chime SDK Voice 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 @2022-08-03@ 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.ChimeSdkVoice.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.ChimeSdkVoice" 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-sdk-voice
+
+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.ChimeSdkVoice
+    Amazonka.ChimeSdkVoice.AssociatePhoneNumbersWithVoiceConnector
+    Amazonka.ChimeSdkVoice.AssociatePhoneNumbersWithVoiceConnectorGroup
+    Amazonka.ChimeSdkVoice.BatchDeletePhoneNumber
+    Amazonka.ChimeSdkVoice.BatchUpdatePhoneNumber
+    Amazonka.ChimeSdkVoice.CreatePhoneNumberOrder
+    Amazonka.ChimeSdkVoice.CreateProxySession
+    Amazonka.ChimeSdkVoice.CreateSipMediaApplication
+    Amazonka.ChimeSdkVoice.CreateSipMediaApplicationCall
+    Amazonka.ChimeSdkVoice.CreateSipRule
+    Amazonka.ChimeSdkVoice.CreateVoiceConnector
+    Amazonka.ChimeSdkVoice.CreateVoiceConnectorGroup
+    Amazonka.ChimeSdkVoice.DeletePhoneNumber
+    Amazonka.ChimeSdkVoice.DeleteProxySession
+    Amazonka.ChimeSdkVoice.DeleteSipMediaApplication
+    Amazonka.ChimeSdkVoice.DeleteSipRule
+    Amazonka.ChimeSdkVoice.DeleteVoiceConnector
+    Amazonka.ChimeSdkVoice.DeleteVoiceConnectorEmergencyCallingConfiguration
+    Amazonka.ChimeSdkVoice.DeleteVoiceConnectorGroup
+    Amazonka.ChimeSdkVoice.DeleteVoiceConnectorOrigination
+    Amazonka.ChimeSdkVoice.DeleteVoiceConnectorProxy
+    Amazonka.ChimeSdkVoice.DeleteVoiceConnectorStreamingConfiguration
+    Amazonka.ChimeSdkVoice.DeleteVoiceConnectorTermination
+    Amazonka.ChimeSdkVoice.DeleteVoiceConnectorTerminationCredentials
+    Amazonka.ChimeSdkVoice.DisassociatePhoneNumbersFromVoiceConnector
+    Amazonka.ChimeSdkVoice.DisassociatePhoneNumbersFromVoiceConnectorGroup
+    Amazonka.ChimeSdkVoice.GetGlobalSettings
+    Amazonka.ChimeSdkVoice.GetPhoneNumber
+    Amazonka.ChimeSdkVoice.GetPhoneNumberOrder
+    Amazonka.ChimeSdkVoice.GetPhoneNumberSettings
+    Amazonka.ChimeSdkVoice.GetProxySession
+    Amazonka.ChimeSdkVoice.GetSipMediaApplication
+    Amazonka.ChimeSdkVoice.GetSipMediaApplicationAlexaSkillConfiguration
+    Amazonka.ChimeSdkVoice.GetSipMediaApplicationLoggingConfiguration
+    Amazonka.ChimeSdkVoice.GetSipRule
+    Amazonka.ChimeSdkVoice.GetVoiceConnector
+    Amazonka.ChimeSdkVoice.GetVoiceConnectorEmergencyCallingConfiguration
+    Amazonka.ChimeSdkVoice.GetVoiceConnectorGroup
+    Amazonka.ChimeSdkVoice.GetVoiceConnectorLoggingConfiguration
+    Amazonka.ChimeSdkVoice.GetVoiceConnectorOrigination
+    Amazonka.ChimeSdkVoice.GetVoiceConnectorProxy
+    Amazonka.ChimeSdkVoice.GetVoiceConnectorStreamingConfiguration
+    Amazonka.ChimeSdkVoice.GetVoiceConnectorTermination
+    Amazonka.ChimeSdkVoice.GetVoiceConnectorTerminationHealth
+    Amazonka.ChimeSdkVoice.Lens
+    Amazonka.ChimeSdkVoice.ListAvailableVoiceConnectorRegions
+    Amazonka.ChimeSdkVoice.ListPhoneNumberOrders
+    Amazonka.ChimeSdkVoice.ListPhoneNumbers
+    Amazonka.ChimeSdkVoice.ListProxySessions
+    Amazonka.ChimeSdkVoice.ListSipMediaApplications
+    Amazonka.ChimeSdkVoice.ListSipRules
+    Amazonka.ChimeSdkVoice.ListSupportedPhoneNumberCountries
+    Amazonka.ChimeSdkVoice.ListVoiceConnectorGroups
+    Amazonka.ChimeSdkVoice.ListVoiceConnectors
+    Amazonka.ChimeSdkVoice.ListVoiceConnectorTerminationCredentials
+    Amazonka.ChimeSdkVoice.PutSipMediaApplicationAlexaSkillConfiguration
+    Amazonka.ChimeSdkVoice.PutSipMediaApplicationLoggingConfiguration
+    Amazonka.ChimeSdkVoice.PutVoiceConnectorEmergencyCallingConfiguration
+    Amazonka.ChimeSdkVoice.PutVoiceConnectorLoggingConfiguration
+    Amazonka.ChimeSdkVoice.PutVoiceConnectorOrigination
+    Amazonka.ChimeSdkVoice.PutVoiceConnectorProxy
+    Amazonka.ChimeSdkVoice.PutVoiceConnectorStreamingConfiguration
+    Amazonka.ChimeSdkVoice.PutVoiceConnectorTermination
+    Amazonka.ChimeSdkVoice.PutVoiceConnectorTerminationCredentials
+    Amazonka.ChimeSdkVoice.RestorePhoneNumber
+    Amazonka.ChimeSdkVoice.SearchAvailablePhoneNumbers
+    Amazonka.ChimeSdkVoice.Types
+    Amazonka.ChimeSdkVoice.Types.Address
+    Amazonka.ChimeSdkVoice.Types.AlexaSkillStatus
+    Amazonka.ChimeSdkVoice.Types.CallingNameStatus
+    Amazonka.ChimeSdkVoice.Types.CandidateAddress
+    Amazonka.ChimeSdkVoice.Types.Capability
+    Amazonka.ChimeSdkVoice.Types.Credential
+    Amazonka.ChimeSdkVoice.Types.DNISEmergencyCallingConfiguration
+    Amazonka.ChimeSdkVoice.Types.EmergencyCallingConfiguration
+    Amazonka.ChimeSdkVoice.Types.ErrorCode
+    Amazonka.ChimeSdkVoice.Types.GeoMatchLevel
+    Amazonka.ChimeSdkVoice.Types.GeoMatchParams
+    Amazonka.ChimeSdkVoice.Types.LoggingConfiguration
+    Amazonka.ChimeSdkVoice.Types.NotificationTarget
+    Amazonka.ChimeSdkVoice.Types.NumberSelectionBehavior
+    Amazonka.ChimeSdkVoice.Types.OrderedPhoneNumber
+    Amazonka.ChimeSdkVoice.Types.OrderedPhoneNumberStatus
+    Amazonka.ChimeSdkVoice.Types.Origination
+    Amazonka.ChimeSdkVoice.Types.OriginationRoute
+    Amazonka.ChimeSdkVoice.Types.OriginationRouteProtocol
+    Amazonka.ChimeSdkVoice.Types.Participant
+    Amazonka.ChimeSdkVoice.Types.PhoneNumber
+    Amazonka.ChimeSdkVoice.Types.PhoneNumberAssociation
+    Amazonka.ChimeSdkVoice.Types.PhoneNumberAssociationName
+    Amazonka.ChimeSdkVoice.Types.PhoneNumberCapabilities
+    Amazonka.ChimeSdkVoice.Types.PhoneNumberCountry
+    Amazonka.ChimeSdkVoice.Types.PhoneNumberError
+    Amazonka.ChimeSdkVoice.Types.PhoneNumberOrder
+    Amazonka.ChimeSdkVoice.Types.PhoneNumberOrderStatus
+    Amazonka.ChimeSdkVoice.Types.PhoneNumberOrderType
+    Amazonka.ChimeSdkVoice.Types.PhoneNumberProductType
+    Amazonka.ChimeSdkVoice.Types.PhoneNumberStatus
+    Amazonka.ChimeSdkVoice.Types.PhoneNumberType
+    Amazonka.ChimeSdkVoice.Types.Proxy
+    Amazonka.ChimeSdkVoice.Types.ProxySession
+    Amazonka.ChimeSdkVoice.Types.ProxySessionStatus
+    Amazonka.ChimeSdkVoice.Types.SipMediaApplication
+    Amazonka.ChimeSdkVoice.Types.SipMediaApplicationAlexaSkillConfiguration
+    Amazonka.ChimeSdkVoice.Types.SipMediaApplicationCall
+    Amazonka.ChimeSdkVoice.Types.SipMediaApplicationEndpoint
+    Amazonka.ChimeSdkVoice.Types.SipMediaApplicationLoggingConfiguration
+    Amazonka.ChimeSdkVoice.Types.SipRule
+    Amazonka.ChimeSdkVoice.Types.SipRuleTargetApplication
+    Amazonka.ChimeSdkVoice.Types.SipRuleTriggerType
+    Amazonka.ChimeSdkVoice.Types.StreamingConfiguration
+    Amazonka.ChimeSdkVoice.Types.StreamingNotificationTarget
+    Amazonka.ChimeSdkVoice.Types.Termination
+    Amazonka.ChimeSdkVoice.Types.TerminationHealth
+    Amazonka.ChimeSdkVoice.Types.UpdatePhoneNumberRequestItem
+    Amazonka.ChimeSdkVoice.Types.VoiceConnector
+    Amazonka.ChimeSdkVoice.Types.VoiceConnectorAwsRegion
+    Amazonka.ChimeSdkVoice.Types.VoiceConnectorGroup
+    Amazonka.ChimeSdkVoice.Types.VoiceConnectorItem
+    Amazonka.ChimeSdkVoice.Types.VoiceConnectorSettings
+    Amazonka.ChimeSdkVoice.UpdateGlobalSettings
+    Amazonka.ChimeSdkVoice.UpdatePhoneNumber
+    Amazonka.ChimeSdkVoice.UpdatePhoneNumberSettings
+    Amazonka.ChimeSdkVoice.UpdateProxySession
+    Amazonka.ChimeSdkVoice.UpdateSipMediaApplication
+    Amazonka.ChimeSdkVoice.UpdateSipMediaApplicationCall
+    Amazonka.ChimeSdkVoice.UpdateSipRule
+    Amazonka.ChimeSdkVoice.UpdateVoiceConnector
+    Amazonka.ChimeSdkVoice.UpdateVoiceConnectorGroup
+    Amazonka.ChimeSdkVoice.ValidateE911Address
+    Amazonka.ChimeSdkVoice.Waiters
+
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
+
+test-suite amazonka-chime-sdk-voice-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.ChimeSdkVoice
+    Test.Amazonka.ChimeSdkVoice.Internal
+    Test.Amazonka.Gen.ChimeSdkVoice
+
+  build-depends:
+    , amazonka-chime-sdk-voice
+    , 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/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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/GetSipMediaApplicationAlexaSkillConfiguration.yaml b/fixture/GetSipMediaApplicationAlexaSkillConfiguration.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetSipMediaApplicationAlexaSkillConfiguration.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/GetSipMediaApplicationAlexaSkillConfigurationResponse.proto b/fixture/GetSipMediaApplicationAlexaSkillConfigurationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetSipMediaApplicationAlexaSkillConfigurationResponse.proto
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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/ListAvailableVoiceConnectorRegions.yaml b/fixture/ListAvailableVoiceConnectorRegions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListAvailableVoiceConnectorRegions.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/ListAvailableVoiceConnectorRegionsResponse.proto b/fixture/ListAvailableVoiceConnectorRegionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListAvailableVoiceConnectorRegionsResponse.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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/PutSipMediaApplicationAlexaSkillConfiguration.yaml b/fixture/PutSipMediaApplicationAlexaSkillConfiguration.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PutSipMediaApplicationAlexaSkillConfiguration.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/PutSipMediaApplicationAlexaSkillConfigurationResponse.proto b/fixture/PutSipMediaApplicationAlexaSkillConfigurationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PutSipMediaApplicationAlexaSkillConfigurationResponse.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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/voice-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  voice-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/ChimeSdkVoice.hs b/gen/Amazonka/ChimeSdkVoice.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice.hs
@@ -0,0 +1,807 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.ChimeSdkVoice
+-- 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 @2022-08-03@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- The Amazon Chime SDK Voice APIs enable software developers to add
+-- telephony capabilties to their custom communication solutions. You use
+-- these APIs with SIP infrastructure and Amazon Chime SDK Voice
+-- Connectors. For more information, see
+-- <https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Voice.html Amazon Chime SDK Voice>.
+module Amazonka.ChimeSdkVoice
+  ( -- * 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,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** AssociatePhoneNumbersWithVoiceConnector
+    AssociatePhoneNumbersWithVoiceConnector (AssociatePhoneNumbersWithVoiceConnector'),
+    newAssociatePhoneNumbersWithVoiceConnector,
+    AssociatePhoneNumbersWithVoiceConnectorResponse (AssociatePhoneNumbersWithVoiceConnectorResponse'),
+    newAssociatePhoneNumbersWithVoiceConnectorResponse,
+
+    -- ** AssociatePhoneNumbersWithVoiceConnectorGroup
+    AssociatePhoneNumbersWithVoiceConnectorGroup (AssociatePhoneNumbersWithVoiceConnectorGroup'),
+    newAssociatePhoneNumbersWithVoiceConnectorGroup,
+    AssociatePhoneNumbersWithVoiceConnectorGroupResponse (AssociatePhoneNumbersWithVoiceConnectorGroupResponse'),
+    newAssociatePhoneNumbersWithVoiceConnectorGroupResponse,
+
+    -- ** BatchDeletePhoneNumber
+    BatchDeletePhoneNumber (BatchDeletePhoneNumber'),
+    newBatchDeletePhoneNumber,
+    BatchDeletePhoneNumberResponse (BatchDeletePhoneNumberResponse'),
+    newBatchDeletePhoneNumberResponse,
+
+    -- ** BatchUpdatePhoneNumber
+    BatchUpdatePhoneNumber (BatchUpdatePhoneNumber'),
+    newBatchUpdatePhoneNumber,
+    BatchUpdatePhoneNumberResponse (BatchUpdatePhoneNumberResponse'),
+    newBatchUpdatePhoneNumberResponse,
+
+    -- ** CreatePhoneNumberOrder
+    CreatePhoneNumberOrder (CreatePhoneNumberOrder'),
+    newCreatePhoneNumberOrder,
+    CreatePhoneNumberOrderResponse (CreatePhoneNumberOrderResponse'),
+    newCreatePhoneNumberOrderResponse,
+
+    -- ** CreateProxySession
+    CreateProxySession (CreateProxySession'),
+    newCreateProxySession,
+    CreateProxySessionResponse (CreateProxySessionResponse'),
+    newCreateProxySessionResponse,
+
+    -- ** CreateSipMediaApplication
+    CreateSipMediaApplication (CreateSipMediaApplication'),
+    newCreateSipMediaApplication,
+    CreateSipMediaApplicationResponse (CreateSipMediaApplicationResponse'),
+    newCreateSipMediaApplicationResponse,
+
+    -- ** CreateSipMediaApplicationCall
+    CreateSipMediaApplicationCall (CreateSipMediaApplicationCall'),
+    newCreateSipMediaApplicationCall,
+    CreateSipMediaApplicationCallResponse (CreateSipMediaApplicationCallResponse'),
+    newCreateSipMediaApplicationCallResponse,
+
+    -- ** CreateSipRule
+    CreateSipRule (CreateSipRule'),
+    newCreateSipRule,
+    CreateSipRuleResponse (CreateSipRuleResponse'),
+    newCreateSipRuleResponse,
+
+    -- ** CreateVoiceConnector
+    CreateVoiceConnector (CreateVoiceConnector'),
+    newCreateVoiceConnector,
+    CreateVoiceConnectorResponse (CreateVoiceConnectorResponse'),
+    newCreateVoiceConnectorResponse,
+
+    -- ** CreateVoiceConnectorGroup
+    CreateVoiceConnectorGroup (CreateVoiceConnectorGroup'),
+    newCreateVoiceConnectorGroup,
+    CreateVoiceConnectorGroupResponse (CreateVoiceConnectorGroupResponse'),
+    newCreateVoiceConnectorGroupResponse,
+
+    -- ** DeletePhoneNumber
+    DeletePhoneNumber (DeletePhoneNumber'),
+    newDeletePhoneNumber,
+    DeletePhoneNumberResponse (DeletePhoneNumberResponse'),
+    newDeletePhoneNumberResponse,
+
+    -- ** DeleteProxySession
+    DeleteProxySession (DeleteProxySession'),
+    newDeleteProxySession,
+    DeleteProxySessionResponse (DeleteProxySessionResponse'),
+    newDeleteProxySessionResponse,
+
+    -- ** 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,
+
+    -- ** DisassociatePhoneNumbersFromVoiceConnector
+    DisassociatePhoneNumbersFromVoiceConnector (DisassociatePhoneNumbersFromVoiceConnector'),
+    newDisassociatePhoneNumbersFromVoiceConnector,
+    DisassociatePhoneNumbersFromVoiceConnectorResponse (DisassociatePhoneNumbersFromVoiceConnectorResponse'),
+    newDisassociatePhoneNumbersFromVoiceConnectorResponse,
+
+    -- ** DisassociatePhoneNumbersFromVoiceConnectorGroup
+    DisassociatePhoneNumbersFromVoiceConnectorGroup (DisassociatePhoneNumbersFromVoiceConnectorGroup'),
+    newDisassociatePhoneNumbersFromVoiceConnectorGroup,
+    DisassociatePhoneNumbersFromVoiceConnectorGroupResponse (DisassociatePhoneNumbersFromVoiceConnectorGroupResponse'),
+    newDisassociatePhoneNumbersFromVoiceConnectorGroupResponse,
+
+    -- ** GetGlobalSettings
+    GetGlobalSettings (GetGlobalSettings'),
+    newGetGlobalSettings,
+    GetGlobalSettingsResponse (GetGlobalSettingsResponse'),
+    newGetGlobalSettingsResponse,
+
+    -- ** 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,
+
+    -- ** GetSipMediaApplication
+    GetSipMediaApplication (GetSipMediaApplication'),
+    newGetSipMediaApplication,
+    GetSipMediaApplicationResponse (GetSipMediaApplicationResponse'),
+    newGetSipMediaApplicationResponse,
+
+    -- ** GetSipMediaApplicationAlexaSkillConfiguration
+    GetSipMediaApplicationAlexaSkillConfiguration (GetSipMediaApplicationAlexaSkillConfiguration'),
+    newGetSipMediaApplicationAlexaSkillConfiguration,
+    GetSipMediaApplicationAlexaSkillConfigurationResponse (GetSipMediaApplicationAlexaSkillConfigurationResponse'),
+    newGetSipMediaApplicationAlexaSkillConfigurationResponse,
+
+    -- ** GetSipMediaApplicationLoggingConfiguration
+    GetSipMediaApplicationLoggingConfiguration (GetSipMediaApplicationLoggingConfiguration'),
+    newGetSipMediaApplicationLoggingConfiguration,
+    GetSipMediaApplicationLoggingConfigurationResponse (GetSipMediaApplicationLoggingConfigurationResponse'),
+    newGetSipMediaApplicationLoggingConfigurationResponse,
+
+    -- ** GetSipRule
+    GetSipRule (GetSipRule'),
+    newGetSipRule,
+    GetSipRuleResponse (GetSipRuleResponse'),
+    newGetSipRuleResponse,
+
+    -- ** 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,
+
+    -- ** ListAvailableVoiceConnectorRegions
+    ListAvailableVoiceConnectorRegions (ListAvailableVoiceConnectorRegions'),
+    newListAvailableVoiceConnectorRegions,
+    ListAvailableVoiceConnectorRegionsResponse (ListAvailableVoiceConnectorRegionsResponse'),
+    newListAvailableVoiceConnectorRegionsResponse,
+
+    -- ** ListPhoneNumberOrders
+    ListPhoneNumberOrders (ListPhoneNumberOrders'),
+    newListPhoneNumberOrders,
+    ListPhoneNumberOrdersResponse (ListPhoneNumberOrdersResponse'),
+    newListPhoneNumberOrdersResponse,
+
+    -- ** ListPhoneNumbers
+    ListPhoneNumbers (ListPhoneNumbers'),
+    newListPhoneNumbers,
+    ListPhoneNumbersResponse (ListPhoneNumbersResponse'),
+    newListPhoneNumbersResponse,
+
+    -- ** ListProxySessions
+    ListProxySessions (ListProxySessions'),
+    newListProxySessions,
+    ListProxySessionsResponse (ListProxySessionsResponse'),
+    newListProxySessionsResponse,
+
+    -- ** ListSipMediaApplications (Paginated)
+    ListSipMediaApplications (ListSipMediaApplications'),
+    newListSipMediaApplications,
+    ListSipMediaApplicationsResponse (ListSipMediaApplicationsResponse'),
+    newListSipMediaApplicationsResponse,
+
+    -- ** ListSipRules (Paginated)
+    ListSipRules (ListSipRules'),
+    newListSipRules,
+    ListSipRulesResponse (ListSipRulesResponse'),
+    newListSipRulesResponse,
+
+    -- ** ListSupportedPhoneNumberCountries
+    ListSupportedPhoneNumberCountries (ListSupportedPhoneNumberCountries'),
+    newListSupportedPhoneNumberCountries,
+    ListSupportedPhoneNumberCountriesResponse (ListSupportedPhoneNumberCountriesResponse'),
+    newListSupportedPhoneNumberCountriesResponse,
+
+    -- ** ListVoiceConnectorGroups
+    ListVoiceConnectorGroups (ListVoiceConnectorGroups'),
+    newListVoiceConnectorGroups,
+    ListVoiceConnectorGroupsResponse (ListVoiceConnectorGroupsResponse'),
+    newListVoiceConnectorGroupsResponse,
+
+    -- ** ListVoiceConnectorTerminationCredentials
+    ListVoiceConnectorTerminationCredentials (ListVoiceConnectorTerminationCredentials'),
+    newListVoiceConnectorTerminationCredentials,
+    ListVoiceConnectorTerminationCredentialsResponse (ListVoiceConnectorTerminationCredentialsResponse'),
+    newListVoiceConnectorTerminationCredentialsResponse,
+
+    -- ** ListVoiceConnectors
+    ListVoiceConnectors (ListVoiceConnectors'),
+    newListVoiceConnectors,
+    ListVoiceConnectorsResponse (ListVoiceConnectorsResponse'),
+    newListVoiceConnectorsResponse,
+
+    -- ** PutSipMediaApplicationAlexaSkillConfiguration
+    PutSipMediaApplicationAlexaSkillConfiguration (PutSipMediaApplicationAlexaSkillConfiguration'),
+    newPutSipMediaApplicationAlexaSkillConfiguration,
+    PutSipMediaApplicationAlexaSkillConfigurationResponse (PutSipMediaApplicationAlexaSkillConfigurationResponse'),
+    newPutSipMediaApplicationAlexaSkillConfigurationResponse,
+
+    -- ** 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,
+
+    -- ** RestorePhoneNumber
+    RestorePhoneNumber (RestorePhoneNumber'),
+    newRestorePhoneNumber,
+    RestorePhoneNumberResponse (RestorePhoneNumberResponse'),
+    newRestorePhoneNumberResponse,
+
+    -- ** SearchAvailablePhoneNumbers
+    SearchAvailablePhoneNumbers (SearchAvailablePhoneNumbers'),
+    newSearchAvailablePhoneNumbers,
+    SearchAvailablePhoneNumbersResponse (SearchAvailablePhoneNumbersResponse'),
+    newSearchAvailablePhoneNumbersResponse,
+
+    -- ** 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,
+
+    -- ** UpdateSipMediaApplication
+    UpdateSipMediaApplication (UpdateSipMediaApplication'),
+    newUpdateSipMediaApplication,
+    UpdateSipMediaApplicationResponse (UpdateSipMediaApplicationResponse'),
+    newUpdateSipMediaApplicationResponse,
+
+    -- ** UpdateSipMediaApplicationCall
+    UpdateSipMediaApplicationCall (UpdateSipMediaApplicationCall'),
+    newUpdateSipMediaApplicationCall,
+    UpdateSipMediaApplicationCallResponse (UpdateSipMediaApplicationCallResponse'),
+    newUpdateSipMediaApplicationCallResponse,
+
+    -- ** UpdateSipRule
+    UpdateSipRule (UpdateSipRule'),
+    newUpdateSipRule,
+    UpdateSipRuleResponse (UpdateSipRuleResponse'),
+    newUpdateSipRuleResponse,
+
+    -- ** UpdateVoiceConnector
+    UpdateVoiceConnector (UpdateVoiceConnector'),
+    newUpdateVoiceConnector,
+    UpdateVoiceConnectorResponse (UpdateVoiceConnectorResponse'),
+    newUpdateVoiceConnectorResponse,
+
+    -- ** UpdateVoiceConnectorGroup
+    UpdateVoiceConnectorGroup (UpdateVoiceConnectorGroup'),
+    newUpdateVoiceConnectorGroup,
+    UpdateVoiceConnectorGroupResponse (UpdateVoiceConnectorGroupResponse'),
+    newUpdateVoiceConnectorGroupResponse,
+
+    -- ** ValidateE911Address
+    ValidateE911Address (ValidateE911Address'),
+    newValidateE911Address,
+    ValidateE911AddressResponse (ValidateE911AddressResponse'),
+    newValidateE911AddressResponse,
+
+    -- * Types
+
+    -- ** AlexaSkillStatus
+    AlexaSkillStatus (..),
+
+    -- ** CallingNameStatus
+    CallingNameStatus (..),
+
+    -- ** Capability
+    Capability (..),
+
+    -- ** ErrorCode
+    ErrorCode (..),
+
+    -- ** GeoMatchLevel
+    GeoMatchLevel (..),
+
+    -- ** NotificationTarget
+    NotificationTarget (..),
+
+    -- ** NumberSelectionBehavior
+    NumberSelectionBehavior (..),
+
+    -- ** OrderedPhoneNumberStatus
+    OrderedPhoneNumberStatus (..),
+
+    -- ** OriginationRouteProtocol
+    OriginationRouteProtocol (..),
+
+    -- ** PhoneNumberAssociationName
+    PhoneNumberAssociationName (..),
+
+    -- ** PhoneNumberOrderStatus
+    PhoneNumberOrderStatus (..),
+
+    -- ** PhoneNumberOrderType
+    PhoneNumberOrderType (..),
+
+    -- ** PhoneNumberProductType
+    PhoneNumberProductType (..),
+
+    -- ** PhoneNumberStatus
+    PhoneNumberStatus (..),
+
+    -- ** PhoneNumberType
+    PhoneNumberType (..),
+
+    -- ** ProxySessionStatus
+    ProxySessionStatus (..),
+
+    -- ** SipRuleTriggerType
+    SipRuleTriggerType (..),
+
+    -- ** VoiceConnectorAwsRegion
+    VoiceConnectorAwsRegion (..),
+
+    -- ** Address
+    Address (Address'),
+    newAddress,
+
+    -- ** CandidateAddress
+    CandidateAddress (CandidateAddress'),
+    newCandidateAddress,
+
+    -- ** Credential
+    Credential (Credential'),
+    newCredential,
+
+    -- ** DNISEmergencyCallingConfiguration
+    DNISEmergencyCallingConfiguration (DNISEmergencyCallingConfiguration'),
+    newDNISEmergencyCallingConfiguration,
+
+    -- ** EmergencyCallingConfiguration
+    EmergencyCallingConfiguration (EmergencyCallingConfiguration'),
+    newEmergencyCallingConfiguration,
+
+    -- ** GeoMatchParams
+    GeoMatchParams (GeoMatchParams'),
+    newGeoMatchParams,
+
+    -- ** LoggingConfiguration
+    LoggingConfiguration (LoggingConfiguration'),
+    newLoggingConfiguration,
+
+    -- ** 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,
+
+    -- ** SipMediaApplication
+    SipMediaApplication (SipMediaApplication'),
+    newSipMediaApplication,
+
+    -- ** SipMediaApplicationAlexaSkillConfiguration
+    SipMediaApplicationAlexaSkillConfiguration (SipMediaApplicationAlexaSkillConfiguration'),
+    newSipMediaApplicationAlexaSkillConfiguration,
+
+    -- ** SipMediaApplicationCall
+    SipMediaApplicationCall (SipMediaApplicationCall'),
+    newSipMediaApplicationCall,
+
+    -- ** SipMediaApplicationEndpoint
+    SipMediaApplicationEndpoint (SipMediaApplicationEndpoint'),
+    newSipMediaApplicationEndpoint,
+
+    -- ** SipMediaApplicationLoggingConfiguration
+    SipMediaApplicationLoggingConfiguration (SipMediaApplicationLoggingConfiguration'),
+    newSipMediaApplicationLoggingConfiguration,
+
+    -- ** SipRule
+    SipRule (SipRule'),
+    newSipRule,
+
+    -- ** SipRuleTargetApplication
+    SipRuleTargetApplication (SipRuleTargetApplication'),
+    newSipRuleTargetApplication,
+
+    -- ** StreamingConfiguration
+    StreamingConfiguration (StreamingConfiguration'),
+    newStreamingConfiguration,
+
+    -- ** StreamingNotificationTarget
+    StreamingNotificationTarget (StreamingNotificationTarget'),
+    newStreamingNotificationTarget,
+
+    -- ** Termination
+    Termination (Termination'),
+    newTermination,
+
+    -- ** TerminationHealth
+    TerminationHealth (TerminationHealth'),
+    newTerminationHealth,
+
+    -- ** UpdatePhoneNumberRequestItem
+    UpdatePhoneNumberRequestItem (UpdatePhoneNumberRequestItem'),
+    newUpdatePhoneNumberRequestItem,
+
+    -- ** VoiceConnector
+    VoiceConnector (VoiceConnector'),
+    newVoiceConnector,
+
+    -- ** VoiceConnectorGroup
+    VoiceConnectorGroup (VoiceConnectorGroup'),
+    newVoiceConnectorGroup,
+
+    -- ** VoiceConnectorItem
+    VoiceConnectorItem (VoiceConnectorItem'),
+    newVoiceConnectorItem,
+
+    -- ** VoiceConnectorSettings
+    VoiceConnectorSettings (VoiceConnectorSettings'),
+    newVoiceConnectorSettings,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.AssociatePhoneNumbersWithVoiceConnector
+import Amazonka.ChimeSdkVoice.AssociatePhoneNumbersWithVoiceConnectorGroup
+import Amazonka.ChimeSdkVoice.BatchDeletePhoneNumber
+import Amazonka.ChimeSdkVoice.BatchUpdatePhoneNumber
+import Amazonka.ChimeSdkVoice.CreatePhoneNumberOrder
+import Amazonka.ChimeSdkVoice.CreateProxySession
+import Amazonka.ChimeSdkVoice.CreateSipMediaApplication
+import Amazonka.ChimeSdkVoice.CreateSipMediaApplicationCall
+import Amazonka.ChimeSdkVoice.CreateSipRule
+import Amazonka.ChimeSdkVoice.CreateVoiceConnector
+import Amazonka.ChimeSdkVoice.CreateVoiceConnectorGroup
+import Amazonka.ChimeSdkVoice.DeletePhoneNumber
+import Amazonka.ChimeSdkVoice.DeleteProxySession
+import Amazonka.ChimeSdkVoice.DeleteSipMediaApplication
+import Amazonka.ChimeSdkVoice.DeleteSipRule
+import Amazonka.ChimeSdkVoice.DeleteVoiceConnector
+import Amazonka.ChimeSdkVoice.DeleteVoiceConnectorEmergencyCallingConfiguration
+import Amazonka.ChimeSdkVoice.DeleteVoiceConnectorGroup
+import Amazonka.ChimeSdkVoice.DeleteVoiceConnectorOrigination
+import Amazonka.ChimeSdkVoice.DeleteVoiceConnectorProxy
+import Amazonka.ChimeSdkVoice.DeleteVoiceConnectorStreamingConfiguration
+import Amazonka.ChimeSdkVoice.DeleteVoiceConnectorTermination
+import Amazonka.ChimeSdkVoice.DeleteVoiceConnectorTerminationCredentials
+import Amazonka.ChimeSdkVoice.DisassociatePhoneNumbersFromVoiceConnector
+import Amazonka.ChimeSdkVoice.DisassociatePhoneNumbersFromVoiceConnectorGroup
+import Amazonka.ChimeSdkVoice.GetGlobalSettings
+import Amazonka.ChimeSdkVoice.GetPhoneNumber
+import Amazonka.ChimeSdkVoice.GetPhoneNumberOrder
+import Amazonka.ChimeSdkVoice.GetPhoneNumberSettings
+import Amazonka.ChimeSdkVoice.GetProxySession
+import Amazonka.ChimeSdkVoice.GetSipMediaApplication
+import Amazonka.ChimeSdkVoice.GetSipMediaApplicationAlexaSkillConfiguration
+import Amazonka.ChimeSdkVoice.GetSipMediaApplicationLoggingConfiguration
+import Amazonka.ChimeSdkVoice.GetSipRule
+import Amazonka.ChimeSdkVoice.GetVoiceConnector
+import Amazonka.ChimeSdkVoice.GetVoiceConnectorEmergencyCallingConfiguration
+import Amazonka.ChimeSdkVoice.GetVoiceConnectorGroup
+import Amazonka.ChimeSdkVoice.GetVoiceConnectorLoggingConfiguration
+import Amazonka.ChimeSdkVoice.GetVoiceConnectorOrigination
+import Amazonka.ChimeSdkVoice.GetVoiceConnectorProxy
+import Amazonka.ChimeSdkVoice.GetVoiceConnectorStreamingConfiguration
+import Amazonka.ChimeSdkVoice.GetVoiceConnectorTermination
+import Amazonka.ChimeSdkVoice.GetVoiceConnectorTerminationHealth
+import Amazonka.ChimeSdkVoice.Lens
+import Amazonka.ChimeSdkVoice.ListAvailableVoiceConnectorRegions
+import Amazonka.ChimeSdkVoice.ListPhoneNumberOrders
+import Amazonka.ChimeSdkVoice.ListPhoneNumbers
+import Amazonka.ChimeSdkVoice.ListProxySessions
+import Amazonka.ChimeSdkVoice.ListSipMediaApplications
+import Amazonka.ChimeSdkVoice.ListSipRules
+import Amazonka.ChimeSdkVoice.ListSupportedPhoneNumberCountries
+import Amazonka.ChimeSdkVoice.ListVoiceConnectorGroups
+import Amazonka.ChimeSdkVoice.ListVoiceConnectorTerminationCredentials
+import Amazonka.ChimeSdkVoice.ListVoiceConnectors
+import Amazonka.ChimeSdkVoice.PutSipMediaApplicationAlexaSkillConfiguration
+import Amazonka.ChimeSdkVoice.PutSipMediaApplicationLoggingConfiguration
+import Amazonka.ChimeSdkVoice.PutVoiceConnectorEmergencyCallingConfiguration
+import Amazonka.ChimeSdkVoice.PutVoiceConnectorLoggingConfiguration
+import Amazonka.ChimeSdkVoice.PutVoiceConnectorOrigination
+import Amazonka.ChimeSdkVoice.PutVoiceConnectorProxy
+import Amazonka.ChimeSdkVoice.PutVoiceConnectorStreamingConfiguration
+import Amazonka.ChimeSdkVoice.PutVoiceConnectorTermination
+import Amazonka.ChimeSdkVoice.PutVoiceConnectorTerminationCredentials
+import Amazonka.ChimeSdkVoice.RestorePhoneNumber
+import Amazonka.ChimeSdkVoice.SearchAvailablePhoneNumbers
+import Amazonka.ChimeSdkVoice.Types
+import Amazonka.ChimeSdkVoice.UpdateGlobalSettings
+import Amazonka.ChimeSdkVoice.UpdatePhoneNumber
+import Amazonka.ChimeSdkVoice.UpdatePhoneNumberSettings
+import Amazonka.ChimeSdkVoice.UpdateProxySession
+import Amazonka.ChimeSdkVoice.UpdateSipMediaApplication
+import Amazonka.ChimeSdkVoice.UpdateSipMediaApplicationCall
+import Amazonka.ChimeSdkVoice.UpdateSipRule
+import Amazonka.ChimeSdkVoice.UpdateVoiceConnector
+import Amazonka.ChimeSdkVoice.UpdateVoiceConnectorGroup
+import Amazonka.ChimeSdkVoice.ValidateE911Address
+import Amazonka.ChimeSdkVoice.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 'ChimeSdkVoice'.
+
+-- $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/ChimeSdkVoice/AssociatePhoneNumbersWithVoiceConnector.hs b/gen/Amazonka/ChimeSdkVoice/AssociatePhoneNumbersWithVoiceConnector.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/AssociatePhoneNumbersWithVoiceConnector.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { forceAssociate :: Prelude.Maybe Prelude.Bool,
+    voiceConnectorId :: Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'voiceConnectorId', 'associatePhoneNumbersWithVoiceConnector_voiceConnectorId' - Undocumented member.
+--
+-- 'e164PhoneNumbers', 'associatePhoneNumbersWithVoiceConnector_e164PhoneNumbers' - Undocumented member.
+newAssociatePhoneNumbersWithVoiceConnector ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  AssociatePhoneNumbersWithVoiceConnector
+newAssociatePhoneNumbersWithVoiceConnector
+  pVoiceConnectorId_ =
+    AssociatePhoneNumbersWithVoiceConnector'
+      { forceAssociate =
+          Prelude.Nothing,
+        voiceConnectorId =
+          pVoiceConnectorId_,
+        e164PhoneNumbers = Prelude.mempty
+      }
+
+-- | Undocumented member.
+associatePhoneNumbersWithVoiceConnector_forceAssociate :: Lens.Lens' AssociatePhoneNumbersWithVoiceConnector (Prelude.Maybe Prelude.Bool)
+associatePhoneNumbersWithVoiceConnector_forceAssociate = Lens.lens (\AssociatePhoneNumbersWithVoiceConnector' {forceAssociate} -> forceAssociate) (\s@AssociatePhoneNumbersWithVoiceConnector' {} a -> s {forceAssociate = a} :: AssociatePhoneNumbersWithVoiceConnector)
+
+-- | Undocumented member.
+associatePhoneNumbersWithVoiceConnector_voiceConnectorId :: Lens.Lens' AssociatePhoneNumbersWithVoiceConnector Prelude.Text
+associatePhoneNumbersWithVoiceConnector_voiceConnectorId = Lens.lens (\AssociatePhoneNumbersWithVoiceConnector' {voiceConnectorId} -> voiceConnectorId) (\s@AssociatePhoneNumbersWithVoiceConnector' {} a -> s {voiceConnectorId = a} :: AssociatePhoneNumbersWithVoiceConnector)
+
+-- | Undocumented member.
+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'
+  { phoneNumberErrors :: Prelude.Maybe [PhoneNumberError],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, 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' - Undocumented member.
+--
+-- 'httpStatus', 'associatePhoneNumbersWithVoiceConnectorResponse_httpStatus' - The response's http status code.
+newAssociatePhoneNumbersWithVoiceConnectorResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  AssociatePhoneNumbersWithVoiceConnectorResponse
+newAssociatePhoneNumbersWithVoiceConnectorResponse
+  pHttpStatus_ =
+    AssociatePhoneNumbersWithVoiceConnectorResponse'
+      { phoneNumberErrors =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/AssociatePhoneNumbersWithVoiceConnectorGroup.hs b/gen/Amazonka/ChimeSdkVoice/AssociatePhoneNumbersWithVoiceConnectorGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/AssociatePhoneNumbersWithVoiceConnectorGroup.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { forceAssociate :: Prelude.Maybe Prelude.Bool,
+    voiceConnectorGroupId :: Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'voiceConnectorGroupId', 'associatePhoneNumbersWithVoiceConnectorGroup_voiceConnectorGroupId' - Undocumented member.
+--
+-- 'e164PhoneNumbers', 'associatePhoneNumbersWithVoiceConnectorGroup_e164PhoneNumbers' - Undocumented member.
+newAssociatePhoneNumbersWithVoiceConnectorGroup ::
+  -- | 'voiceConnectorGroupId'
+  Prelude.Text ->
+  AssociatePhoneNumbersWithVoiceConnectorGroup
+newAssociatePhoneNumbersWithVoiceConnectorGroup
+  pVoiceConnectorGroupId_ =
+    AssociatePhoneNumbersWithVoiceConnectorGroup'
+      { forceAssociate =
+          Prelude.Nothing,
+        voiceConnectorGroupId =
+          pVoiceConnectorGroupId_,
+        e164PhoneNumbers =
+          Prelude.mempty
+      }
+
+-- | Undocumented member.
+associatePhoneNumbersWithVoiceConnectorGroup_forceAssociate :: Lens.Lens' AssociatePhoneNumbersWithVoiceConnectorGroup (Prelude.Maybe Prelude.Bool)
+associatePhoneNumbersWithVoiceConnectorGroup_forceAssociate = Lens.lens (\AssociatePhoneNumbersWithVoiceConnectorGroup' {forceAssociate} -> forceAssociate) (\s@AssociatePhoneNumbersWithVoiceConnectorGroup' {} a -> s {forceAssociate = a} :: AssociatePhoneNumbersWithVoiceConnectorGroup)
+
+-- | Undocumented member.
+associatePhoneNumbersWithVoiceConnectorGroup_voiceConnectorGroupId :: Lens.Lens' AssociatePhoneNumbersWithVoiceConnectorGroup Prelude.Text
+associatePhoneNumbersWithVoiceConnectorGroup_voiceConnectorGroupId = Lens.lens (\AssociatePhoneNumbersWithVoiceConnectorGroup' {voiceConnectorGroupId} -> voiceConnectorGroupId) (\s@AssociatePhoneNumbersWithVoiceConnectorGroup' {} a -> s {voiceConnectorGroupId = a} :: AssociatePhoneNumbersWithVoiceConnectorGroup)
+
+-- | Undocumented member.
+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'
+  { phoneNumberErrors :: Prelude.Maybe [PhoneNumberError],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, 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' - Undocumented member.
+--
+-- 'httpStatus', 'associatePhoneNumbersWithVoiceConnectorGroupResponse_httpStatus' - The response's http status code.
+newAssociatePhoneNumbersWithVoiceConnectorGroupResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  AssociatePhoneNumbersWithVoiceConnectorGroupResponse
+newAssociatePhoneNumbersWithVoiceConnectorGroupResponse
+  pHttpStatus_ =
+    AssociatePhoneNumbersWithVoiceConnectorGroupResponse'
+      { phoneNumberErrors =
+          Prelude.Nothing,
+        httpStatus =
+          pHttpStatus_
+      }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/BatchDeletePhoneNumber.hs b/gen/Amazonka/ChimeSdkVoice/BatchDeletePhoneNumber.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/BatchDeletePhoneNumber.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.BatchDeletePhoneNumber
+  ( -- * Creating a Request
+    BatchDeletePhoneNumber (..),
+    newBatchDeletePhoneNumber,
+
+    -- * Request Lenses
+    batchDeletePhoneNumber_phoneNumberIds,
+
+    -- * Destructuring the Response
+    BatchDeletePhoneNumberResponse (..),
+    newBatchDeletePhoneNumberResponse,
+
+    -- * Response Lenses
+    batchDeletePhoneNumberResponse_phoneNumberErrors,
+    batchDeletePhoneNumberResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { 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' - Undocumented member.
+newBatchDeletePhoneNumber ::
+  -- | 'phoneNumberIds'
+  Prelude.NonEmpty Prelude.Text ->
+  BatchDeletePhoneNumber
+newBatchDeletePhoneNumber pPhoneNumberIds_ =
+  BatchDeletePhoneNumber'
+    { phoneNumberIds =
+        Lens.coerced Lens.# pPhoneNumberIds_
+    }
+
+-- | Undocumented member.
+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'
+  { phoneNumberErrors :: Prelude.Maybe [PhoneNumberError],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, 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' - Undocumented member.
+--
+-- 'httpStatus', 'batchDeletePhoneNumberResponse_httpStatus' - The response's http status code.
+newBatchDeletePhoneNumberResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  BatchDeletePhoneNumberResponse
+newBatchDeletePhoneNumberResponse pHttpStatus_ =
+  BatchDeletePhoneNumberResponse'
+    { phoneNumberErrors =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/BatchUpdatePhoneNumber.hs b/gen/Amazonka/ChimeSdkVoice/BatchUpdatePhoneNumber.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/BatchUpdatePhoneNumber.hs
@@ -0,0 +1,169 @@
+{-# 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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.BatchUpdatePhoneNumber
+  ( -- * Creating a Request
+    BatchUpdatePhoneNumber (..),
+    newBatchUpdatePhoneNumber,
+
+    -- * Request Lenses
+    batchUpdatePhoneNumber_updatePhoneNumberRequestItems,
+
+    -- * Destructuring the Response
+    BatchUpdatePhoneNumberResponse (..),
+    newBatchUpdatePhoneNumberResponse,
+
+    -- * Response Lenses
+    batchUpdatePhoneNumberResponse_phoneNumberErrors,
+    batchUpdatePhoneNumberResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { 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' - Undocumented member.
+newBatchUpdatePhoneNumber ::
+  BatchUpdatePhoneNumber
+newBatchUpdatePhoneNumber =
+  BatchUpdatePhoneNumber'
+    { updatePhoneNumberRequestItems =
+        Prelude.mempty
+    }
+
+-- | Undocumented member.
+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'
+  { phoneNumberErrors :: Prelude.Maybe [PhoneNumberError],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, 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' - Undocumented member.
+--
+-- 'httpStatus', 'batchUpdatePhoneNumberResponse_httpStatus' - The response's http status code.
+newBatchUpdatePhoneNumberResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  BatchUpdatePhoneNumberResponse
+newBatchUpdatePhoneNumberResponse pHttpStatus_ =
+  BatchUpdatePhoneNumberResponse'
+    { phoneNumberErrors =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/CreatePhoneNumberOrder.hs b/gen/Amazonka/ChimeSdkVoice/CreatePhoneNumberOrder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/CreatePhoneNumberOrder.hs
@@ -0,0 +1,176 @@
+{-# 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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { productType :: PhoneNumberProductType,
+    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' - Undocumented member.
+--
+-- 'e164PhoneNumbers', 'createPhoneNumberOrder_e164PhoneNumbers' - Undocumented member.
+newCreatePhoneNumberOrder ::
+  -- | 'productType'
+  PhoneNumberProductType ->
+  CreatePhoneNumberOrder
+newCreatePhoneNumberOrder pProductType_ =
+  CreatePhoneNumberOrder'
+    { productType =
+        pProductType_,
+      e164PhoneNumbers = Prelude.mempty
+    }
+
+-- | Undocumented member.
+createPhoneNumberOrder_productType :: Lens.Lens' CreatePhoneNumberOrder PhoneNumberProductType
+createPhoneNumberOrder_productType = Lens.lens (\CreatePhoneNumberOrder' {productType} -> productType) (\s@CreatePhoneNumberOrder' {} a -> s {productType = a} :: CreatePhoneNumberOrder)
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'createPhoneNumberOrderResponse_httpStatus' - The response's http status code.
+newCreatePhoneNumberOrderResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreatePhoneNumberOrderResponse
+newCreatePhoneNumberOrderResponse pHttpStatus_ =
+  CreatePhoneNumberOrderResponse'
+    { phoneNumberOrder =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/CreateProxySession.hs b/gen/Amazonka/ChimeSdkVoice/CreateProxySession.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/CreateProxySession.hs
@@ -0,0 +1,258 @@
+{-# 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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { expiryMinutes :: Prelude.Maybe Prelude.Natural,
+    geoMatchLevel :: Prelude.Maybe GeoMatchLevel,
+    geoMatchParams :: Prelude.Maybe GeoMatchParams,
+    name :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    numberSelectionBehavior :: Prelude.Maybe NumberSelectionBehavior,
+    participantPhoneNumbers :: Prelude.NonEmpty (Data.Sensitive Prelude.Text),
+    capabilities :: [Capability],
+    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' - Undocumented member.
+--
+-- 'geoMatchLevel', 'createProxySession_geoMatchLevel' - Undocumented member.
+--
+-- 'geoMatchParams', 'createProxySession_geoMatchParams' - Undocumented member.
+--
+-- 'name', 'createProxySession_name' - Undocumented member.
+--
+-- 'numberSelectionBehavior', 'createProxySession_numberSelectionBehavior' - Undocumented member.
+--
+-- 'participantPhoneNumbers', 'createProxySession_participantPhoneNumbers' - Undocumented member.
+--
+-- 'capabilities', 'createProxySession_capabilities' - Undocumented member.
+--
+-- 'voiceConnectorId', 'createProxySession_voiceConnectorId' - Undocumented member.
+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_
+      }
+
+-- | Undocumented member.
+createProxySession_expiryMinutes :: Lens.Lens' CreateProxySession (Prelude.Maybe Prelude.Natural)
+createProxySession_expiryMinutes = Lens.lens (\CreateProxySession' {expiryMinutes} -> expiryMinutes) (\s@CreateProxySession' {} a -> s {expiryMinutes = a} :: CreateProxySession)
+
+-- | Undocumented member.
+createProxySession_geoMatchLevel :: Lens.Lens' CreateProxySession (Prelude.Maybe GeoMatchLevel)
+createProxySession_geoMatchLevel = Lens.lens (\CreateProxySession' {geoMatchLevel} -> geoMatchLevel) (\s@CreateProxySession' {} a -> s {geoMatchLevel = a} :: CreateProxySession)
+
+-- | Undocumented member.
+createProxySession_geoMatchParams :: Lens.Lens' CreateProxySession (Prelude.Maybe GeoMatchParams)
+createProxySession_geoMatchParams = Lens.lens (\CreateProxySession' {geoMatchParams} -> geoMatchParams) (\s@CreateProxySession' {} a -> s {geoMatchParams = a} :: CreateProxySession)
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+createProxySession_numberSelectionBehavior :: Lens.Lens' CreateProxySession (Prelude.Maybe NumberSelectionBehavior)
+createProxySession_numberSelectionBehavior = Lens.lens (\CreateProxySession' {numberSelectionBehavior} -> numberSelectionBehavior) (\s@CreateProxySession' {} a -> s {numberSelectionBehavior = a} :: CreateProxySession)
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+createProxySession_capabilities :: Lens.Lens' CreateProxySession [Capability]
+createProxySession_capabilities = Lens.lens (\CreateProxySession' {capabilities} -> capabilities) (\s@CreateProxySession' {} a -> s {capabilities = a} :: CreateProxySession) Prelude.. Lens.coerced
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'createProxySessionResponse_httpStatus' - The response's http status code.
+newCreateProxySessionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateProxySessionResponse
+newCreateProxySessionResponse pHttpStatus_ =
+  CreateProxySessionResponse'
+    { proxySession =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/CreateSipMediaApplication.hs b/gen/Amazonka/ChimeSdkVoice/CreateSipMediaApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/CreateSipMediaApplication.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { awsRegion :: Prelude.Text,
+    name :: Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'name', 'createSipMediaApplication_name' - Undocumented member.
+--
+-- 'endpoints', 'createSipMediaApplication_endpoints' - Undocumented member.
+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_
+      }
+
+-- | Undocumented member.
+createSipMediaApplication_awsRegion :: Lens.Lens' CreateSipMediaApplication Prelude.Text
+createSipMediaApplication_awsRegion = Lens.lens (\CreateSipMediaApplication' {awsRegion} -> awsRegion) (\s@CreateSipMediaApplication' {} a -> s {awsRegion = a} :: CreateSipMediaApplication)
+
+-- | Undocumented member.
+createSipMediaApplication_name :: Lens.Lens' CreateSipMediaApplication Prelude.Text
+createSipMediaApplication_name = Lens.lens (\CreateSipMediaApplication' {name} -> name) (\s@CreateSipMediaApplication' {} a -> s {name = a} :: CreateSipMediaApplication)
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'createSipMediaApplicationResponse_httpStatus' - The response's http status code.
+newCreateSipMediaApplicationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateSipMediaApplicationResponse
+newCreateSipMediaApplicationResponse pHttpStatus_ =
+  CreateSipMediaApplicationResponse'
+    { sipMediaApplication =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/CreateSipMediaApplicationCall.hs b/gen/Amazonka/ChimeSdkVoice/CreateSipMediaApplicationCall.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/CreateSipMediaApplicationCall.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.CreateSipMediaApplicationCall
+  ( -- * Creating a Request
+    CreateSipMediaApplicationCall (..),
+    newCreateSipMediaApplicationCall,
+
+    -- * Request Lenses
+    createSipMediaApplicationCall_argumentsMap,
+    createSipMediaApplicationCall_sipHeaders,
+    createSipMediaApplicationCall_fromPhoneNumber,
+    createSipMediaApplicationCall_toPhoneNumber,
+    createSipMediaApplicationCall_sipMediaApplicationId,
+
+    -- * Destructuring the Response
+    CreateSipMediaApplicationCallResponse (..),
+    newCreateSipMediaApplicationCallResponse,
+
+    -- * Response Lenses
+    createSipMediaApplicationCallResponse_sipMediaApplicationCall,
+    createSipMediaApplicationCallResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { argumentsMap :: Prelude.Maybe (Prelude.HashMap Prelude.Text (Data.Sensitive Prelude.Text)),
+    sipHeaders :: Prelude.Maybe (Prelude.HashMap Prelude.Text (Data.Sensitive Prelude.Text)),
+    fromPhoneNumber :: Data.Sensitive Prelude.Text,
+    toPhoneNumber :: Data.Sensitive Prelude.Text,
+    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:
+--
+-- 'argumentsMap', 'createSipMediaApplicationCall_argumentsMap' - Undocumented member.
+--
+-- 'sipHeaders', 'createSipMediaApplicationCall_sipHeaders' - Undocumented member.
+--
+-- 'fromPhoneNumber', 'createSipMediaApplicationCall_fromPhoneNumber' - Undocumented member.
+--
+-- 'toPhoneNumber', 'createSipMediaApplicationCall_toPhoneNumber' - Undocumented member.
+--
+-- 'sipMediaApplicationId', 'createSipMediaApplicationCall_sipMediaApplicationId' - Undocumented member.
+newCreateSipMediaApplicationCall ::
+  -- | 'fromPhoneNumber'
+  Prelude.Text ->
+  -- | 'toPhoneNumber'
+  Prelude.Text ->
+  -- | 'sipMediaApplicationId'
+  Prelude.Text ->
+  CreateSipMediaApplicationCall
+newCreateSipMediaApplicationCall
+  pFromPhoneNumber_
+  pToPhoneNumber_
+  pSipMediaApplicationId_ =
+    CreateSipMediaApplicationCall'
+      { argumentsMap =
+          Prelude.Nothing,
+        sipHeaders = Prelude.Nothing,
+        fromPhoneNumber =
+          Data._Sensitive Lens.# pFromPhoneNumber_,
+        toPhoneNumber =
+          Data._Sensitive Lens.# pToPhoneNumber_,
+        sipMediaApplicationId =
+          pSipMediaApplicationId_
+      }
+
+-- | Undocumented member.
+createSipMediaApplicationCall_argumentsMap :: Lens.Lens' CreateSipMediaApplicationCall (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createSipMediaApplicationCall_argumentsMap = Lens.lens (\CreateSipMediaApplicationCall' {argumentsMap} -> argumentsMap) (\s@CreateSipMediaApplicationCall' {} a -> s {argumentsMap = a} :: CreateSipMediaApplicationCall) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+createSipMediaApplicationCall_fromPhoneNumber :: Lens.Lens' CreateSipMediaApplicationCall Prelude.Text
+createSipMediaApplicationCall_fromPhoneNumber = Lens.lens (\CreateSipMediaApplicationCall' {fromPhoneNumber} -> fromPhoneNumber) (\s@CreateSipMediaApplicationCall' {} a -> s {fromPhoneNumber = a} :: CreateSipMediaApplicationCall) Prelude.. Data._Sensitive
+
+-- | Undocumented member.
+createSipMediaApplicationCall_toPhoneNumber :: Lens.Lens' CreateSipMediaApplicationCall Prelude.Text
+createSipMediaApplicationCall_toPhoneNumber = Lens.lens (\CreateSipMediaApplicationCall' {toPhoneNumber} -> toPhoneNumber) (\s@CreateSipMediaApplicationCall' {} a -> s {toPhoneNumber = a} :: CreateSipMediaApplicationCall) Prelude.. Data._Sensitive
+
+-- | Undocumented member.
+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` argumentsMap
+      `Prelude.hashWithSalt` sipHeaders
+      `Prelude.hashWithSalt` fromPhoneNumber
+      `Prelude.hashWithSalt` toPhoneNumber
+      `Prelude.hashWithSalt` sipMediaApplicationId
+
+instance Prelude.NFData CreateSipMediaApplicationCall where
+  rnf CreateSipMediaApplicationCall' {..} =
+    Prelude.rnf argumentsMap
+      `Prelude.seq` 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
+          [ ("ArgumentsMap" Data..=) Prelude.<$> argumentsMap,
+            ("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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'createSipMediaApplicationCallResponse_httpStatus' - The response's http status code.
+newCreateSipMediaApplicationCallResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateSipMediaApplicationCallResponse
+newCreateSipMediaApplicationCallResponse pHttpStatus_ =
+  CreateSipMediaApplicationCallResponse'
+    { sipMediaApplicationCall =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/CreateSipRule.hs b/gen/Amazonka/ChimeSdkVoice/CreateSipRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/CreateSipRule.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.CreateSipRule
+  ( -- * Creating a Request
+    CreateSipRule (..),
+    newCreateSipRule,
+
+    -- * Request Lenses
+    createSipRule_disabled,
+    createSipRule_targetApplications,
+    createSipRule_name,
+    createSipRule_triggerType,
+    createSipRule_triggerValue,
+
+    -- * Destructuring the Response
+    CreateSipRuleResponse (..),
+    newCreateSipRuleResponse,
+
+    -- * Response Lenses
+    createSipRuleResponse_sipRule,
+    createSipRuleResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { disabled :: Prelude.Maybe Prelude.Bool,
+    targetApplications :: Prelude.Maybe (Prelude.NonEmpty SipRuleTargetApplication),
+    name :: Prelude.Text,
+    triggerType :: SipRuleTriggerType,
+    triggerValue :: Prelude.Text
+  }
+  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' - Undocumented member.
+--
+-- 'targetApplications', 'createSipRule_targetApplications' - Undocumented member.
+--
+-- 'name', 'createSipRule_name' - Undocumented member.
+--
+-- 'triggerType', 'createSipRule_triggerType' - Undocumented member.
+--
+-- 'triggerValue', 'createSipRule_triggerValue' - Undocumented member.
+newCreateSipRule ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'triggerType'
+  SipRuleTriggerType ->
+  -- | 'triggerValue'
+  Prelude.Text ->
+  CreateSipRule
+newCreateSipRule pName_ pTriggerType_ pTriggerValue_ =
+  CreateSipRule'
+    { disabled = Prelude.Nothing,
+      targetApplications = Prelude.Nothing,
+      name = pName_,
+      triggerType = pTriggerType_,
+      triggerValue = pTriggerValue_
+    }
+
+-- | Undocumented member.
+createSipRule_disabled :: Lens.Lens' CreateSipRule (Prelude.Maybe Prelude.Bool)
+createSipRule_disabled = Lens.lens (\CreateSipRule' {disabled} -> disabled) (\s@CreateSipRule' {} a -> s {disabled = a} :: CreateSipRule)
+
+-- | Undocumented member.
+createSipRule_targetApplications :: Lens.Lens' CreateSipRule (Prelude.Maybe (Prelude.NonEmpty SipRuleTargetApplication))
+createSipRule_targetApplications = Lens.lens (\CreateSipRule' {targetApplications} -> targetApplications) (\s@CreateSipRule' {} a -> s {targetApplications = a} :: CreateSipRule) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+createSipRule_name :: Lens.Lens' CreateSipRule Prelude.Text
+createSipRule_name = Lens.lens (\CreateSipRule' {name} -> name) (\s@CreateSipRule' {} a -> s {name = a} :: CreateSipRule)
+
+-- | Undocumented member.
+createSipRule_triggerType :: Lens.Lens' CreateSipRule SipRuleTriggerType
+createSipRule_triggerType = Lens.lens (\CreateSipRule' {triggerType} -> triggerType) (\s@CreateSipRule' {} a -> s {triggerType = a} :: CreateSipRule)
+
+-- | Undocumented member.
+createSipRule_triggerValue :: Lens.Lens' CreateSipRule Prelude.Text
+createSipRule_triggerValue = Lens.lens (\CreateSipRule' {triggerValue} -> triggerValue) (\s@CreateSipRule' {} a -> s {triggerValue = a} :: CreateSipRule)
+
+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` targetApplications
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` triggerType
+      `Prelude.hashWithSalt` triggerValue
+
+instance Prelude.NFData CreateSipRule where
+  rnf CreateSipRule' {..} =
+    Prelude.rnf disabled
+      `Prelude.seq` Prelude.rnf targetApplications
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf triggerType
+      `Prelude.seq` Prelude.rnf triggerValue
+
+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,
+            ("TargetApplications" Data..=)
+              Prelude.<$> targetApplications,
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("TriggerType" Data..= triggerType),
+            Prelude.Just ("TriggerValue" Data..= triggerValue)
+          ]
+      )
+
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'createSipRuleResponse_httpStatus' - The response's http status code.
+newCreateSipRuleResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateSipRuleResponse
+newCreateSipRuleResponse pHttpStatus_ =
+  CreateSipRuleResponse'
+    { sipRule = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/CreateVoiceConnector.hs b/gen/Amazonka/ChimeSdkVoice/CreateVoiceConnector.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/CreateVoiceConnector.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { awsRegion :: Prelude.Maybe VoiceConnectorAwsRegion,
+    name :: Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'name', 'createVoiceConnector_name' - Undocumented member.
+--
+-- 'requireEncryption', 'createVoiceConnector_requireEncryption' - Undocumented member.
+newCreateVoiceConnector ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'requireEncryption'
+  Prelude.Bool ->
+  CreateVoiceConnector
+newCreateVoiceConnector pName_ pRequireEncryption_ =
+  CreateVoiceConnector'
+    { awsRegion = Prelude.Nothing,
+      name = pName_,
+      requireEncryption = pRequireEncryption_
+    }
+
+-- | Undocumented member.
+createVoiceConnector_awsRegion :: Lens.Lens' CreateVoiceConnector (Prelude.Maybe VoiceConnectorAwsRegion)
+createVoiceConnector_awsRegion = Lens.lens (\CreateVoiceConnector' {awsRegion} -> awsRegion) (\s@CreateVoiceConnector' {} a -> s {awsRegion = a} :: CreateVoiceConnector)
+
+-- | Undocumented member.
+createVoiceConnector_name :: Lens.Lens' CreateVoiceConnector Prelude.Text
+createVoiceConnector_name = Lens.lens (\CreateVoiceConnector' {name} -> name) (\s@CreateVoiceConnector' {} a -> s {name = a} :: CreateVoiceConnector)
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'createVoiceConnectorResponse_httpStatus' - The response's http status code.
+newCreateVoiceConnectorResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateVoiceConnectorResponse
+newCreateVoiceConnectorResponse pHttpStatus_ =
+  CreateVoiceConnectorResponse'
+    { voiceConnector =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/CreateVoiceConnectorGroup.hs b/gen/Amazonka/ChimeSdkVoice/CreateVoiceConnectorGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/CreateVoiceConnectorGroup.hs
@@ -0,0 +1,176 @@
+{-# 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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { voiceConnectorItems :: Prelude.Maybe [VoiceConnectorItem],
+    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' - Undocumented member.
+--
+-- 'name', 'createVoiceConnectorGroup_name' - Undocumented member.
+newCreateVoiceConnectorGroup ::
+  -- | 'name'
+  Prelude.Text ->
+  CreateVoiceConnectorGroup
+newCreateVoiceConnectorGroup pName_ =
+  CreateVoiceConnectorGroup'
+    { voiceConnectorItems =
+        Prelude.Nothing,
+      name = pName_
+    }
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'createVoiceConnectorGroupResponse_httpStatus' - The response's http status code.
+newCreateVoiceConnectorGroupResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateVoiceConnectorGroupResponse
+newCreateVoiceConnectorGroupResponse pHttpStatus_ =
+  CreateVoiceConnectorGroupResponse'
+    { voiceConnectorGroup =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/DeletePhoneNumber.hs b/gen/Amazonka/ChimeSdkVoice/DeletePhoneNumber.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/DeletePhoneNumber.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.DeletePhoneNumber
+  ( -- * Creating a Request
+    DeletePhoneNumber (..),
+    newDeletePhoneNumber,
+
+    -- * Request Lenses
+    deletePhoneNumber_phoneNumberId,
+
+    -- * Destructuring the Response
+    DeletePhoneNumberResponse (..),
+    newDeletePhoneNumberResponse,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { phoneNumberId :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, 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' - Undocumented member.
+newDeletePhoneNumber ::
+  -- | 'phoneNumberId'
+  Prelude.Text ->
+  DeletePhoneNumber
+newDeletePhoneNumber pPhoneNumberId_ =
+  DeletePhoneNumber'
+    { phoneNumberId =
+        Data._Sensitive Lens.# pPhoneNumberId_
+    }
+
+-- | Undocumented member.
+deletePhoneNumber_phoneNumberId :: Lens.Lens' DeletePhoneNumber Prelude.Text
+deletePhoneNumber_phoneNumberId = Lens.lens (\DeletePhoneNumber' {phoneNumberId} -> phoneNumberId) (\s@DeletePhoneNumber' {} a -> s {phoneNumberId = a} :: DeletePhoneNumber) Prelude.. Data._Sensitive
+
+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/ChimeSdkVoice/DeleteProxySession.hs b/gen/Amazonka/ChimeSdkVoice/DeleteProxySession.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/DeleteProxySession.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.DeleteProxySession
+  ( -- * Creating a Request
+    DeleteProxySession (..),
+    newDeleteProxySession,
+
+    -- * Request Lenses
+    deleteProxySession_voiceConnectorId,
+    deleteProxySession_proxySessionId,
+
+    -- * Destructuring the Response
+    DeleteProxySessionResponse (..),
+    newDeleteProxySessionResponse,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { voiceConnectorId :: Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'proxySessionId', 'deleteProxySession_proxySessionId' - Undocumented member.
+newDeleteProxySession ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  -- | 'proxySessionId'
+  Prelude.Text ->
+  DeleteProxySession
+newDeleteProxySession
+  pVoiceConnectorId_
+  pProxySessionId_ =
+    DeleteProxySession'
+      { voiceConnectorId =
+          pVoiceConnectorId_,
+        proxySessionId = pProxySessionId_
+      }
+
+-- | Undocumented member.
+deleteProxySession_voiceConnectorId :: Lens.Lens' DeleteProxySession Prelude.Text
+deleteProxySession_voiceConnectorId = Lens.lens (\DeleteProxySession' {voiceConnectorId} -> voiceConnectorId) (\s@DeleteProxySession' {} a -> s {voiceConnectorId = a} :: DeleteProxySession)
+
+-- | Undocumented member.
+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/ChimeSdkVoice/DeleteSipMediaApplication.hs b/gen/Amazonka/ChimeSdkVoice/DeleteSipMediaApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/DeleteSipMediaApplication.hs
@@ -0,0 +1,125 @@
+{-# 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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.DeleteSipMediaApplication
+  ( -- * Creating a Request
+    DeleteSipMediaApplication (..),
+    newDeleteSipMediaApplication,
+
+    -- * Request Lenses
+    deleteSipMediaApplication_sipMediaApplicationId,
+
+    -- * Destructuring the Response
+    DeleteSipMediaApplicationResponse (..),
+    newDeleteSipMediaApplicationResponse,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { 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' - Undocumented member.
+newDeleteSipMediaApplication ::
+  -- | 'sipMediaApplicationId'
+  Prelude.Text ->
+  DeleteSipMediaApplication
+newDeleteSipMediaApplication pSipMediaApplicationId_ =
+  DeleteSipMediaApplication'
+    { sipMediaApplicationId =
+        pSipMediaApplicationId_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/DeleteSipRule.hs b/gen/Amazonka/ChimeSdkVoice/DeleteSipRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/DeleteSipRule.hs
@@ -0,0 +1,114 @@
+{-# 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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.DeleteSipRule
+  ( -- * Creating a Request
+    DeleteSipRule (..),
+    newDeleteSipRule,
+
+    -- * Request Lenses
+    deleteSipRule_sipRuleId,
+
+    -- * Destructuring the Response
+    DeleteSipRuleResponse (..),
+    newDeleteSipRuleResponse,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { 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' - Undocumented member.
+newDeleteSipRule ::
+  -- | 'sipRuleId'
+  Prelude.Text ->
+  DeleteSipRule
+newDeleteSipRule pSipRuleId_ =
+  DeleteSipRule' {sipRuleId = pSipRuleId_}
+
+-- | Undocumented member.
+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/ChimeSdkVoice/DeleteVoiceConnector.hs b/gen/Amazonka/ChimeSdkVoice/DeleteVoiceConnector.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/DeleteVoiceConnector.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.DeleteVoiceConnector
+  ( -- * Creating a Request
+    DeleteVoiceConnector (..),
+    newDeleteVoiceConnector,
+
+    -- * Request Lenses
+    deleteVoiceConnector_voiceConnectorId,
+
+    -- * Destructuring the Response
+    DeleteVoiceConnectorResponse (..),
+    newDeleteVoiceConnectorResponse,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { 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' - Undocumented member.
+newDeleteVoiceConnector ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  DeleteVoiceConnector
+newDeleteVoiceConnector pVoiceConnectorId_ =
+  DeleteVoiceConnector'
+    { voiceConnectorId =
+        pVoiceConnectorId_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/DeleteVoiceConnectorEmergencyCallingConfiguration.hs b/gen/Amazonka/ChimeSdkVoice/DeleteVoiceConnectorEmergencyCallingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/DeleteVoiceConnectorEmergencyCallingConfiguration.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.DeleteVoiceConnectorEmergencyCallingConfiguration
+  ( -- * Creating a Request
+    DeleteVoiceConnectorEmergencyCallingConfiguration (..),
+    newDeleteVoiceConnectorEmergencyCallingConfiguration,
+
+    -- * Request Lenses
+    deleteVoiceConnectorEmergencyCallingConfiguration_voiceConnectorId,
+
+    -- * Destructuring the Response
+    DeleteVoiceConnectorEmergencyCallingConfigurationResponse (..),
+    newDeleteVoiceConnectorEmergencyCallingConfigurationResponse,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { 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' - Undocumented member.
+newDeleteVoiceConnectorEmergencyCallingConfiguration ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  DeleteVoiceConnectorEmergencyCallingConfiguration
+newDeleteVoiceConnectorEmergencyCallingConfiguration
+  pVoiceConnectorId_ =
+    DeleteVoiceConnectorEmergencyCallingConfiguration'
+      { voiceConnectorId =
+          pVoiceConnectorId_
+      }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/DeleteVoiceConnectorGroup.hs b/gen/Amazonka/ChimeSdkVoice/DeleteVoiceConnectorGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/DeleteVoiceConnectorGroup.hs
@@ -0,0 +1,125 @@
+{-# 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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.DeleteVoiceConnectorGroup
+  ( -- * Creating a Request
+    DeleteVoiceConnectorGroup (..),
+    newDeleteVoiceConnectorGroup,
+
+    -- * Request Lenses
+    deleteVoiceConnectorGroup_voiceConnectorGroupId,
+
+    -- * Destructuring the Response
+    DeleteVoiceConnectorGroupResponse (..),
+    newDeleteVoiceConnectorGroupResponse,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { 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' - Undocumented member.
+newDeleteVoiceConnectorGroup ::
+  -- | 'voiceConnectorGroupId'
+  Prelude.Text ->
+  DeleteVoiceConnectorGroup
+newDeleteVoiceConnectorGroup pVoiceConnectorGroupId_ =
+  DeleteVoiceConnectorGroup'
+    { voiceConnectorGroupId =
+        pVoiceConnectorGroupId_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/DeleteVoiceConnectorOrigination.hs b/gen/Amazonka/ChimeSdkVoice/DeleteVoiceConnectorOrigination.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/DeleteVoiceConnectorOrigination.hs
@@ -0,0 +1,140 @@
+{-# 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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.DeleteVoiceConnectorOrigination
+  ( -- * Creating a Request
+    DeleteVoiceConnectorOrigination (..),
+    newDeleteVoiceConnectorOrigination,
+
+    -- * Request Lenses
+    deleteVoiceConnectorOrigination_voiceConnectorId,
+
+    -- * Destructuring the Response
+    DeleteVoiceConnectorOriginationResponse (..),
+    newDeleteVoiceConnectorOriginationResponse,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { 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' - Undocumented member.
+newDeleteVoiceConnectorOrigination ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  DeleteVoiceConnectorOrigination
+newDeleteVoiceConnectorOrigination pVoiceConnectorId_ =
+  DeleteVoiceConnectorOrigination'
+    { voiceConnectorId =
+        pVoiceConnectorId_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/DeleteVoiceConnectorProxy.hs b/gen/Amazonka/ChimeSdkVoice/DeleteVoiceConnectorProxy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/DeleteVoiceConnectorProxy.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.DeleteVoiceConnectorProxy
+  ( -- * Creating a Request
+    DeleteVoiceConnectorProxy (..),
+    newDeleteVoiceConnectorProxy,
+
+    -- * Request Lenses
+    deleteVoiceConnectorProxy_voiceConnectorId,
+
+    -- * Destructuring the Response
+    DeleteVoiceConnectorProxyResponse (..),
+    newDeleteVoiceConnectorProxyResponse,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { 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' - Undocumented member.
+newDeleteVoiceConnectorProxy ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  DeleteVoiceConnectorProxy
+newDeleteVoiceConnectorProxy pVoiceConnectorId_ =
+  DeleteVoiceConnectorProxy'
+    { voiceConnectorId =
+        pVoiceConnectorId_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/DeleteVoiceConnectorStreamingConfiguration.hs b/gen/Amazonka/ChimeSdkVoice/DeleteVoiceConnectorStreamingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/DeleteVoiceConnectorStreamingConfiguration.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.DeleteVoiceConnectorStreamingConfiguration
+  ( -- * Creating a Request
+    DeleteVoiceConnectorStreamingConfiguration (..),
+    newDeleteVoiceConnectorStreamingConfiguration,
+
+    -- * Request Lenses
+    deleteVoiceConnectorStreamingConfiguration_voiceConnectorId,
+
+    -- * Destructuring the Response
+    DeleteVoiceConnectorStreamingConfigurationResponse (..),
+    newDeleteVoiceConnectorStreamingConfigurationResponse,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { 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' - Undocumented member.
+newDeleteVoiceConnectorStreamingConfiguration ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  DeleteVoiceConnectorStreamingConfiguration
+newDeleteVoiceConnectorStreamingConfiguration
+  pVoiceConnectorId_ =
+    DeleteVoiceConnectorStreamingConfiguration'
+      { voiceConnectorId =
+          pVoiceConnectorId_
+      }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/DeleteVoiceConnectorTermination.hs b/gen/Amazonka/ChimeSdkVoice/DeleteVoiceConnectorTermination.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/DeleteVoiceConnectorTermination.hs
@@ -0,0 +1,140 @@
+{-# 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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.DeleteVoiceConnectorTermination
+  ( -- * Creating a Request
+    DeleteVoiceConnectorTermination (..),
+    newDeleteVoiceConnectorTermination,
+
+    -- * Request Lenses
+    deleteVoiceConnectorTermination_voiceConnectorId,
+
+    -- * Destructuring the Response
+    DeleteVoiceConnectorTerminationResponse (..),
+    newDeleteVoiceConnectorTerminationResponse,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { 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' - Undocumented member.
+newDeleteVoiceConnectorTermination ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  DeleteVoiceConnectorTermination
+newDeleteVoiceConnectorTermination pVoiceConnectorId_ =
+  DeleteVoiceConnectorTermination'
+    { voiceConnectorId =
+        pVoiceConnectorId_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/DeleteVoiceConnectorTerminationCredentials.hs b/gen/Amazonka/ChimeSdkVoice/DeleteVoiceConnectorTerminationCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/DeleteVoiceConnectorTerminationCredentials.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.DeleteVoiceConnectorTerminationCredentials
+  ( -- * Creating a Request
+    DeleteVoiceConnectorTerminationCredentials (..),
+    newDeleteVoiceConnectorTerminationCredentials,
+
+    -- * Request Lenses
+    deleteVoiceConnectorTerminationCredentials_usernames,
+    deleteVoiceConnectorTerminationCredentials_voiceConnectorId,
+
+    -- * Destructuring the Response
+    DeleteVoiceConnectorTerminationCredentialsResponse (..),
+    newDeleteVoiceConnectorTerminationCredentialsResponse,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { usernames :: [Data.Sensitive Prelude.Text],
+    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' - Undocumented member.
+--
+-- 'voiceConnectorId', 'deleteVoiceConnectorTerminationCredentials_voiceConnectorId' - Undocumented member.
+newDeleteVoiceConnectorTerminationCredentials ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  DeleteVoiceConnectorTerminationCredentials
+newDeleteVoiceConnectorTerminationCredentials
+  pVoiceConnectorId_ =
+    DeleteVoiceConnectorTerminationCredentials'
+      { usernames =
+          Prelude.mempty,
+        voiceConnectorId =
+          pVoiceConnectorId_
+      }
+
+-- | Undocumented member.
+deleteVoiceConnectorTerminationCredentials_usernames :: Lens.Lens' DeleteVoiceConnectorTerminationCredentials [Prelude.Text]
+deleteVoiceConnectorTerminationCredentials_usernames = Lens.lens (\DeleteVoiceConnectorTerminationCredentials' {usernames} -> usernames) (\s@DeleteVoiceConnectorTerminationCredentials' {} a -> s {usernames = a} :: DeleteVoiceConnectorTerminationCredentials) Prelude.. Lens.coerced
+
+-- | Undocumented member.
+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/ChimeSdkVoice/DisassociatePhoneNumbersFromVoiceConnector.hs b/gen/Amazonka/ChimeSdkVoice/DisassociatePhoneNumbersFromVoiceConnector.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/DisassociatePhoneNumbersFromVoiceConnector.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { voiceConnectorId :: Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'e164PhoneNumbers', 'disassociatePhoneNumbersFromVoiceConnector_e164PhoneNumbers' - Undocumented member.
+newDisassociatePhoneNumbersFromVoiceConnector ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  DisassociatePhoneNumbersFromVoiceConnector
+newDisassociatePhoneNumbersFromVoiceConnector
+  pVoiceConnectorId_ =
+    DisassociatePhoneNumbersFromVoiceConnector'
+      { voiceConnectorId =
+          pVoiceConnectorId_,
+        e164PhoneNumbers =
+          Prelude.mempty
+      }
+
+-- | Undocumented member.
+disassociatePhoneNumbersFromVoiceConnector_voiceConnectorId :: Lens.Lens' DisassociatePhoneNumbersFromVoiceConnector Prelude.Text
+disassociatePhoneNumbersFromVoiceConnector_voiceConnectorId = Lens.lens (\DisassociatePhoneNumbersFromVoiceConnector' {voiceConnectorId} -> voiceConnectorId) (\s@DisassociatePhoneNumbersFromVoiceConnector' {} a -> s {voiceConnectorId = a} :: DisassociatePhoneNumbersFromVoiceConnector)
+
+-- | Undocumented member.
+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'
+  { phoneNumberErrors :: Prelude.Maybe [PhoneNumberError],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, 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' - Undocumented member.
+--
+-- 'httpStatus', 'disassociatePhoneNumbersFromVoiceConnectorResponse_httpStatus' - The response's http status code.
+newDisassociatePhoneNumbersFromVoiceConnectorResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DisassociatePhoneNumbersFromVoiceConnectorResponse
+newDisassociatePhoneNumbersFromVoiceConnectorResponse
+  pHttpStatus_ =
+    DisassociatePhoneNumbersFromVoiceConnectorResponse'
+      { phoneNumberErrors =
+          Prelude.Nothing,
+        httpStatus =
+          pHttpStatus_
+      }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/DisassociatePhoneNumbersFromVoiceConnectorGroup.hs b/gen/Amazonka/ChimeSdkVoice/DisassociatePhoneNumbersFromVoiceConnectorGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/DisassociatePhoneNumbersFromVoiceConnectorGroup.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { voiceConnectorGroupId :: Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'e164PhoneNumbers', 'disassociatePhoneNumbersFromVoiceConnectorGroup_e164PhoneNumbers' - Undocumented member.
+newDisassociatePhoneNumbersFromVoiceConnectorGroup ::
+  -- | 'voiceConnectorGroupId'
+  Prelude.Text ->
+  DisassociatePhoneNumbersFromVoiceConnectorGroup
+newDisassociatePhoneNumbersFromVoiceConnectorGroup
+  pVoiceConnectorGroupId_ =
+    DisassociatePhoneNumbersFromVoiceConnectorGroup'
+      { voiceConnectorGroupId =
+          pVoiceConnectorGroupId_,
+        e164PhoneNumbers =
+          Prelude.mempty
+      }
+
+-- | Undocumented member.
+disassociatePhoneNumbersFromVoiceConnectorGroup_voiceConnectorGroupId :: Lens.Lens' DisassociatePhoneNumbersFromVoiceConnectorGroup Prelude.Text
+disassociatePhoneNumbersFromVoiceConnectorGroup_voiceConnectorGroupId = Lens.lens (\DisassociatePhoneNumbersFromVoiceConnectorGroup' {voiceConnectorGroupId} -> voiceConnectorGroupId) (\s@DisassociatePhoneNumbersFromVoiceConnectorGroup' {} a -> s {voiceConnectorGroupId = a} :: DisassociatePhoneNumbersFromVoiceConnectorGroup)
+
+-- | Undocumented member.
+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'
+  { phoneNumberErrors :: Prelude.Maybe [PhoneNumberError],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, 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' - Undocumented member.
+--
+-- 'httpStatus', 'disassociatePhoneNumbersFromVoiceConnectorGroupResponse_httpStatus' - The response's http status code.
+newDisassociatePhoneNumbersFromVoiceConnectorGroupResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DisassociatePhoneNumbersFromVoiceConnectorGroupResponse
+newDisassociatePhoneNumbersFromVoiceConnectorGroupResponse
+  pHttpStatus_ =
+    DisassociatePhoneNumbersFromVoiceConnectorGroupResponse'
+      { phoneNumberErrors =
+          Prelude.Nothing,
+        httpStatus =
+          pHttpStatus_
+      }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/GetGlobalSettings.hs b/gen/Amazonka/ChimeSdkVoice/GetGlobalSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/GetGlobalSettings.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.GetGlobalSettings
+  ( -- * Creating a Request
+    GetGlobalSettings (..),
+    newGetGlobalSettings,
+
+    -- * Destructuring the Response
+    GetGlobalSettingsResponse (..),
+    newGetGlobalSettingsResponse,
+
+    -- * Response Lenses
+    getGlobalSettingsResponse_voiceConnector,
+    getGlobalSettingsResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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..?> "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'
+  { 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:
+--
+-- 'voiceConnector', 'getGlobalSettingsResponse_voiceConnector' - Undocumented member.
+--
+-- 'httpStatus', 'getGlobalSettingsResponse_httpStatus' - The response's http status code.
+newGetGlobalSettingsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetGlobalSettingsResponse
+newGetGlobalSettingsResponse pHttpStatus_ =
+  GetGlobalSettingsResponse'
+    { voiceConnector =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+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 voiceConnector
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ChimeSdkVoice/GetPhoneNumber.hs b/gen/Amazonka/ChimeSdkVoice/GetPhoneNumber.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.GetPhoneNumber
+  ( -- * Creating a Request
+    GetPhoneNumber (..),
+    newGetPhoneNumber,
+
+    -- * Request Lenses
+    getPhoneNumber_phoneNumberId,
+
+    -- * Destructuring the Response
+    GetPhoneNumberResponse (..),
+    newGetPhoneNumberResponse,
+
+    -- * Response Lenses
+    getPhoneNumberResponse_phoneNumber,
+    getPhoneNumberResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { phoneNumberId :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, 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' - Undocumented member.
+newGetPhoneNumber ::
+  -- | 'phoneNumberId'
+  Prelude.Text ->
+  GetPhoneNumber
+newGetPhoneNumber pPhoneNumberId_ =
+  GetPhoneNumber'
+    { phoneNumberId =
+        Data._Sensitive Lens.# pPhoneNumberId_
+    }
+
+-- | Undocumented member.
+getPhoneNumber_phoneNumberId :: Lens.Lens' GetPhoneNumber Prelude.Text
+getPhoneNumber_phoneNumberId = Lens.lens (\GetPhoneNumber' {phoneNumberId} -> phoneNumberId) (\s@GetPhoneNumber' {} a -> s {phoneNumberId = a} :: GetPhoneNumber) Prelude.. Data._Sensitive
+
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'getPhoneNumberResponse_httpStatus' - The response's http status code.
+newGetPhoneNumberResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetPhoneNumberResponse
+newGetPhoneNumberResponse pHttpStatus_ =
+  GetPhoneNumberResponse'
+    { phoneNumber =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/GetPhoneNumberOrder.hs b/gen/Amazonka/ChimeSdkVoice/GetPhoneNumberOrder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/GetPhoneNumberOrder.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.GetPhoneNumberOrder
+  ( -- * Creating a Request
+    GetPhoneNumberOrder (..),
+    newGetPhoneNumberOrder,
+
+    -- * Request Lenses
+    getPhoneNumberOrder_phoneNumberOrderId,
+
+    -- * Destructuring the Response
+    GetPhoneNumberOrderResponse (..),
+    newGetPhoneNumberOrderResponse,
+
+    -- * Response Lenses
+    getPhoneNumberOrderResponse_phoneNumberOrder,
+    getPhoneNumberOrderResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { 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' - Undocumented member.
+newGetPhoneNumberOrder ::
+  -- | 'phoneNumberOrderId'
+  Prelude.Text ->
+  GetPhoneNumberOrder
+newGetPhoneNumberOrder pPhoneNumberOrderId_ =
+  GetPhoneNumberOrder'
+    { phoneNumberOrderId =
+        pPhoneNumberOrderId_
+    }
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'getPhoneNumberOrderResponse_httpStatus' - The response's http status code.
+newGetPhoneNumberOrderResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetPhoneNumberOrderResponse
+newGetPhoneNumberOrderResponse pHttpStatus_ =
+  GetPhoneNumberOrderResponse'
+    { phoneNumberOrder =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/GetPhoneNumberSettings.hs b/gen/Amazonka/ChimeSdkVoice/GetPhoneNumberSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/GetPhoneNumberSettings.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.GetPhoneNumberSettings
+  ( -- * Creating a Request
+    GetPhoneNumberSettings (..),
+    newGetPhoneNumberSettings,
+
+    -- * Destructuring the Response
+    GetPhoneNumberSettingsResponse (..),
+    newGetPhoneNumberSettingsResponse,
+
+    -- * Response Lenses
+    getPhoneNumberSettingsResponse_callingName,
+    getPhoneNumberSettingsResponse_callingNameUpdatedTimestamp,
+    getPhoneNumberSettingsResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { callingName :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    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' - Undocumented member.
+--
+-- 'callingNameUpdatedTimestamp', 'getPhoneNumberSettingsResponse_callingNameUpdatedTimestamp' - Undocumented member.
+--
+-- '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_
+    }
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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/ChimeSdkVoice/GetProxySession.hs b/gen/Amazonka/ChimeSdkVoice/GetProxySession.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/GetProxySession.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { voiceConnectorId :: Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'proxySessionId', 'getProxySession_proxySessionId' - Undocumented member.
+newGetProxySession ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  -- | 'proxySessionId'
+  Prelude.Text ->
+  GetProxySession
+newGetProxySession
+  pVoiceConnectorId_
+  pProxySessionId_ =
+    GetProxySession'
+      { voiceConnectorId =
+          pVoiceConnectorId_,
+        proxySessionId = pProxySessionId_
+      }
+
+-- | Undocumented member.
+getProxySession_voiceConnectorId :: Lens.Lens' GetProxySession Prelude.Text
+getProxySession_voiceConnectorId = Lens.lens (\GetProxySession' {voiceConnectorId} -> voiceConnectorId) (\s@GetProxySession' {} a -> s {voiceConnectorId = a} :: GetProxySession)
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'getProxySessionResponse_httpStatus' - The response's http status code.
+newGetProxySessionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetProxySessionResponse
+newGetProxySessionResponse pHttpStatus_ =
+  GetProxySessionResponse'
+    { proxySession =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/GetSipMediaApplication.hs b/gen/Amazonka/ChimeSdkVoice/GetSipMediaApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/GetSipMediaApplication.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.GetSipMediaApplication
+  ( -- * Creating a Request
+    GetSipMediaApplication (..),
+    newGetSipMediaApplication,
+
+    -- * Request Lenses
+    getSipMediaApplication_sipMediaApplicationId,
+
+    -- * Destructuring the Response
+    GetSipMediaApplicationResponse (..),
+    newGetSipMediaApplicationResponse,
+
+    -- * Response Lenses
+    getSipMediaApplicationResponse_sipMediaApplication,
+    getSipMediaApplicationResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { 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' - Undocumented member.
+newGetSipMediaApplication ::
+  -- | 'sipMediaApplicationId'
+  Prelude.Text ->
+  GetSipMediaApplication
+newGetSipMediaApplication pSipMediaApplicationId_ =
+  GetSipMediaApplication'
+    { sipMediaApplicationId =
+        pSipMediaApplicationId_
+    }
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'getSipMediaApplicationResponse_httpStatus' - The response's http status code.
+newGetSipMediaApplicationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetSipMediaApplicationResponse
+newGetSipMediaApplicationResponse pHttpStatus_ =
+  GetSipMediaApplicationResponse'
+    { sipMediaApplication =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/GetSipMediaApplicationAlexaSkillConfiguration.hs b/gen/Amazonka/ChimeSdkVoice/GetSipMediaApplicationAlexaSkillConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/GetSipMediaApplicationAlexaSkillConfiguration.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.ChimeSdkVoice.GetSipMediaApplicationAlexaSkillConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.GetSipMediaApplicationAlexaSkillConfiguration
+  ( -- * Creating a Request
+    GetSipMediaApplicationAlexaSkillConfiguration (..),
+    newGetSipMediaApplicationAlexaSkillConfiguration,
+
+    -- * Request Lenses
+    getSipMediaApplicationAlexaSkillConfiguration_sipMediaApplicationId,
+
+    -- * Destructuring the Response
+    GetSipMediaApplicationAlexaSkillConfigurationResponse (..),
+    newGetSipMediaApplicationAlexaSkillConfigurationResponse,
+
+    -- * Response Lenses
+    getSipMediaApplicationAlexaSkillConfigurationResponse_sipMediaApplicationAlexaSkillConfiguration,
+    getSipMediaApplicationAlexaSkillConfigurationResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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:/ 'newGetSipMediaApplicationAlexaSkillConfiguration' smart constructor.
+data GetSipMediaApplicationAlexaSkillConfiguration = GetSipMediaApplicationAlexaSkillConfiguration'
+  { sipMediaApplicationId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetSipMediaApplicationAlexaSkillConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getSipMediaApplicationAlexaSkillConfiguration_sipMediaApplicationId' - Undocumented member.
+newGetSipMediaApplicationAlexaSkillConfiguration ::
+  -- | 'sipMediaApplicationId'
+  Prelude.Text ->
+  GetSipMediaApplicationAlexaSkillConfiguration
+newGetSipMediaApplicationAlexaSkillConfiguration
+  pSipMediaApplicationId_ =
+    GetSipMediaApplicationAlexaSkillConfiguration'
+      { sipMediaApplicationId =
+          pSipMediaApplicationId_
+      }
+
+-- | Undocumented member.
+getSipMediaApplicationAlexaSkillConfiguration_sipMediaApplicationId :: Lens.Lens' GetSipMediaApplicationAlexaSkillConfiguration Prelude.Text
+getSipMediaApplicationAlexaSkillConfiguration_sipMediaApplicationId = Lens.lens (\GetSipMediaApplicationAlexaSkillConfiguration' {sipMediaApplicationId} -> sipMediaApplicationId) (\s@GetSipMediaApplicationAlexaSkillConfiguration' {} a -> s {sipMediaApplicationId = a} :: GetSipMediaApplicationAlexaSkillConfiguration)
+
+instance
+  Core.AWSRequest
+    GetSipMediaApplicationAlexaSkillConfiguration
+  where
+  type
+    AWSResponse
+      GetSipMediaApplicationAlexaSkillConfiguration =
+      GetSipMediaApplicationAlexaSkillConfigurationResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetSipMediaApplicationAlexaSkillConfigurationResponse'
+            Prelude.<$> ( x
+                            Data..?> "SipMediaApplicationAlexaSkillConfiguration"
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    GetSipMediaApplicationAlexaSkillConfiguration
+  where
+  hashWithSalt
+    _salt
+    GetSipMediaApplicationAlexaSkillConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` sipMediaApplicationId
+
+instance
+  Prelude.NFData
+    GetSipMediaApplicationAlexaSkillConfiguration
+  where
+  rnf
+    GetSipMediaApplicationAlexaSkillConfiguration' {..} =
+      Prelude.rnf sipMediaApplicationId
+
+instance
+  Data.ToHeaders
+    GetSipMediaApplicationAlexaSkillConfiguration
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    GetSipMediaApplicationAlexaSkillConfiguration
+  where
+  toPath
+    GetSipMediaApplicationAlexaSkillConfiguration' {..} =
+      Prelude.mconcat
+        [ "/sip-media-applications/",
+          Data.toBS sipMediaApplicationId,
+          "/alexa-skill-configuration"
+        ]
+
+instance
+  Data.ToQuery
+    GetSipMediaApplicationAlexaSkillConfiguration
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetSipMediaApplicationAlexaSkillConfigurationResponse' smart constructor.
+data GetSipMediaApplicationAlexaSkillConfigurationResponse = GetSipMediaApplicationAlexaSkillConfigurationResponse'
+  { sipMediaApplicationAlexaSkillConfiguration :: Prelude.Maybe SipMediaApplicationAlexaSkillConfiguration,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetSipMediaApplicationAlexaSkillConfigurationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sipMediaApplicationAlexaSkillConfiguration', 'getSipMediaApplicationAlexaSkillConfigurationResponse_sipMediaApplicationAlexaSkillConfiguration' - Undocumented member.
+--
+-- 'httpStatus', 'getSipMediaApplicationAlexaSkillConfigurationResponse_httpStatus' - The response's http status code.
+newGetSipMediaApplicationAlexaSkillConfigurationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetSipMediaApplicationAlexaSkillConfigurationResponse
+newGetSipMediaApplicationAlexaSkillConfigurationResponse
+  pHttpStatus_ =
+    GetSipMediaApplicationAlexaSkillConfigurationResponse'
+      { sipMediaApplicationAlexaSkillConfiguration =
+          Prelude.Nothing,
+        httpStatus =
+          pHttpStatus_
+      }
+
+-- | Undocumented member.
+getSipMediaApplicationAlexaSkillConfigurationResponse_sipMediaApplicationAlexaSkillConfiguration :: Lens.Lens' GetSipMediaApplicationAlexaSkillConfigurationResponse (Prelude.Maybe SipMediaApplicationAlexaSkillConfiguration)
+getSipMediaApplicationAlexaSkillConfigurationResponse_sipMediaApplicationAlexaSkillConfiguration = Lens.lens (\GetSipMediaApplicationAlexaSkillConfigurationResponse' {sipMediaApplicationAlexaSkillConfiguration} -> sipMediaApplicationAlexaSkillConfiguration) (\s@GetSipMediaApplicationAlexaSkillConfigurationResponse' {} a -> s {sipMediaApplicationAlexaSkillConfiguration = a} :: GetSipMediaApplicationAlexaSkillConfigurationResponse)
+
+-- | The response's http status code.
+getSipMediaApplicationAlexaSkillConfigurationResponse_httpStatus :: Lens.Lens' GetSipMediaApplicationAlexaSkillConfigurationResponse Prelude.Int
+getSipMediaApplicationAlexaSkillConfigurationResponse_httpStatus = Lens.lens (\GetSipMediaApplicationAlexaSkillConfigurationResponse' {httpStatus} -> httpStatus) (\s@GetSipMediaApplicationAlexaSkillConfigurationResponse' {} a -> s {httpStatus = a} :: GetSipMediaApplicationAlexaSkillConfigurationResponse)
+
+instance
+  Prelude.NFData
+    GetSipMediaApplicationAlexaSkillConfigurationResponse
+  where
+  rnf
+    GetSipMediaApplicationAlexaSkillConfigurationResponse' {..} =
+      Prelude.rnf
+        sipMediaApplicationAlexaSkillConfiguration
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ChimeSdkVoice/GetSipMediaApplicationLoggingConfiguration.hs b/gen/Amazonka/ChimeSdkVoice/GetSipMediaApplicationLoggingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/GetSipMediaApplicationLoggingConfiguration.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.GetSipMediaApplicationLoggingConfiguration
+  ( -- * Creating a Request
+    GetSipMediaApplicationLoggingConfiguration (..),
+    newGetSipMediaApplicationLoggingConfiguration,
+
+    -- * Request Lenses
+    getSipMediaApplicationLoggingConfiguration_sipMediaApplicationId,
+
+    -- * Destructuring the Response
+    GetSipMediaApplicationLoggingConfigurationResponse (..),
+    newGetSipMediaApplicationLoggingConfigurationResponse,
+
+    -- * Response Lenses
+    getSipMediaApplicationLoggingConfigurationResponse_sipMediaApplicationLoggingConfiguration,
+    getSipMediaApplicationLoggingConfigurationResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { 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' - Undocumented member.
+newGetSipMediaApplicationLoggingConfiguration ::
+  -- | 'sipMediaApplicationId'
+  Prelude.Text ->
+  GetSipMediaApplicationLoggingConfiguration
+newGetSipMediaApplicationLoggingConfiguration
+  pSipMediaApplicationId_ =
+    GetSipMediaApplicationLoggingConfiguration'
+      { sipMediaApplicationId =
+          pSipMediaApplicationId_
+      }
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'getSipMediaApplicationLoggingConfigurationResponse_httpStatus' - The response's http status code.
+newGetSipMediaApplicationLoggingConfigurationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetSipMediaApplicationLoggingConfigurationResponse
+newGetSipMediaApplicationLoggingConfigurationResponse
+  pHttpStatus_ =
+    GetSipMediaApplicationLoggingConfigurationResponse'
+      { sipMediaApplicationLoggingConfiguration =
+          Prelude.Nothing,
+        httpStatus =
+          pHttpStatus_
+      }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/GetSipRule.hs b/gen/Amazonka/ChimeSdkVoice/GetSipRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/GetSipRule.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.GetSipRule
+  ( -- * Creating a Request
+    GetSipRule (..),
+    newGetSipRule,
+
+    -- * Request Lenses
+    getSipRule_sipRuleId,
+
+    -- * Destructuring the Response
+    GetSipRuleResponse (..),
+    newGetSipRuleResponse,
+
+    -- * Response Lenses
+    getSipRuleResponse_sipRule,
+    getSipRuleResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { 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' - Undocumented member.
+newGetSipRule ::
+  -- | 'sipRuleId'
+  Prelude.Text ->
+  GetSipRule
+newGetSipRule pSipRuleId_ =
+  GetSipRule' {sipRuleId = pSipRuleId_}
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'getSipRuleResponse_httpStatus' - The response's http status code.
+newGetSipRuleResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetSipRuleResponse
+newGetSipRuleResponse pHttpStatus_ =
+  GetSipRuleResponse'
+    { sipRule = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/GetVoiceConnector.hs b/gen/Amazonka/ChimeSdkVoice/GetVoiceConnector.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/GetVoiceConnector.hs
@@ -0,0 +1,153 @@
+{-# 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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.GetVoiceConnector
+  ( -- * Creating a Request
+    GetVoiceConnector (..),
+    newGetVoiceConnector,
+
+    -- * Request Lenses
+    getVoiceConnector_voiceConnectorId,
+
+    -- * Destructuring the Response
+    GetVoiceConnectorResponse (..),
+    newGetVoiceConnectorResponse,
+
+    -- * Response Lenses
+    getVoiceConnectorResponse_voiceConnector,
+    getVoiceConnectorResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { 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' - Undocumented member.
+newGetVoiceConnector ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  GetVoiceConnector
+newGetVoiceConnector pVoiceConnectorId_ =
+  GetVoiceConnector'
+    { voiceConnectorId =
+        pVoiceConnectorId_
+    }
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'getVoiceConnectorResponse_httpStatus' - The response's http status code.
+newGetVoiceConnectorResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetVoiceConnectorResponse
+newGetVoiceConnectorResponse pHttpStatus_ =
+  GetVoiceConnectorResponse'
+    { voiceConnector =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/GetVoiceConnectorEmergencyCallingConfiguration.hs b/gen/Amazonka/ChimeSdkVoice/GetVoiceConnectorEmergencyCallingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/GetVoiceConnectorEmergencyCallingConfiguration.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.GetVoiceConnectorEmergencyCallingConfiguration
+  ( -- * Creating a Request
+    GetVoiceConnectorEmergencyCallingConfiguration (..),
+    newGetVoiceConnectorEmergencyCallingConfiguration,
+
+    -- * Request Lenses
+    getVoiceConnectorEmergencyCallingConfiguration_voiceConnectorId,
+
+    -- * Destructuring the Response
+    GetVoiceConnectorEmergencyCallingConfigurationResponse (..),
+    newGetVoiceConnectorEmergencyCallingConfigurationResponse,
+
+    -- * Response Lenses
+    getVoiceConnectorEmergencyCallingConfigurationResponse_emergencyCallingConfiguration,
+    getVoiceConnectorEmergencyCallingConfigurationResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { 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' - Undocumented member.
+newGetVoiceConnectorEmergencyCallingConfiguration ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  GetVoiceConnectorEmergencyCallingConfiguration
+newGetVoiceConnectorEmergencyCallingConfiguration
+  pVoiceConnectorId_ =
+    GetVoiceConnectorEmergencyCallingConfiguration'
+      { voiceConnectorId =
+          pVoiceConnectorId_
+      }
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'getVoiceConnectorEmergencyCallingConfigurationResponse_httpStatus' - The response's http status code.
+newGetVoiceConnectorEmergencyCallingConfigurationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetVoiceConnectorEmergencyCallingConfigurationResponse
+newGetVoiceConnectorEmergencyCallingConfigurationResponse
+  pHttpStatus_ =
+    GetVoiceConnectorEmergencyCallingConfigurationResponse'
+      { emergencyCallingConfiguration =
+          Prelude.Nothing,
+        httpStatus =
+          pHttpStatus_
+      }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/GetVoiceConnectorGroup.hs b/gen/Amazonka/ChimeSdkVoice/GetVoiceConnectorGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/GetVoiceConnectorGroup.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.GetVoiceConnectorGroup
+  ( -- * Creating a Request
+    GetVoiceConnectorGroup (..),
+    newGetVoiceConnectorGroup,
+
+    -- * Request Lenses
+    getVoiceConnectorGroup_voiceConnectorGroupId,
+
+    -- * Destructuring the Response
+    GetVoiceConnectorGroupResponse (..),
+    newGetVoiceConnectorGroupResponse,
+
+    -- * Response Lenses
+    getVoiceConnectorGroupResponse_voiceConnectorGroup,
+    getVoiceConnectorGroupResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { 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' - Undocumented member.
+newGetVoiceConnectorGroup ::
+  -- | 'voiceConnectorGroupId'
+  Prelude.Text ->
+  GetVoiceConnectorGroup
+newGetVoiceConnectorGroup pVoiceConnectorGroupId_ =
+  GetVoiceConnectorGroup'
+    { voiceConnectorGroupId =
+        pVoiceConnectorGroupId_
+    }
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'getVoiceConnectorGroupResponse_httpStatus' - The response's http status code.
+newGetVoiceConnectorGroupResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetVoiceConnectorGroupResponse
+newGetVoiceConnectorGroupResponse pHttpStatus_ =
+  GetVoiceConnectorGroupResponse'
+    { voiceConnectorGroup =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/GetVoiceConnectorLoggingConfiguration.hs b/gen/Amazonka/ChimeSdkVoice/GetVoiceConnectorLoggingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/GetVoiceConnectorLoggingConfiguration.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.GetVoiceConnectorLoggingConfiguration
+  ( -- * Creating a Request
+    GetVoiceConnectorLoggingConfiguration (..),
+    newGetVoiceConnectorLoggingConfiguration,
+
+    -- * Request Lenses
+    getVoiceConnectorLoggingConfiguration_voiceConnectorId,
+
+    -- * Destructuring the Response
+    GetVoiceConnectorLoggingConfigurationResponse (..),
+    newGetVoiceConnectorLoggingConfigurationResponse,
+
+    -- * Response Lenses
+    getVoiceConnectorLoggingConfigurationResponse_loggingConfiguration,
+    getVoiceConnectorLoggingConfigurationResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { 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' - Undocumented member.
+newGetVoiceConnectorLoggingConfiguration ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  GetVoiceConnectorLoggingConfiguration
+newGetVoiceConnectorLoggingConfiguration
+  pVoiceConnectorId_ =
+    GetVoiceConnectorLoggingConfiguration'
+      { voiceConnectorId =
+          pVoiceConnectorId_
+      }
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'getVoiceConnectorLoggingConfigurationResponse_httpStatus' - The response's http status code.
+newGetVoiceConnectorLoggingConfigurationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetVoiceConnectorLoggingConfigurationResponse
+newGetVoiceConnectorLoggingConfigurationResponse
+  pHttpStatus_ =
+    GetVoiceConnectorLoggingConfigurationResponse'
+      { loggingConfiguration =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/GetVoiceConnectorOrigination.hs b/gen/Amazonka/ChimeSdkVoice/GetVoiceConnectorOrigination.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/GetVoiceConnectorOrigination.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.GetVoiceConnectorOrigination
+  ( -- * Creating a Request
+    GetVoiceConnectorOrigination (..),
+    newGetVoiceConnectorOrigination,
+
+    -- * Request Lenses
+    getVoiceConnectorOrigination_voiceConnectorId,
+
+    -- * Destructuring the Response
+    GetVoiceConnectorOriginationResponse (..),
+    newGetVoiceConnectorOriginationResponse,
+
+    -- * Response Lenses
+    getVoiceConnectorOriginationResponse_origination,
+    getVoiceConnectorOriginationResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { 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' - Undocumented member.
+newGetVoiceConnectorOrigination ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  GetVoiceConnectorOrigination
+newGetVoiceConnectorOrigination pVoiceConnectorId_ =
+  GetVoiceConnectorOrigination'
+    { voiceConnectorId =
+        pVoiceConnectorId_
+    }
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'getVoiceConnectorOriginationResponse_httpStatus' - The response's http status code.
+newGetVoiceConnectorOriginationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetVoiceConnectorOriginationResponse
+newGetVoiceConnectorOriginationResponse pHttpStatus_ =
+  GetVoiceConnectorOriginationResponse'
+    { origination =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/GetVoiceConnectorProxy.hs b/gen/Amazonka/ChimeSdkVoice/GetVoiceConnectorProxy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/GetVoiceConnectorProxy.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.GetVoiceConnectorProxy
+  ( -- * Creating a Request
+    GetVoiceConnectorProxy (..),
+    newGetVoiceConnectorProxy,
+
+    -- * Request Lenses
+    getVoiceConnectorProxy_voiceConnectorId,
+
+    -- * Destructuring the Response
+    GetVoiceConnectorProxyResponse (..),
+    newGetVoiceConnectorProxyResponse,
+
+    -- * Response Lenses
+    getVoiceConnectorProxyResponse_proxy,
+    getVoiceConnectorProxyResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { 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' - Undocumented member.
+newGetVoiceConnectorProxy ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  GetVoiceConnectorProxy
+newGetVoiceConnectorProxy pVoiceConnectorId_ =
+  GetVoiceConnectorProxy'
+    { voiceConnectorId =
+        pVoiceConnectorId_
+    }
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'getVoiceConnectorProxyResponse_httpStatus' - The response's http status code.
+newGetVoiceConnectorProxyResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetVoiceConnectorProxyResponse
+newGetVoiceConnectorProxyResponse pHttpStatus_ =
+  GetVoiceConnectorProxyResponse'
+    { proxy =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/GetVoiceConnectorStreamingConfiguration.hs b/gen/Amazonka/ChimeSdkVoice/GetVoiceConnectorStreamingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/GetVoiceConnectorStreamingConfiguration.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.GetVoiceConnectorStreamingConfiguration
+  ( -- * Creating a Request
+    GetVoiceConnectorStreamingConfiguration (..),
+    newGetVoiceConnectorStreamingConfiguration,
+
+    -- * Request Lenses
+    getVoiceConnectorStreamingConfiguration_voiceConnectorId,
+
+    -- * Destructuring the Response
+    GetVoiceConnectorStreamingConfigurationResponse (..),
+    newGetVoiceConnectorStreamingConfigurationResponse,
+
+    -- * Response Lenses
+    getVoiceConnectorStreamingConfigurationResponse_streamingConfiguration,
+    getVoiceConnectorStreamingConfigurationResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { 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' - Undocumented member.
+newGetVoiceConnectorStreamingConfiguration ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  GetVoiceConnectorStreamingConfiguration
+newGetVoiceConnectorStreamingConfiguration
+  pVoiceConnectorId_ =
+    GetVoiceConnectorStreamingConfiguration'
+      { voiceConnectorId =
+          pVoiceConnectorId_
+      }
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'getVoiceConnectorStreamingConfigurationResponse_httpStatus' - The response's http status code.
+newGetVoiceConnectorStreamingConfigurationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetVoiceConnectorStreamingConfigurationResponse
+newGetVoiceConnectorStreamingConfigurationResponse
+  pHttpStatus_ =
+    GetVoiceConnectorStreamingConfigurationResponse'
+      { streamingConfiguration =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/GetVoiceConnectorTermination.hs b/gen/Amazonka/ChimeSdkVoice/GetVoiceConnectorTermination.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/GetVoiceConnectorTermination.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.GetVoiceConnectorTermination
+  ( -- * Creating a Request
+    GetVoiceConnectorTermination (..),
+    newGetVoiceConnectorTermination,
+
+    -- * Request Lenses
+    getVoiceConnectorTermination_voiceConnectorId,
+
+    -- * Destructuring the Response
+    GetVoiceConnectorTerminationResponse (..),
+    newGetVoiceConnectorTerminationResponse,
+
+    -- * Response Lenses
+    getVoiceConnectorTerminationResponse_termination,
+    getVoiceConnectorTerminationResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { 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' - Undocumented member.
+newGetVoiceConnectorTermination ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  GetVoiceConnectorTermination
+newGetVoiceConnectorTermination pVoiceConnectorId_ =
+  GetVoiceConnectorTermination'
+    { voiceConnectorId =
+        pVoiceConnectorId_
+    }
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'getVoiceConnectorTerminationResponse_httpStatus' - The response's http status code.
+newGetVoiceConnectorTerminationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetVoiceConnectorTerminationResponse
+newGetVoiceConnectorTerminationResponse pHttpStatus_ =
+  GetVoiceConnectorTerminationResponse'
+    { termination =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/GetVoiceConnectorTerminationHealth.hs b/gen/Amazonka/ChimeSdkVoice/GetVoiceConnectorTerminationHealth.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/GetVoiceConnectorTerminationHealth.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.GetVoiceConnectorTerminationHealth
+  ( -- * Creating a Request
+    GetVoiceConnectorTerminationHealth (..),
+    newGetVoiceConnectorTerminationHealth,
+
+    -- * Request Lenses
+    getVoiceConnectorTerminationHealth_voiceConnectorId,
+
+    -- * Destructuring the Response
+    GetVoiceConnectorTerminationHealthResponse (..),
+    newGetVoiceConnectorTerminationHealthResponse,
+
+    -- * Response Lenses
+    getVoiceConnectorTerminationHealthResponse_terminationHealth,
+    getVoiceConnectorTerminationHealthResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { 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' - Undocumented member.
+newGetVoiceConnectorTerminationHealth ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  GetVoiceConnectorTerminationHealth
+newGetVoiceConnectorTerminationHealth
+  pVoiceConnectorId_ =
+    GetVoiceConnectorTerminationHealth'
+      { voiceConnectorId =
+          pVoiceConnectorId_
+      }
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'getVoiceConnectorTerminationHealthResponse_httpStatus' - The response's http status code.
+newGetVoiceConnectorTerminationHealthResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetVoiceConnectorTerminationHealthResponse
+newGetVoiceConnectorTerminationHealthResponse
+  pHttpStatus_ =
+    GetVoiceConnectorTerminationHealthResponse'
+      { terminationHealth =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/Lens.hs b/gen/Amazonka/ChimeSdkVoice/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Lens.hs
@@ -0,0 +1,775 @@
+{-# 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.ChimeSdkVoice.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.ChimeSdkVoice.Lens
+  ( -- * Operations
+
+    -- ** AssociatePhoneNumbersWithVoiceConnector
+    associatePhoneNumbersWithVoiceConnector_forceAssociate,
+    associatePhoneNumbersWithVoiceConnector_voiceConnectorId,
+    associatePhoneNumbersWithVoiceConnector_e164PhoneNumbers,
+    associatePhoneNumbersWithVoiceConnectorResponse_phoneNumberErrors,
+    associatePhoneNumbersWithVoiceConnectorResponse_httpStatus,
+
+    -- ** AssociatePhoneNumbersWithVoiceConnectorGroup
+    associatePhoneNumbersWithVoiceConnectorGroup_forceAssociate,
+    associatePhoneNumbersWithVoiceConnectorGroup_voiceConnectorGroupId,
+    associatePhoneNumbersWithVoiceConnectorGroup_e164PhoneNumbers,
+    associatePhoneNumbersWithVoiceConnectorGroupResponse_phoneNumberErrors,
+    associatePhoneNumbersWithVoiceConnectorGroupResponse_httpStatus,
+
+    -- ** BatchDeletePhoneNumber
+    batchDeletePhoneNumber_phoneNumberIds,
+    batchDeletePhoneNumberResponse_phoneNumberErrors,
+    batchDeletePhoneNumberResponse_httpStatus,
+
+    -- ** BatchUpdatePhoneNumber
+    batchUpdatePhoneNumber_updatePhoneNumberRequestItems,
+    batchUpdatePhoneNumberResponse_phoneNumberErrors,
+    batchUpdatePhoneNumberResponse_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,
+
+    -- ** CreateSipMediaApplication
+    createSipMediaApplication_awsRegion,
+    createSipMediaApplication_name,
+    createSipMediaApplication_endpoints,
+    createSipMediaApplicationResponse_sipMediaApplication,
+    createSipMediaApplicationResponse_httpStatus,
+
+    -- ** CreateSipMediaApplicationCall
+    createSipMediaApplicationCall_argumentsMap,
+    createSipMediaApplicationCall_sipHeaders,
+    createSipMediaApplicationCall_fromPhoneNumber,
+    createSipMediaApplicationCall_toPhoneNumber,
+    createSipMediaApplicationCall_sipMediaApplicationId,
+    createSipMediaApplicationCallResponse_sipMediaApplicationCall,
+    createSipMediaApplicationCallResponse_httpStatus,
+
+    -- ** CreateSipRule
+    createSipRule_disabled,
+    createSipRule_targetApplications,
+    createSipRule_name,
+    createSipRule_triggerType,
+    createSipRule_triggerValue,
+    createSipRuleResponse_sipRule,
+    createSipRuleResponse_httpStatus,
+
+    -- ** CreateVoiceConnector
+    createVoiceConnector_awsRegion,
+    createVoiceConnector_name,
+    createVoiceConnector_requireEncryption,
+    createVoiceConnectorResponse_voiceConnector,
+    createVoiceConnectorResponse_httpStatus,
+
+    -- ** CreateVoiceConnectorGroup
+    createVoiceConnectorGroup_voiceConnectorItems,
+    createVoiceConnectorGroup_name,
+    createVoiceConnectorGroupResponse_voiceConnectorGroup,
+    createVoiceConnectorGroupResponse_httpStatus,
+
+    -- ** DeletePhoneNumber
+    deletePhoneNumber_phoneNumberId,
+
+    -- ** DeleteProxySession
+    deleteProxySession_voiceConnectorId,
+    deleteProxySession_proxySessionId,
+
+    -- ** 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,
+
+    -- ** DisassociatePhoneNumbersFromVoiceConnector
+    disassociatePhoneNumbersFromVoiceConnector_voiceConnectorId,
+    disassociatePhoneNumbersFromVoiceConnector_e164PhoneNumbers,
+    disassociatePhoneNumbersFromVoiceConnectorResponse_phoneNumberErrors,
+    disassociatePhoneNumbersFromVoiceConnectorResponse_httpStatus,
+
+    -- ** DisassociatePhoneNumbersFromVoiceConnectorGroup
+    disassociatePhoneNumbersFromVoiceConnectorGroup_voiceConnectorGroupId,
+    disassociatePhoneNumbersFromVoiceConnectorGroup_e164PhoneNumbers,
+    disassociatePhoneNumbersFromVoiceConnectorGroupResponse_phoneNumberErrors,
+    disassociatePhoneNumbersFromVoiceConnectorGroupResponse_httpStatus,
+
+    -- ** GetGlobalSettings
+    getGlobalSettingsResponse_voiceConnector,
+    getGlobalSettingsResponse_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,
+
+    -- ** GetSipMediaApplication
+    getSipMediaApplication_sipMediaApplicationId,
+    getSipMediaApplicationResponse_sipMediaApplication,
+    getSipMediaApplicationResponse_httpStatus,
+
+    -- ** GetSipMediaApplicationAlexaSkillConfiguration
+    getSipMediaApplicationAlexaSkillConfiguration_sipMediaApplicationId,
+    getSipMediaApplicationAlexaSkillConfigurationResponse_sipMediaApplicationAlexaSkillConfiguration,
+    getSipMediaApplicationAlexaSkillConfigurationResponse_httpStatus,
+
+    -- ** GetSipMediaApplicationLoggingConfiguration
+    getSipMediaApplicationLoggingConfiguration_sipMediaApplicationId,
+    getSipMediaApplicationLoggingConfigurationResponse_sipMediaApplicationLoggingConfiguration,
+    getSipMediaApplicationLoggingConfigurationResponse_httpStatus,
+
+    -- ** GetSipRule
+    getSipRule_sipRuleId,
+    getSipRuleResponse_sipRule,
+    getSipRuleResponse_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,
+
+    -- ** ListAvailableVoiceConnectorRegions
+    listAvailableVoiceConnectorRegionsResponse_voiceConnectorRegions,
+    listAvailableVoiceConnectorRegionsResponse_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,
+
+    -- ** 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,
+
+    -- ** 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,
+
+    -- ** PutSipMediaApplicationAlexaSkillConfiguration
+    putSipMediaApplicationAlexaSkillConfiguration_sipMediaApplicationAlexaSkillConfiguration,
+    putSipMediaApplicationAlexaSkillConfiguration_sipMediaApplicationId,
+    putSipMediaApplicationAlexaSkillConfigurationResponse_sipMediaApplicationAlexaSkillConfiguration,
+    putSipMediaApplicationAlexaSkillConfigurationResponse_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,
+
+    -- ** 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,
+
+    -- ** UpdateGlobalSettings
+    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,
+
+    -- ** 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,
+
+    -- ** 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
+
+    -- ** Address
+    address_city,
+    address_country,
+    address_postDirectional,
+    address_postalCode,
+    address_postalCodePlus4,
+    address_preDirectional,
+    address_state,
+    address_streetName,
+    address_streetNumber,
+    address_streetSuffix,
+
+    -- ** CandidateAddress
+    candidateAddress_city,
+    candidateAddress_country,
+    candidateAddress_postalCode,
+    candidateAddress_postalCodePlus4,
+    candidateAddress_state,
+    candidateAddress_streetInfo,
+    candidateAddress_streetNumber,
+
+    -- ** Credential
+    credential_password,
+    credential_username,
+
+    -- ** DNISEmergencyCallingConfiguration
+    dNISEmergencyCallingConfiguration_testPhoneNumber,
+    dNISEmergencyCallingConfiguration_emergencyPhoneNumber,
+    dNISEmergencyCallingConfiguration_callingCountry,
+
+    -- ** EmergencyCallingConfiguration
+    emergencyCallingConfiguration_dnis,
+
+    -- ** GeoMatchParams
+    geoMatchParams_country,
+    geoMatchParams_areaCode,
+
+    -- ** LoggingConfiguration
+    loggingConfiguration_enableSIPLogs,
+
+    -- ** 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_orderId,
+    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_orderType,
+    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,
+
+    -- ** SipMediaApplication
+    sipMediaApplication_awsRegion,
+    sipMediaApplication_createdTimestamp,
+    sipMediaApplication_endpoints,
+    sipMediaApplication_name,
+    sipMediaApplication_sipMediaApplicationId,
+    sipMediaApplication_updatedTimestamp,
+
+    -- ** SipMediaApplicationAlexaSkillConfiguration
+    sipMediaApplicationAlexaSkillConfiguration_alexaSkillStatus,
+    sipMediaApplicationAlexaSkillConfiguration_alexaSkillIds,
+
+    -- ** 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,
+
+    -- ** StreamingConfiguration
+    streamingConfiguration_streamingNotificationTargets,
+    streamingConfiguration_dataRetentionInHours,
+    streamingConfiguration_disabled,
+
+    -- ** StreamingNotificationTarget
+    streamingNotificationTarget_notificationTarget,
+
+    -- ** Termination
+    termination_callingRegions,
+    termination_cidrAllowedList,
+    termination_cpsLimit,
+    termination_defaultPhoneNumber,
+    termination_disabled,
+
+    -- ** TerminationHealth
+    terminationHealth_source,
+    terminationHealth_timestamp,
+
+    -- ** UpdatePhoneNumberRequestItem
+    updatePhoneNumberRequestItem_callingName,
+    updatePhoneNumberRequestItem_productType,
+    updatePhoneNumberRequestItem_phoneNumberId,
+
+    -- ** 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.ChimeSdkVoice.AssociatePhoneNumbersWithVoiceConnector
+import Amazonka.ChimeSdkVoice.AssociatePhoneNumbersWithVoiceConnectorGroup
+import Amazonka.ChimeSdkVoice.BatchDeletePhoneNumber
+import Amazonka.ChimeSdkVoice.BatchUpdatePhoneNumber
+import Amazonka.ChimeSdkVoice.CreatePhoneNumberOrder
+import Amazonka.ChimeSdkVoice.CreateProxySession
+import Amazonka.ChimeSdkVoice.CreateSipMediaApplication
+import Amazonka.ChimeSdkVoice.CreateSipMediaApplicationCall
+import Amazonka.ChimeSdkVoice.CreateSipRule
+import Amazonka.ChimeSdkVoice.CreateVoiceConnector
+import Amazonka.ChimeSdkVoice.CreateVoiceConnectorGroup
+import Amazonka.ChimeSdkVoice.DeletePhoneNumber
+import Amazonka.ChimeSdkVoice.DeleteProxySession
+import Amazonka.ChimeSdkVoice.DeleteSipMediaApplication
+import Amazonka.ChimeSdkVoice.DeleteSipRule
+import Amazonka.ChimeSdkVoice.DeleteVoiceConnector
+import Amazonka.ChimeSdkVoice.DeleteVoiceConnectorEmergencyCallingConfiguration
+import Amazonka.ChimeSdkVoice.DeleteVoiceConnectorGroup
+import Amazonka.ChimeSdkVoice.DeleteVoiceConnectorOrigination
+import Amazonka.ChimeSdkVoice.DeleteVoiceConnectorProxy
+import Amazonka.ChimeSdkVoice.DeleteVoiceConnectorStreamingConfiguration
+import Amazonka.ChimeSdkVoice.DeleteVoiceConnectorTermination
+import Amazonka.ChimeSdkVoice.DeleteVoiceConnectorTerminationCredentials
+import Amazonka.ChimeSdkVoice.DisassociatePhoneNumbersFromVoiceConnector
+import Amazonka.ChimeSdkVoice.DisassociatePhoneNumbersFromVoiceConnectorGroup
+import Amazonka.ChimeSdkVoice.GetGlobalSettings
+import Amazonka.ChimeSdkVoice.GetPhoneNumber
+import Amazonka.ChimeSdkVoice.GetPhoneNumberOrder
+import Amazonka.ChimeSdkVoice.GetPhoneNumberSettings
+import Amazonka.ChimeSdkVoice.GetProxySession
+import Amazonka.ChimeSdkVoice.GetSipMediaApplication
+import Amazonka.ChimeSdkVoice.GetSipMediaApplicationAlexaSkillConfiguration
+import Amazonka.ChimeSdkVoice.GetSipMediaApplicationLoggingConfiguration
+import Amazonka.ChimeSdkVoice.GetSipRule
+import Amazonka.ChimeSdkVoice.GetVoiceConnector
+import Amazonka.ChimeSdkVoice.GetVoiceConnectorEmergencyCallingConfiguration
+import Amazonka.ChimeSdkVoice.GetVoiceConnectorGroup
+import Amazonka.ChimeSdkVoice.GetVoiceConnectorLoggingConfiguration
+import Amazonka.ChimeSdkVoice.GetVoiceConnectorOrigination
+import Amazonka.ChimeSdkVoice.GetVoiceConnectorProxy
+import Amazonka.ChimeSdkVoice.GetVoiceConnectorStreamingConfiguration
+import Amazonka.ChimeSdkVoice.GetVoiceConnectorTermination
+import Amazonka.ChimeSdkVoice.GetVoiceConnectorTerminationHealth
+import Amazonka.ChimeSdkVoice.ListAvailableVoiceConnectorRegions
+import Amazonka.ChimeSdkVoice.ListPhoneNumberOrders
+import Amazonka.ChimeSdkVoice.ListPhoneNumbers
+import Amazonka.ChimeSdkVoice.ListProxySessions
+import Amazonka.ChimeSdkVoice.ListSipMediaApplications
+import Amazonka.ChimeSdkVoice.ListSipRules
+import Amazonka.ChimeSdkVoice.ListSupportedPhoneNumberCountries
+import Amazonka.ChimeSdkVoice.ListVoiceConnectorGroups
+import Amazonka.ChimeSdkVoice.ListVoiceConnectorTerminationCredentials
+import Amazonka.ChimeSdkVoice.ListVoiceConnectors
+import Amazonka.ChimeSdkVoice.PutSipMediaApplicationAlexaSkillConfiguration
+import Amazonka.ChimeSdkVoice.PutSipMediaApplicationLoggingConfiguration
+import Amazonka.ChimeSdkVoice.PutVoiceConnectorEmergencyCallingConfiguration
+import Amazonka.ChimeSdkVoice.PutVoiceConnectorLoggingConfiguration
+import Amazonka.ChimeSdkVoice.PutVoiceConnectorOrigination
+import Amazonka.ChimeSdkVoice.PutVoiceConnectorProxy
+import Amazonka.ChimeSdkVoice.PutVoiceConnectorStreamingConfiguration
+import Amazonka.ChimeSdkVoice.PutVoiceConnectorTermination
+import Amazonka.ChimeSdkVoice.PutVoiceConnectorTerminationCredentials
+import Amazonka.ChimeSdkVoice.RestorePhoneNumber
+import Amazonka.ChimeSdkVoice.SearchAvailablePhoneNumbers
+import Amazonka.ChimeSdkVoice.Types.Address
+import Amazonka.ChimeSdkVoice.Types.CandidateAddress
+import Amazonka.ChimeSdkVoice.Types.Credential
+import Amazonka.ChimeSdkVoice.Types.DNISEmergencyCallingConfiguration
+import Amazonka.ChimeSdkVoice.Types.EmergencyCallingConfiguration
+import Amazonka.ChimeSdkVoice.Types.GeoMatchParams
+import Amazonka.ChimeSdkVoice.Types.LoggingConfiguration
+import Amazonka.ChimeSdkVoice.Types.OrderedPhoneNumber
+import Amazonka.ChimeSdkVoice.Types.Origination
+import Amazonka.ChimeSdkVoice.Types.OriginationRoute
+import Amazonka.ChimeSdkVoice.Types.Participant
+import Amazonka.ChimeSdkVoice.Types.PhoneNumber
+import Amazonka.ChimeSdkVoice.Types.PhoneNumberAssociation
+import Amazonka.ChimeSdkVoice.Types.PhoneNumberCapabilities
+import Amazonka.ChimeSdkVoice.Types.PhoneNumberCountry
+import Amazonka.ChimeSdkVoice.Types.PhoneNumberError
+import Amazonka.ChimeSdkVoice.Types.PhoneNumberOrder
+import Amazonka.ChimeSdkVoice.Types.Proxy
+import Amazonka.ChimeSdkVoice.Types.ProxySession
+import Amazonka.ChimeSdkVoice.Types.SipMediaApplication
+import Amazonka.ChimeSdkVoice.Types.SipMediaApplicationAlexaSkillConfiguration
+import Amazonka.ChimeSdkVoice.Types.SipMediaApplicationCall
+import Amazonka.ChimeSdkVoice.Types.SipMediaApplicationEndpoint
+import Amazonka.ChimeSdkVoice.Types.SipMediaApplicationLoggingConfiguration
+import Amazonka.ChimeSdkVoice.Types.SipRule
+import Amazonka.ChimeSdkVoice.Types.SipRuleTargetApplication
+import Amazonka.ChimeSdkVoice.Types.StreamingConfiguration
+import Amazonka.ChimeSdkVoice.Types.StreamingNotificationTarget
+import Amazonka.ChimeSdkVoice.Types.Termination
+import Amazonka.ChimeSdkVoice.Types.TerminationHealth
+import Amazonka.ChimeSdkVoice.Types.UpdatePhoneNumberRequestItem
+import Amazonka.ChimeSdkVoice.Types.VoiceConnector
+import Amazonka.ChimeSdkVoice.Types.VoiceConnectorGroup
+import Amazonka.ChimeSdkVoice.Types.VoiceConnectorItem
+import Amazonka.ChimeSdkVoice.Types.VoiceConnectorSettings
+import Amazonka.ChimeSdkVoice.UpdateGlobalSettings
+import Amazonka.ChimeSdkVoice.UpdatePhoneNumber
+import Amazonka.ChimeSdkVoice.UpdatePhoneNumberSettings
+import Amazonka.ChimeSdkVoice.UpdateProxySession
+import Amazonka.ChimeSdkVoice.UpdateSipMediaApplication
+import Amazonka.ChimeSdkVoice.UpdateSipMediaApplicationCall
+import Amazonka.ChimeSdkVoice.UpdateSipRule
+import Amazonka.ChimeSdkVoice.UpdateVoiceConnector
+import Amazonka.ChimeSdkVoice.UpdateVoiceConnectorGroup
+import Amazonka.ChimeSdkVoice.ValidateE911Address
diff --git a/gen/Amazonka/ChimeSdkVoice/ListAvailableVoiceConnectorRegions.hs b/gen/Amazonka/ChimeSdkVoice/ListAvailableVoiceConnectorRegions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/ListAvailableVoiceConnectorRegions.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.ChimeSdkVoice.ListAvailableVoiceConnectorRegions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.ListAvailableVoiceConnectorRegions
+  ( -- * Creating a Request
+    ListAvailableVoiceConnectorRegions (..),
+    newListAvailableVoiceConnectorRegions,
+
+    -- * Destructuring the Response
+    ListAvailableVoiceConnectorRegionsResponse (..),
+    newListAvailableVoiceConnectorRegionsResponse,
+
+    -- * Response Lenses
+    listAvailableVoiceConnectorRegionsResponse_voiceConnectorRegions,
+    listAvailableVoiceConnectorRegionsResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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:/ 'newListAvailableVoiceConnectorRegions' smart constructor.
+data ListAvailableVoiceConnectorRegions = ListAvailableVoiceConnectorRegions'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAvailableVoiceConnectorRegions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newListAvailableVoiceConnectorRegions ::
+  ListAvailableVoiceConnectorRegions
+newListAvailableVoiceConnectorRegions =
+  ListAvailableVoiceConnectorRegions'
+
+instance
+  Core.AWSRequest
+    ListAvailableVoiceConnectorRegions
+  where
+  type
+    AWSResponse ListAvailableVoiceConnectorRegions =
+      ListAvailableVoiceConnectorRegionsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListAvailableVoiceConnectorRegionsResponse'
+            Prelude.<$> ( x
+                            Data..?> "VoiceConnectorRegions"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    ListAvailableVoiceConnectorRegions
+  where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance
+  Prelude.NFData
+    ListAvailableVoiceConnectorRegions
+  where
+  rnf _ = ()
+
+instance
+  Data.ToHeaders
+    ListAvailableVoiceConnectorRegions
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    ListAvailableVoiceConnectorRegions
+  where
+  toPath = Prelude.const "/voice-connector-regions"
+
+instance
+  Data.ToQuery
+    ListAvailableVoiceConnectorRegions
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListAvailableVoiceConnectorRegionsResponse' smart constructor.
+data ListAvailableVoiceConnectorRegionsResponse = ListAvailableVoiceConnectorRegionsResponse'
+  { voiceConnectorRegions :: Prelude.Maybe [VoiceConnectorAwsRegion],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAvailableVoiceConnectorRegionsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'voiceConnectorRegions', 'listAvailableVoiceConnectorRegionsResponse_voiceConnectorRegions' - Undocumented member.
+--
+-- 'httpStatus', 'listAvailableVoiceConnectorRegionsResponse_httpStatus' - The response's http status code.
+newListAvailableVoiceConnectorRegionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListAvailableVoiceConnectorRegionsResponse
+newListAvailableVoiceConnectorRegionsResponse
+  pHttpStatus_ =
+    ListAvailableVoiceConnectorRegionsResponse'
+      { voiceConnectorRegions =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | Undocumented member.
+listAvailableVoiceConnectorRegionsResponse_voiceConnectorRegions :: Lens.Lens' ListAvailableVoiceConnectorRegionsResponse (Prelude.Maybe [VoiceConnectorAwsRegion])
+listAvailableVoiceConnectorRegionsResponse_voiceConnectorRegions = Lens.lens (\ListAvailableVoiceConnectorRegionsResponse' {voiceConnectorRegions} -> voiceConnectorRegions) (\s@ListAvailableVoiceConnectorRegionsResponse' {} a -> s {voiceConnectorRegions = a} :: ListAvailableVoiceConnectorRegionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listAvailableVoiceConnectorRegionsResponse_httpStatus :: Lens.Lens' ListAvailableVoiceConnectorRegionsResponse Prelude.Int
+listAvailableVoiceConnectorRegionsResponse_httpStatus = Lens.lens (\ListAvailableVoiceConnectorRegionsResponse' {httpStatus} -> httpStatus) (\s@ListAvailableVoiceConnectorRegionsResponse' {} a -> s {httpStatus = a} :: ListAvailableVoiceConnectorRegionsResponse)
+
+instance
+  Prelude.NFData
+    ListAvailableVoiceConnectorRegionsResponse
+  where
+  rnf ListAvailableVoiceConnectorRegionsResponse' {..} =
+    Prelude.rnf voiceConnectorRegions
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ChimeSdkVoice/ListPhoneNumberOrders.hs b/gen/Amazonka/ChimeSdkVoice/ListPhoneNumberOrders.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/ListPhoneNumberOrders.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { maxResults :: Prelude.Maybe Prelude.Natural,
+    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' - Undocumented member.
+--
+-- 'nextToken', 'listPhoneNumberOrders_nextToken' - Undocumented member.
+newListPhoneNumberOrders ::
+  ListPhoneNumberOrders
+newListPhoneNumberOrders =
+  ListPhoneNumberOrders'
+    { maxResults =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+listPhoneNumberOrders_maxResults :: Lens.Lens' ListPhoneNumberOrders (Prelude.Maybe Prelude.Natural)
+listPhoneNumberOrders_maxResults = Lens.lens (\ListPhoneNumberOrders' {maxResults} -> maxResults) (\s@ListPhoneNumberOrders' {} a -> s {maxResults = a} :: ListPhoneNumberOrders)
+
+-- | Undocumented member.
+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'
+  { nextToken :: Prelude.Maybe Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'phoneNumberOrders', 'listPhoneNumberOrdersResponse_phoneNumberOrders' - Undocumented member.
+--
+-- '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_
+    }
+
+-- | Undocumented member.
+listPhoneNumberOrdersResponse_nextToken :: Lens.Lens' ListPhoneNumberOrdersResponse (Prelude.Maybe Prelude.Text)
+listPhoneNumberOrdersResponse_nextToken = Lens.lens (\ListPhoneNumberOrdersResponse' {nextToken} -> nextToken) (\s@ListPhoneNumberOrdersResponse' {} a -> s {nextToken = a} :: ListPhoneNumberOrdersResponse)
+
+-- | Undocumented member.
+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/ChimeSdkVoice/ListPhoneNumbers.hs b/gen/Amazonka/ChimeSdkVoice/ListPhoneNumbers.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/ListPhoneNumbers.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { filterName :: Prelude.Maybe PhoneNumberAssociationName,
+    filterValue :: Prelude.Maybe Prelude.Text,
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text,
+    productType :: Prelude.Maybe PhoneNumberProductType,
+    status :: Prelude.Maybe Prelude.Text
+  }
+  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' - Undocumented member.
+--
+-- 'filterValue', 'listPhoneNumbers_filterValue' - Undocumented member.
+--
+-- 'maxResults', 'listPhoneNumbers_maxResults' - Undocumented member.
+--
+-- 'nextToken', 'listPhoneNumbers_nextToken' - Undocumented member.
+--
+-- 'productType', 'listPhoneNumbers_productType' - Undocumented member.
+--
+-- 'status', 'listPhoneNumbers_status' - Undocumented member.
+newListPhoneNumbers ::
+  ListPhoneNumbers
+newListPhoneNumbers =
+  ListPhoneNumbers'
+    { filterName = Prelude.Nothing,
+      filterValue = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      productType = Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+listPhoneNumbers_filterName :: Lens.Lens' ListPhoneNumbers (Prelude.Maybe PhoneNumberAssociationName)
+listPhoneNumbers_filterName = Lens.lens (\ListPhoneNumbers' {filterName} -> filterName) (\s@ListPhoneNumbers' {} a -> s {filterName = a} :: ListPhoneNumbers)
+
+-- | Undocumented member.
+listPhoneNumbers_filterValue :: Lens.Lens' ListPhoneNumbers (Prelude.Maybe Prelude.Text)
+listPhoneNumbers_filterValue = Lens.lens (\ListPhoneNumbers' {filterValue} -> filterValue) (\s@ListPhoneNumbers' {} a -> s {filterValue = a} :: ListPhoneNumbers)
+
+-- | Undocumented member.
+listPhoneNumbers_maxResults :: Lens.Lens' ListPhoneNumbers (Prelude.Maybe Prelude.Natural)
+listPhoneNumbers_maxResults = Lens.lens (\ListPhoneNumbers' {maxResults} -> maxResults) (\s@ListPhoneNumbers' {} a -> s {maxResults = a} :: ListPhoneNumbers)
+
+-- | Undocumented member.
+listPhoneNumbers_nextToken :: Lens.Lens' ListPhoneNumbers (Prelude.Maybe Prelude.Text)
+listPhoneNumbers_nextToken = Lens.lens (\ListPhoneNumbers' {nextToken} -> nextToken) (\s@ListPhoneNumbers' {} a -> s {nextToken = a} :: ListPhoneNumbers)
+
+-- | Undocumented member.
+listPhoneNumbers_productType :: Lens.Lens' ListPhoneNumbers (Prelude.Maybe PhoneNumberProductType)
+listPhoneNumbers_productType = Lens.lens (\ListPhoneNumbers' {productType} -> productType) (\s@ListPhoneNumbers' {} a -> s {productType = a} :: ListPhoneNumbers)
+
+-- | Undocumented member.
+listPhoneNumbers_status :: Lens.Lens' ListPhoneNumbers (Prelude.Maybe Prelude.Text)
+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'
+  { nextToken :: Prelude.Maybe Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'phoneNumbers', 'listPhoneNumbersResponse_phoneNumbers' - Undocumented member.
+--
+-- '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_
+    }
+
+-- | Undocumented member.
+listPhoneNumbersResponse_nextToken :: Lens.Lens' ListPhoneNumbersResponse (Prelude.Maybe Prelude.Text)
+listPhoneNumbersResponse_nextToken = Lens.lens (\ListPhoneNumbersResponse' {nextToken} -> nextToken) (\s@ListPhoneNumbersResponse' {} a -> s {nextToken = a} :: ListPhoneNumbersResponse)
+
+-- | Undocumented member.
+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/ChimeSdkVoice/ListProxySessions.hs b/gen/Amazonka/ChimeSdkVoice/ListProxySessions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/ListProxySessions.hs
@@ -0,0 +1,205 @@
+{-# 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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { maxResults :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text,
+    status :: Prelude.Maybe ProxySessionStatus,
+    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' - Undocumented member.
+--
+-- 'nextToken', 'listProxySessions_nextToken' - Undocumented member.
+--
+-- 'status', 'listProxySessions_status' - Undocumented member.
+--
+-- 'voiceConnectorId', 'listProxySessions_voiceConnectorId' - Undocumented member.
+newListProxySessions ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  ListProxySessions
+newListProxySessions pVoiceConnectorId_ =
+  ListProxySessions'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      status = Prelude.Nothing,
+      voiceConnectorId = pVoiceConnectorId_
+    }
+
+-- | Undocumented member.
+listProxySessions_maxResults :: Lens.Lens' ListProxySessions (Prelude.Maybe Prelude.Natural)
+listProxySessions_maxResults = Lens.lens (\ListProxySessions' {maxResults} -> maxResults) (\s@ListProxySessions' {} a -> s {maxResults = a} :: ListProxySessions)
+
+-- | Undocumented member.
+listProxySessions_nextToken :: Lens.Lens' ListProxySessions (Prelude.Maybe Prelude.Text)
+listProxySessions_nextToken = Lens.lens (\ListProxySessions' {nextToken} -> nextToken) (\s@ListProxySessions' {} a -> s {nextToken = a} :: ListProxySessions)
+
+-- | Undocumented member.
+listProxySessions_status :: Lens.Lens' ListProxySessions (Prelude.Maybe ProxySessionStatus)
+listProxySessions_status = Lens.lens (\ListProxySessions' {status} -> status) (\s@ListProxySessions' {} a -> s {status = a} :: ListProxySessions)
+
+-- | Undocumented member.
+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'
+  { nextToken :: Prelude.Maybe Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'proxySessions', 'listProxySessionsResponse_proxySessions' - Undocumented member.
+--
+-- '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_
+    }
+
+-- | Undocumented member.
+listProxySessionsResponse_nextToken :: Lens.Lens' ListProxySessionsResponse (Prelude.Maybe Prelude.Text)
+listProxySessionsResponse_nextToken = Lens.lens (\ListProxySessionsResponse' {nextToken} -> nextToken) (\s@ListProxySessionsResponse' {} a -> s {nextToken = a} :: ListProxySessionsResponse)
+
+-- | Undocumented member.
+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/ChimeSdkVoice/ListSipMediaApplications.hs b/gen/Amazonka/ChimeSdkVoice/ListSipMediaApplications.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/ListSipMediaApplications.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+--
+-- This operation returns paginated results.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { maxResults :: Prelude.Maybe Prelude.Natural,
+    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' - Undocumented member.
+--
+-- 'nextToken', 'listSipMediaApplications_nextToken' - Undocumented member.
+newListSipMediaApplications ::
+  ListSipMediaApplications
+newListSipMediaApplications =
+  ListSipMediaApplications'
+    { maxResults =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+listSipMediaApplications_maxResults :: Lens.Lens' ListSipMediaApplications (Prelude.Maybe Prelude.Natural)
+listSipMediaApplications_maxResults = Lens.lens (\ListSipMediaApplications' {maxResults} -> maxResults) (\s@ListSipMediaApplications' {} a -> s {maxResults = a} :: ListSipMediaApplications)
+
+-- | Undocumented member.
+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.AWSPager ListSipMediaApplications where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listSipMediaApplicationsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listSipMediaApplicationsResponse_sipMediaApplications
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listSipMediaApplications_nextToken
+          Lens..~ rs
+          Lens.^? listSipMediaApplicationsResponse_nextToken
+          Prelude.. Lens._Just
+
+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'
+  { nextToken :: Prelude.Maybe Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'sipMediaApplications', 'listSipMediaApplicationsResponse_sipMediaApplications' - Undocumented member.
+--
+-- '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_
+    }
+
+-- | Undocumented member.
+listSipMediaApplicationsResponse_nextToken :: Lens.Lens' ListSipMediaApplicationsResponse (Prelude.Maybe Prelude.Text)
+listSipMediaApplicationsResponse_nextToken = Lens.lens (\ListSipMediaApplicationsResponse' {nextToken} -> nextToken) (\s@ListSipMediaApplicationsResponse' {} a -> s {nextToken = a} :: ListSipMediaApplicationsResponse)
+
+-- | Undocumented member.
+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/ChimeSdkVoice/ListSipRules.hs b/gen/Amazonka/ChimeSdkVoice/ListSipRules.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/ListSipRules.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+--
+-- This operation returns paginated results.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { maxResults :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'nextToken', 'listSipRules_nextToken' - Undocumented member.
+--
+-- 'sipMediaApplicationId', 'listSipRules_sipMediaApplicationId' - Undocumented member.
+newListSipRules ::
+  ListSipRules
+newListSipRules =
+  ListSipRules'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sipMediaApplicationId = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+listSipRules_maxResults :: Lens.Lens' ListSipRules (Prelude.Maybe Prelude.Natural)
+listSipRules_maxResults = Lens.lens (\ListSipRules' {maxResults} -> maxResults) (\s@ListSipRules' {} a -> s {maxResults = a} :: ListSipRules)
+
+-- | Undocumented member.
+listSipRules_nextToken :: Lens.Lens' ListSipRules (Prelude.Maybe Prelude.Text)
+listSipRules_nextToken = Lens.lens (\ListSipRules' {nextToken} -> nextToken) (\s@ListSipRules' {} a -> s {nextToken = a} :: ListSipRules)
+
+-- | Undocumented member.
+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.AWSPager ListSipRules where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listSipRulesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listSipRulesResponse_sipRules
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listSipRules_nextToken
+          Lens..~ rs
+          Lens.^? listSipRulesResponse_nextToken
+          Prelude.. Lens._Just
+
+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'
+  { nextToken :: Prelude.Maybe Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'sipRules', 'listSipRulesResponse_sipRules' - Undocumented member.
+--
+-- '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_
+    }
+
+-- | Undocumented member.
+listSipRulesResponse_nextToken :: Lens.Lens' ListSipRulesResponse (Prelude.Maybe Prelude.Text)
+listSipRulesResponse_nextToken = Lens.lens (\ListSipRulesResponse' {nextToken} -> nextToken) (\s@ListSipRulesResponse' {} a -> s {nextToken = a} :: ListSipRulesResponse)
+
+-- | Undocumented member.
+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/ChimeSdkVoice/ListSupportedPhoneNumberCountries.hs b/gen/Amazonka/ChimeSdkVoice/ListSupportedPhoneNumberCountries.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/ListSupportedPhoneNumberCountries.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.ListSupportedPhoneNumberCountries
+  ( -- * Creating a Request
+    ListSupportedPhoneNumberCountries (..),
+    newListSupportedPhoneNumberCountries,
+
+    -- * Request Lenses
+    listSupportedPhoneNumberCountries_productType,
+
+    -- * Destructuring the Response
+    ListSupportedPhoneNumberCountriesResponse (..),
+    newListSupportedPhoneNumberCountriesResponse,
+
+    -- * Response Lenses
+    listSupportedPhoneNumberCountriesResponse_phoneNumberCountries,
+    listSupportedPhoneNumberCountriesResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { 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' - Undocumented member.
+newListSupportedPhoneNumberCountries ::
+  -- | 'productType'
+  PhoneNumberProductType ->
+  ListSupportedPhoneNumberCountries
+newListSupportedPhoneNumberCountries pProductType_ =
+  ListSupportedPhoneNumberCountries'
+    { productType =
+        pProductType_
+    }
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'listSupportedPhoneNumberCountriesResponse_httpStatus' - The response's http status code.
+newListSupportedPhoneNumberCountriesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListSupportedPhoneNumberCountriesResponse
+newListSupportedPhoneNumberCountriesResponse
+  pHttpStatus_ =
+    ListSupportedPhoneNumberCountriesResponse'
+      { phoneNumberCountries =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/ListVoiceConnectorGroups.hs b/gen/Amazonka/ChimeSdkVoice/ListVoiceConnectorGroups.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/ListVoiceConnectorGroups.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { maxResults :: Prelude.Maybe Prelude.Natural,
+    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' - Undocumented member.
+--
+-- 'nextToken', 'listVoiceConnectorGroups_nextToken' - Undocumented member.
+newListVoiceConnectorGroups ::
+  ListVoiceConnectorGroups
+newListVoiceConnectorGroups =
+  ListVoiceConnectorGroups'
+    { maxResults =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+listVoiceConnectorGroups_maxResults :: Lens.Lens' ListVoiceConnectorGroups (Prelude.Maybe Prelude.Natural)
+listVoiceConnectorGroups_maxResults = Lens.lens (\ListVoiceConnectorGroups' {maxResults} -> maxResults) (\s@ListVoiceConnectorGroups' {} a -> s {maxResults = a} :: ListVoiceConnectorGroups)
+
+-- | Undocumented member.
+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'
+  { nextToken :: Prelude.Maybe Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'voiceConnectorGroups', 'listVoiceConnectorGroupsResponse_voiceConnectorGroups' - Undocumented member.
+--
+-- '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_
+    }
+
+-- | Undocumented member.
+listVoiceConnectorGroupsResponse_nextToken :: Lens.Lens' ListVoiceConnectorGroupsResponse (Prelude.Maybe Prelude.Text)
+listVoiceConnectorGroupsResponse_nextToken = Lens.lens (\ListVoiceConnectorGroupsResponse' {nextToken} -> nextToken) (\s@ListVoiceConnectorGroupsResponse' {} a -> s {nextToken = a} :: ListVoiceConnectorGroupsResponse)
+
+-- | Undocumented member.
+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/ChimeSdkVoice/ListVoiceConnectorTerminationCredentials.hs b/gen/Amazonka/ChimeSdkVoice/ListVoiceConnectorTerminationCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/ListVoiceConnectorTerminationCredentials.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.ListVoiceConnectorTerminationCredentials
+  ( -- * Creating a Request
+    ListVoiceConnectorTerminationCredentials (..),
+    newListVoiceConnectorTerminationCredentials,
+
+    -- * Request Lenses
+    listVoiceConnectorTerminationCredentials_voiceConnectorId,
+
+    -- * Destructuring the Response
+    ListVoiceConnectorTerminationCredentialsResponse (..),
+    newListVoiceConnectorTerminationCredentialsResponse,
+
+    -- * Response Lenses
+    listVoiceConnectorTerminationCredentialsResponse_usernames,
+    listVoiceConnectorTerminationCredentialsResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { 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' - Undocumented member.
+newListVoiceConnectorTerminationCredentials ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  ListVoiceConnectorTerminationCredentials
+newListVoiceConnectorTerminationCredentials
+  pVoiceConnectorId_ =
+    ListVoiceConnectorTerminationCredentials'
+      { voiceConnectorId =
+          pVoiceConnectorId_
+      }
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'listVoiceConnectorTerminationCredentialsResponse_httpStatus' - The response's http status code.
+newListVoiceConnectorTerminationCredentialsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListVoiceConnectorTerminationCredentialsResponse
+newListVoiceConnectorTerminationCredentialsResponse
+  pHttpStatus_ =
+    ListVoiceConnectorTerminationCredentialsResponse'
+      { usernames =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/ListVoiceConnectors.hs b/gen/Amazonka/ChimeSdkVoice/ListVoiceConnectors.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/ListVoiceConnectors.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { maxResults :: Prelude.Maybe Prelude.Natural,
+    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' - Undocumented member.
+--
+-- 'nextToken', 'listVoiceConnectors_nextToken' - Undocumented member.
+newListVoiceConnectors ::
+  ListVoiceConnectors
+newListVoiceConnectors =
+  ListVoiceConnectors'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+listVoiceConnectors_maxResults :: Lens.Lens' ListVoiceConnectors (Prelude.Maybe Prelude.Natural)
+listVoiceConnectors_maxResults = Lens.lens (\ListVoiceConnectors' {maxResults} -> maxResults) (\s@ListVoiceConnectors' {} a -> s {maxResults = a} :: ListVoiceConnectors)
+
+-- | Undocumented member.
+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'
+  { nextToken :: Prelude.Maybe Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'voiceConnectors', 'listVoiceConnectorsResponse_voiceConnectors' - Undocumented member.
+--
+-- '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_
+    }
+
+-- | Undocumented member.
+listVoiceConnectorsResponse_nextToken :: Lens.Lens' ListVoiceConnectorsResponse (Prelude.Maybe Prelude.Text)
+listVoiceConnectorsResponse_nextToken = Lens.lens (\ListVoiceConnectorsResponse' {nextToken} -> nextToken) (\s@ListVoiceConnectorsResponse' {} a -> s {nextToken = a} :: ListVoiceConnectorsResponse)
+
+-- | Undocumented member.
+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/ChimeSdkVoice/PutSipMediaApplicationAlexaSkillConfiguration.hs b/gen/Amazonka/ChimeSdkVoice/PutSipMediaApplicationAlexaSkillConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/PutSipMediaApplicationAlexaSkillConfiguration.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.ChimeSdkVoice.PutSipMediaApplicationAlexaSkillConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.PutSipMediaApplicationAlexaSkillConfiguration
+  ( -- * Creating a Request
+    PutSipMediaApplicationAlexaSkillConfiguration (..),
+    newPutSipMediaApplicationAlexaSkillConfiguration,
+
+    -- * Request Lenses
+    putSipMediaApplicationAlexaSkillConfiguration_sipMediaApplicationAlexaSkillConfiguration,
+    putSipMediaApplicationAlexaSkillConfiguration_sipMediaApplicationId,
+
+    -- * Destructuring the Response
+    PutSipMediaApplicationAlexaSkillConfigurationResponse (..),
+    newPutSipMediaApplicationAlexaSkillConfigurationResponse,
+
+    -- * Response Lenses
+    putSipMediaApplicationAlexaSkillConfigurationResponse_sipMediaApplicationAlexaSkillConfiguration,
+    putSipMediaApplicationAlexaSkillConfigurationResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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:/ 'newPutSipMediaApplicationAlexaSkillConfiguration' smart constructor.
+data PutSipMediaApplicationAlexaSkillConfiguration = PutSipMediaApplicationAlexaSkillConfiguration'
+  { sipMediaApplicationAlexaSkillConfiguration :: Prelude.Maybe SipMediaApplicationAlexaSkillConfiguration,
+    sipMediaApplicationId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutSipMediaApplicationAlexaSkillConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sipMediaApplicationAlexaSkillConfiguration', 'putSipMediaApplicationAlexaSkillConfiguration_sipMediaApplicationAlexaSkillConfiguration' - Undocumented member.
+--
+-- 'sipMediaApplicationId', 'putSipMediaApplicationAlexaSkillConfiguration_sipMediaApplicationId' - Undocumented member.
+newPutSipMediaApplicationAlexaSkillConfiguration ::
+  -- | 'sipMediaApplicationId'
+  Prelude.Text ->
+  PutSipMediaApplicationAlexaSkillConfiguration
+newPutSipMediaApplicationAlexaSkillConfiguration
+  pSipMediaApplicationId_ =
+    PutSipMediaApplicationAlexaSkillConfiguration'
+      { sipMediaApplicationAlexaSkillConfiguration =
+          Prelude.Nothing,
+        sipMediaApplicationId =
+          pSipMediaApplicationId_
+      }
+
+-- | Undocumented member.
+putSipMediaApplicationAlexaSkillConfiguration_sipMediaApplicationAlexaSkillConfiguration :: Lens.Lens' PutSipMediaApplicationAlexaSkillConfiguration (Prelude.Maybe SipMediaApplicationAlexaSkillConfiguration)
+putSipMediaApplicationAlexaSkillConfiguration_sipMediaApplicationAlexaSkillConfiguration = Lens.lens (\PutSipMediaApplicationAlexaSkillConfiguration' {sipMediaApplicationAlexaSkillConfiguration} -> sipMediaApplicationAlexaSkillConfiguration) (\s@PutSipMediaApplicationAlexaSkillConfiguration' {} a -> s {sipMediaApplicationAlexaSkillConfiguration = a} :: PutSipMediaApplicationAlexaSkillConfiguration)
+
+-- | Undocumented member.
+putSipMediaApplicationAlexaSkillConfiguration_sipMediaApplicationId :: Lens.Lens' PutSipMediaApplicationAlexaSkillConfiguration Prelude.Text
+putSipMediaApplicationAlexaSkillConfiguration_sipMediaApplicationId = Lens.lens (\PutSipMediaApplicationAlexaSkillConfiguration' {sipMediaApplicationId} -> sipMediaApplicationId) (\s@PutSipMediaApplicationAlexaSkillConfiguration' {} a -> s {sipMediaApplicationId = a} :: PutSipMediaApplicationAlexaSkillConfiguration)
+
+instance
+  Core.AWSRequest
+    PutSipMediaApplicationAlexaSkillConfiguration
+  where
+  type
+    AWSResponse
+      PutSipMediaApplicationAlexaSkillConfiguration =
+      PutSipMediaApplicationAlexaSkillConfigurationResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          PutSipMediaApplicationAlexaSkillConfigurationResponse'
+            Prelude.<$> ( x
+                            Data..?> "SipMediaApplicationAlexaSkillConfiguration"
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    PutSipMediaApplicationAlexaSkillConfiguration
+  where
+  hashWithSalt
+    _salt
+    PutSipMediaApplicationAlexaSkillConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` sipMediaApplicationAlexaSkillConfiguration
+        `Prelude.hashWithSalt` sipMediaApplicationId
+
+instance
+  Prelude.NFData
+    PutSipMediaApplicationAlexaSkillConfiguration
+  where
+  rnf
+    PutSipMediaApplicationAlexaSkillConfiguration' {..} =
+      Prelude.rnf
+        sipMediaApplicationAlexaSkillConfiguration
+        `Prelude.seq` Prelude.rnf sipMediaApplicationId
+
+instance
+  Data.ToHeaders
+    PutSipMediaApplicationAlexaSkillConfiguration
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToJSON
+    PutSipMediaApplicationAlexaSkillConfiguration
+  where
+  toJSON
+    PutSipMediaApplicationAlexaSkillConfiguration' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ ( "SipMediaApplicationAlexaSkillConfiguration"
+                  Data..=
+              )
+                Prelude.<$> sipMediaApplicationAlexaSkillConfiguration
+            ]
+        )
+
+instance
+  Data.ToPath
+    PutSipMediaApplicationAlexaSkillConfiguration
+  where
+  toPath
+    PutSipMediaApplicationAlexaSkillConfiguration' {..} =
+      Prelude.mconcat
+        [ "/sip-media-applications/",
+          Data.toBS sipMediaApplicationId,
+          "/alexa-skill-configuration"
+        ]
+
+instance
+  Data.ToQuery
+    PutSipMediaApplicationAlexaSkillConfiguration
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newPutSipMediaApplicationAlexaSkillConfigurationResponse' smart constructor.
+data PutSipMediaApplicationAlexaSkillConfigurationResponse = PutSipMediaApplicationAlexaSkillConfigurationResponse'
+  { sipMediaApplicationAlexaSkillConfiguration :: Prelude.Maybe SipMediaApplicationAlexaSkillConfiguration,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutSipMediaApplicationAlexaSkillConfigurationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sipMediaApplicationAlexaSkillConfiguration', 'putSipMediaApplicationAlexaSkillConfigurationResponse_sipMediaApplicationAlexaSkillConfiguration' - Undocumented member.
+--
+-- 'httpStatus', 'putSipMediaApplicationAlexaSkillConfigurationResponse_httpStatus' - The response's http status code.
+newPutSipMediaApplicationAlexaSkillConfigurationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  PutSipMediaApplicationAlexaSkillConfigurationResponse
+newPutSipMediaApplicationAlexaSkillConfigurationResponse
+  pHttpStatus_ =
+    PutSipMediaApplicationAlexaSkillConfigurationResponse'
+      { sipMediaApplicationAlexaSkillConfiguration =
+          Prelude.Nothing,
+        httpStatus =
+          pHttpStatus_
+      }
+
+-- | Undocumented member.
+putSipMediaApplicationAlexaSkillConfigurationResponse_sipMediaApplicationAlexaSkillConfiguration :: Lens.Lens' PutSipMediaApplicationAlexaSkillConfigurationResponse (Prelude.Maybe SipMediaApplicationAlexaSkillConfiguration)
+putSipMediaApplicationAlexaSkillConfigurationResponse_sipMediaApplicationAlexaSkillConfiguration = Lens.lens (\PutSipMediaApplicationAlexaSkillConfigurationResponse' {sipMediaApplicationAlexaSkillConfiguration} -> sipMediaApplicationAlexaSkillConfiguration) (\s@PutSipMediaApplicationAlexaSkillConfigurationResponse' {} a -> s {sipMediaApplicationAlexaSkillConfiguration = a} :: PutSipMediaApplicationAlexaSkillConfigurationResponse)
+
+-- | The response's http status code.
+putSipMediaApplicationAlexaSkillConfigurationResponse_httpStatus :: Lens.Lens' PutSipMediaApplicationAlexaSkillConfigurationResponse Prelude.Int
+putSipMediaApplicationAlexaSkillConfigurationResponse_httpStatus = Lens.lens (\PutSipMediaApplicationAlexaSkillConfigurationResponse' {httpStatus} -> httpStatus) (\s@PutSipMediaApplicationAlexaSkillConfigurationResponse' {} a -> s {httpStatus = a} :: PutSipMediaApplicationAlexaSkillConfigurationResponse)
+
+instance
+  Prelude.NFData
+    PutSipMediaApplicationAlexaSkillConfigurationResponse
+  where
+  rnf
+    PutSipMediaApplicationAlexaSkillConfigurationResponse' {..} =
+      Prelude.rnf
+        sipMediaApplicationAlexaSkillConfiguration
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ChimeSdkVoice/PutSipMediaApplicationLoggingConfiguration.hs b/gen/Amazonka/ChimeSdkVoice/PutSipMediaApplicationLoggingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/PutSipMediaApplicationLoggingConfiguration.hs
@@ -0,0 +1,213 @@
+{-# 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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { sipMediaApplicationLoggingConfiguration :: Prelude.Maybe SipMediaApplicationLoggingConfiguration,
+    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' - Undocumented member.
+--
+-- 'sipMediaApplicationId', 'putSipMediaApplicationLoggingConfiguration_sipMediaApplicationId' - Undocumented member.
+newPutSipMediaApplicationLoggingConfiguration ::
+  -- | 'sipMediaApplicationId'
+  Prelude.Text ->
+  PutSipMediaApplicationLoggingConfiguration
+newPutSipMediaApplicationLoggingConfiguration
+  pSipMediaApplicationId_ =
+    PutSipMediaApplicationLoggingConfiguration'
+      { sipMediaApplicationLoggingConfiguration =
+          Prelude.Nothing,
+        sipMediaApplicationId =
+          pSipMediaApplicationId_
+      }
+
+-- | Undocumented member.
+putSipMediaApplicationLoggingConfiguration_sipMediaApplicationLoggingConfiguration :: Lens.Lens' PutSipMediaApplicationLoggingConfiguration (Prelude.Maybe SipMediaApplicationLoggingConfiguration)
+putSipMediaApplicationLoggingConfiguration_sipMediaApplicationLoggingConfiguration = Lens.lens (\PutSipMediaApplicationLoggingConfiguration' {sipMediaApplicationLoggingConfiguration} -> sipMediaApplicationLoggingConfiguration) (\s@PutSipMediaApplicationLoggingConfiguration' {} a -> s {sipMediaApplicationLoggingConfiguration = a} :: PutSipMediaApplicationLoggingConfiguration)
+
+-- | Undocumented member.
+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/ChimeSdkVoice/PutVoiceConnectorEmergencyCallingConfiguration.hs b/gen/Amazonka/ChimeSdkVoice/PutVoiceConnectorEmergencyCallingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/PutVoiceConnectorEmergencyCallingConfiguration.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { voiceConnectorId :: Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'emergencyCallingConfiguration', 'putVoiceConnectorEmergencyCallingConfiguration_emergencyCallingConfiguration' - Undocumented member.
+newPutVoiceConnectorEmergencyCallingConfiguration ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  -- | 'emergencyCallingConfiguration'
+  EmergencyCallingConfiguration ->
+  PutVoiceConnectorEmergencyCallingConfiguration
+newPutVoiceConnectorEmergencyCallingConfiguration
+  pVoiceConnectorId_
+  pEmergencyCallingConfiguration_ =
+    PutVoiceConnectorEmergencyCallingConfiguration'
+      { voiceConnectorId =
+          pVoiceConnectorId_,
+        emergencyCallingConfiguration =
+          pEmergencyCallingConfiguration_
+      }
+
+-- | Undocumented member.
+putVoiceConnectorEmergencyCallingConfiguration_voiceConnectorId :: Lens.Lens' PutVoiceConnectorEmergencyCallingConfiguration Prelude.Text
+putVoiceConnectorEmergencyCallingConfiguration_voiceConnectorId = Lens.lens (\PutVoiceConnectorEmergencyCallingConfiguration' {voiceConnectorId} -> voiceConnectorId) (\s@PutVoiceConnectorEmergencyCallingConfiguration' {} a -> s {voiceConnectorId = a} :: PutVoiceConnectorEmergencyCallingConfiguration)
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'putVoiceConnectorEmergencyCallingConfigurationResponse_httpStatus' - The response's http status code.
+newPutVoiceConnectorEmergencyCallingConfigurationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  PutVoiceConnectorEmergencyCallingConfigurationResponse
+newPutVoiceConnectorEmergencyCallingConfigurationResponse
+  pHttpStatus_ =
+    PutVoiceConnectorEmergencyCallingConfigurationResponse'
+      { emergencyCallingConfiguration =
+          Prelude.Nothing,
+        httpStatus =
+          pHttpStatus_
+      }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/PutVoiceConnectorLoggingConfiguration.hs b/gen/Amazonka/ChimeSdkVoice/PutVoiceConnectorLoggingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/PutVoiceConnectorLoggingConfiguration.hs
@@ -0,0 +1,213 @@
+{-# 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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { voiceConnectorId :: Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'loggingConfiguration', 'putVoiceConnectorLoggingConfiguration_loggingConfiguration' - Undocumented member.
+newPutVoiceConnectorLoggingConfiguration ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  -- | 'loggingConfiguration'
+  LoggingConfiguration ->
+  PutVoiceConnectorLoggingConfiguration
+newPutVoiceConnectorLoggingConfiguration
+  pVoiceConnectorId_
+  pLoggingConfiguration_ =
+    PutVoiceConnectorLoggingConfiguration'
+      { voiceConnectorId =
+          pVoiceConnectorId_,
+        loggingConfiguration =
+          pLoggingConfiguration_
+      }
+
+-- | Undocumented member.
+putVoiceConnectorLoggingConfiguration_voiceConnectorId :: Lens.Lens' PutVoiceConnectorLoggingConfiguration Prelude.Text
+putVoiceConnectorLoggingConfiguration_voiceConnectorId = Lens.lens (\PutVoiceConnectorLoggingConfiguration' {voiceConnectorId} -> voiceConnectorId) (\s@PutVoiceConnectorLoggingConfiguration' {} a -> s {voiceConnectorId = a} :: PutVoiceConnectorLoggingConfiguration)
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'putVoiceConnectorLoggingConfigurationResponse_httpStatus' - The response's http status code.
+newPutVoiceConnectorLoggingConfigurationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  PutVoiceConnectorLoggingConfigurationResponse
+newPutVoiceConnectorLoggingConfigurationResponse
+  pHttpStatus_ =
+    PutVoiceConnectorLoggingConfigurationResponse'
+      { loggingConfiguration =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/PutVoiceConnectorOrigination.hs b/gen/Amazonka/ChimeSdkVoice/PutVoiceConnectorOrigination.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/PutVoiceConnectorOrigination.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { voiceConnectorId :: Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'origination', 'putVoiceConnectorOrigination_origination' - Undocumented member.
+newPutVoiceConnectorOrigination ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  -- | 'origination'
+  Origination ->
+  PutVoiceConnectorOrigination
+newPutVoiceConnectorOrigination
+  pVoiceConnectorId_
+  pOrigination_ =
+    PutVoiceConnectorOrigination'
+      { voiceConnectorId =
+          pVoiceConnectorId_,
+        origination = pOrigination_
+      }
+
+-- | Undocumented member.
+putVoiceConnectorOrigination_voiceConnectorId :: Lens.Lens' PutVoiceConnectorOrigination Prelude.Text
+putVoiceConnectorOrigination_voiceConnectorId = Lens.lens (\PutVoiceConnectorOrigination' {voiceConnectorId} -> voiceConnectorId) (\s@PutVoiceConnectorOrigination' {} a -> s {voiceConnectorId = a} :: PutVoiceConnectorOrigination)
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'putVoiceConnectorOriginationResponse_httpStatus' - The response's http status code.
+newPutVoiceConnectorOriginationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  PutVoiceConnectorOriginationResponse
+newPutVoiceConnectorOriginationResponse pHttpStatus_ =
+  PutVoiceConnectorOriginationResponse'
+    { origination =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/PutVoiceConnectorProxy.hs b/gen/Amazonka/ChimeSdkVoice/PutVoiceConnectorProxy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/PutVoiceConnectorProxy.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { disabled :: Prelude.Maybe Prelude.Bool,
+    fallBackPhoneNumber :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    defaultSessionExpiryMinutes :: Prelude.Int,
+    phoneNumberPoolCountries :: Prelude.NonEmpty Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'fallBackPhoneNumber', 'putVoiceConnectorProxy_fallBackPhoneNumber' - Undocumented member.
+--
+-- 'defaultSessionExpiryMinutes', 'putVoiceConnectorProxy_defaultSessionExpiryMinutes' - Undocumented member.
+--
+-- 'phoneNumberPoolCountries', 'putVoiceConnectorProxy_phoneNumberPoolCountries' - Undocumented member.
+--
+-- 'voiceConnectorId', 'putVoiceConnectorProxy_voiceConnectorId' - Undocumented member.
+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_
+      }
+
+-- | Undocumented member.
+putVoiceConnectorProxy_disabled :: Lens.Lens' PutVoiceConnectorProxy (Prelude.Maybe Prelude.Bool)
+putVoiceConnectorProxy_disabled = Lens.lens (\PutVoiceConnectorProxy' {disabled} -> disabled) (\s@PutVoiceConnectorProxy' {} a -> s {disabled = a} :: PutVoiceConnectorProxy)
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+putVoiceConnectorProxy_defaultSessionExpiryMinutes :: Lens.Lens' PutVoiceConnectorProxy Prelude.Int
+putVoiceConnectorProxy_defaultSessionExpiryMinutes = Lens.lens (\PutVoiceConnectorProxy' {defaultSessionExpiryMinutes} -> defaultSessionExpiryMinutes) (\s@PutVoiceConnectorProxy' {} a -> s {defaultSessionExpiryMinutes = a} :: PutVoiceConnectorProxy)
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'putVoiceConnectorProxyResponse_httpStatus' - The response's http status code.
+newPutVoiceConnectorProxyResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  PutVoiceConnectorProxyResponse
+newPutVoiceConnectorProxyResponse pHttpStatus_ =
+  PutVoiceConnectorProxyResponse'
+    { proxy =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/PutVoiceConnectorStreamingConfiguration.hs b/gen/Amazonka/ChimeSdkVoice/PutVoiceConnectorStreamingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/PutVoiceConnectorStreamingConfiguration.hs
@@ -0,0 +1,213 @@
+{-# 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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { voiceConnectorId :: Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'streamingConfiguration', 'putVoiceConnectorStreamingConfiguration_streamingConfiguration' - Undocumented member.
+newPutVoiceConnectorStreamingConfiguration ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  -- | 'streamingConfiguration'
+  StreamingConfiguration ->
+  PutVoiceConnectorStreamingConfiguration
+newPutVoiceConnectorStreamingConfiguration
+  pVoiceConnectorId_
+  pStreamingConfiguration_ =
+    PutVoiceConnectorStreamingConfiguration'
+      { voiceConnectorId =
+          pVoiceConnectorId_,
+        streamingConfiguration =
+          pStreamingConfiguration_
+      }
+
+-- | Undocumented member.
+putVoiceConnectorStreamingConfiguration_voiceConnectorId :: Lens.Lens' PutVoiceConnectorStreamingConfiguration Prelude.Text
+putVoiceConnectorStreamingConfiguration_voiceConnectorId = Lens.lens (\PutVoiceConnectorStreamingConfiguration' {voiceConnectorId} -> voiceConnectorId) (\s@PutVoiceConnectorStreamingConfiguration' {} a -> s {voiceConnectorId = a} :: PutVoiceConnectorStreamingConfiguration)
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'putVoiceConnectorStreamingConfigurationResponse_httpStatus' - The response's http status code.
+newPutVoiceConnectorStreamingConfigurationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  PutVoiceConnectorStreamingConfigurationResponse
+newPutVoiceConnectorStreamingConfigurationResponse
+  pHttpStatus_ =
+    PutVoiceConnectorStreamingConfigurationResponse'
+      { streamingConfiguration =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/PutVoiceConnectorTermination.hs b/gen/Amazonka/ChimeSdkVoice/PutVoiceConnectorTermination.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/PutVoiceConnectorTermination.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { voiceConnectorId :: Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'termination', 'putVoiceConnectorTermination_termination' - Undocumented member.
+newPutVoiceConnectorTermination ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  -- | 'termination'
+  Termination ->
+  PutVoiceConnectorTermination
+newPutVoiceConnectorTermination
+  pVoiceConnectorId_
+  pTermination_ =
+    PutVoiceConnectorTermination'
+      { voiceConnectorId =
+          pVoiceConnectorId_,
+        termination = pTermination_
+      }
+
+-- | Undocumented member.
+putVoiceConnectorTermination_voiceConnectorId :: Lens.Lens' PutVoiceConnectorTermination Prelude.Text
+putVoiceConnectorTermination_voiceConnectorId = Lens.lens (\PutVoiceConnectorTermination' {voiceConnectorId} -> voiceConnectorId) (\s@PutVoiceConnectorTermination' {} a -> s {voiceConnectorId = a} :: PutVoiceConnectorTermination)
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'putVoiceConnectorTerminationResponse_httpStatus' - The response's http status code.
+newPutVoiceConnectorTerminationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  PutVoiceConnectorTerminationResponse
+newPutVoiceConnectorTerminationResponse pHttpStatus_ =
+  PutVoiceConnectorTerminationResponse'
+    { termination =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/PutVoiceConnectorTerminationCredentials.hs b/gen/Amazonka/ChimeSdkVoice/PutVoiceConnectorTerminationCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/PutVoiceConnectorTerminationCredentials.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.PutVoiceConnectorTerminationCredentials
+  ( -- * Creating a Request
+    PutVoiceConnectorTerminationCredentials (..),
+    newPutVoiceConnectorTerminationCredentials,
+
+    -- * Request Lenses
+    putVoiceConnectorTerminationCredentials_credentials,
+    putVoiceConnectorTerminationCredentials_voiceConnectorId,
+
+    -- * Destructuring the Response
+    PutVoiceConnectorTerminationCredentialsResponse (..),
+    newPutVoiceConnectorTerminationCredentialsResponse,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { credentials :: Prelude.Maybe [Credential],
+    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' - Undocumented member.
+--
+-- 'voiceConnectorId', 'putVoiceConnectorTerminationCredentials_voiceConnectorId' - Undocumented member.
+newPutVoiceConnectorTerminationCredentials ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  PutVoiceConnectorTerminationCredentials
+newPutVoiceConnectorTerminationCredentials
+  pVoiceConnectorId_ =
+    PutVoiceConnectorTerminationCredentials'
+      { credentials =
+          Prelude.Nothing,
+        voiceConnectorId =
+          pVoiceConnectorId_
+      }
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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/ChimeSdkVoice/RestorePhoneNumber.hs b/gen/Amazonka/ChimeSdkVoice/RestorePhoneNumber.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/RestorePhoneNumber.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.RestorePhoneNumber
+  ( -- * Creating a Request
+    RestorePhoneNumber (..),
+    newRestorePhoneNumber,
+
+    -- * Request Lenses
+    restorePhoneNumber_phoneNumberId,
+
+    -- * Destructuring the Response
+    RestorePhoneNumberResponse (..),
+    newRestorePhoneNumberResponse,
+
+    -- * Response Lenses
+    restorePhoneNumberResponse_phoneNumber,
+    restorePhoneNumberResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { phoneNumberId :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, 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' - Undocumented member.
+newRestorePhoneNumber ::
+  -- | 'phoneNumberId'
+  Prelude.Text ->
+  RestorePhoneNumber
+newRestorePhoneNumber pPhoneNumberId_ =
+  RestorePhoneNumber'
+    { phoneNumberId =
+        Data._Sensitive Lens.# pPhoneNumberId_
+    }
+
+-- | Undocumented member.
+restorePhoneNumber_phoneNumberId :: Lens.Lens' RestorePhoneNumber Prelude.Text
+restorePhoneNumber_phoneNumberId = Lens.lens (\RestorePhoneNumber' {phoneNumberId} -> phoneNumberId) (\s@RestorePhoneNumber' {} a -> s {phoneNumberId = a} :: RestorePhoneNumber) Prelude.. Data._Sensitive
+
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'restorePhoneNumberResponse_httpStatus' - The response's http status code.
+newRestorePhoneNumberResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  RestorePhoneNumberResponse
+newRestorePhoneNumberResponse pHttpStatus_ =
+  RestorePhoneNumberResponse'
+    { phoneNumber =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/SearchAvailablePhoneNumbers.hs b/gen/Amazonka/ChimeSdkVoice/SearchAvailablePhoneNumbers.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/SearchAvailablePhoneNumbers.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { areaCode :: Prelude.Maybe Prelude.Text,
+    city :: Prelude.Maybe Prelude.Text,
+    country :: Prelude.Maybe Prelude.Text,
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text,
+    phoneNumberType :: Prelude.Maybe PhoneNumberType,
+    state :: Prelude.Maybe Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'city', 'searchAvailablePhoneNumbers_city' - Undocumented member.
+--
+-- 'country', 'searchAvailablePhoneNumbers_country' - Undocumented member.
+--
+-- 'maxResults', 'searchAvailablePhoneNumbers_maxResults' - Undocumented member.
+--
+-- 'nextToken', 'searchAvailablePhoneNumbers_nextToken' - Undocumented member.
+--
+-- 'phoneNumberType', 'searchAvailablePhoneNumbers_phoneNumberType' - Undocumented member.
+--
+-- 'state', 'searchAvailablePhoneNumbers_state' - Undocumented member.
+--
+-- 'tollFreePrefix', 'searchAvailablePhoneNumbers_tollFreePrefix' - Undocumented member.
+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
+    }
+
+-- | Undocumented member.
+searchAvailablePhoneNumbers_areaCode :: Lens.Lens' SearchAvailablePhoneNumbers (Prelude.Maybe Prelude.Text)
+searchAvailablePhoneNumbers_areaCode = Lens.lens (\SearchAvailablePhoneNumbers' {areaCode} -> areaCode) (\s@SearchAvailablePhoneNumbers' {} a -> s {areaCode = a} :: SearchAvailablePhoneNumbers)
+
+-- | Undocumented member.
+searchAvailablePhoneNumbers_city :: Lens.Lens' SearchAvailablePhoneNumbers (Prelude.Maybe Prelude.Text)
+searchAvailablePhoneNumbers_city = Lens.lens (\SearchAvailablePhoneNumbers' {city} -> city) (\s@SearchAvailablePhoneNumbers' {} a -> s {city = a} :: SearchAvailablePhoneNumbers)
+
+-- | Undocumented member.
+searchAvailablePhoneNumbers_country :: Lens.Lens' SearchAvailablePhoneNumbers (Prelude.Maybe Prelude.Text)
+searchAvailablePhoneNumbers_country = Lens.lens (\SearchAvailablePhoneNumbers' {country} -> country) (\s@SearchAvailablePhoneNumbers' {} a -> s {country = a} :: SearchAvailablePhoneNumbers)
+
+-- | Undocumented member.
+searchAvailablePhoneNumbers_maxResults :: Lens.Lens' SearchAvailablePhoneNumbers (Prelude.Maybe Prelude.Natural)
+searchAvailablePhoneNumbers_maxResults = Lens.lens (\SearchAvailablePhoneNumbers' {maxResults} -> maxResults) (\s@SearchAvailablePhoneNumbers' {} a -> s {maxResults = a} :: SearchAvailablePhoneNumbers)
+
+-- | Undocumented member.
+searchAvailablePhoneNumbers_nextToken :: Lens.Lens' SearchAvailablePhoneNumbers (Prelude.Maybe Prelude.Text)
+searchAvailablePhoneNumbers_nextToken = Lens.lens (\SearchAvailablePhoneNumbers' {nextToken} -> nextToken) (\s@SearchAvailablePhoneNumbers' {} a -> s {nextToken = a} :: SearchAvailablePhoneNumbers)
+
+-- | Undocumented member.
+searchAvailablePhoneNumbers_phoneNumberType :: Lens.Lens' SearchAvailablePhoneNumbers (Prelude.Maybe PhoneNumberType)
+searchAvailablePhoneNumbers_phoneNumberType = Lens.lens (\SearchAvailablePhoneNumbers' {phoneNumberType} -> phoneNumberType) (\s@SearchAvailablePhoneNumbers' {} a -> s {phoneNumberType = a} :: SearchAvailablePhoneNumbers)
+
+-- | Undocumented member.
+searchAvailablePhoneNumbers_state :: Lens.Lens' SearchAvailablePhoneNumbers (Prelude.Maybe Prelude.Text)
+searchAvailablePhoneNumbers_state = Lens.lens (\SearchAvailablePhoneNumbers' {state} -> state) (\s@SearchAvailablePhoneNumbers' {} a -> s {state = a} :: SearchAvailablePhoneNumbers)
+
+-- | Undocumented member.
+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'
+  { e164PhoneNumbers :: Prelude.Maybe [Data.Sensitive Prelude.Text],
+    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' - Undocumented member.
+--
+-- 'nextToken', 'searchAvailablePhoneNumbersResponse_nextToken' - Undocumented member.
+--
+-- '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_
+    }
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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/ChimeSdkVoice/Types.hs b/gen/Amazonka/ChimeSdkVoice/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types.hs
@@ -0,0 +1,576 @@
+{-# 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.ChimeSdkVoice.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.ChimeSdkVoice.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _AccessDeniedException,
+    _BadRequestException,
+    _ConflictException,
+    _ForbiddenException,
+    _NotFoundException,
+    _ResourceLimitExceededException,
+    _ServiceFailureException,
+    _ServiceUnavailableException,
+    _ThrottledClientException,
+    _UnauthorizedClientException,
+
+    -- * AlexaSkillStatus
+    AlexaSkillStatus (..),
+
+    -- * CallingNameStatus
+    CallingNameStatus (..),
+
+    -- * Capability
+    Capability (..),
+
+    -- * ErrorCode
+    ErrorCode (..),
+
+    -- * GeoMatchLevel
+    GeoMatchLevel (..),
+
+    -- * NotificationTarget
+    NotificationTarget (..),
+
+    -- * NumberSelectionBehavior
+    NumberSelectionBehavior (..),
+
+    -- * OrderedPhoneNumberStatus
+    OrderedPhoneNumberStatus (..),
+
+    -- * OriginationRouteProtocol
+    OriginationRouteProtocol (..),
+
+    -- * PhoneNumberAssociationName
+    PhoneNumberAssociationName (..),
+
+    -- * PhoneNumberOrderStatus
+    PhoneNumberOrderStatus (..),
+
+    -- * PhoneNumberOrderType
+    PhoneNumberOrderType (..),
+
+    -- * PhoneNumberProductType
+    PhoneNumberProductType (..),
+
+    -- * PhoneNumberStatus
+    PhoneNumberStatus (..),
+
+    -- * PhoneNumberType
+    PhoneNumberType (..),
+
+    -- * ProxySessionStatus
+    ProxySessionStatus (..),
+
+    -- * SipRuleTriggerType
+    SipRuleTriggerType (..),
+
+    -- * VoiceConnectorAwsRegion
+    VoiceConnectorAwsRegion (..),
+
+    -- * Address
+    Address (..),
+    newAddress,
+    address_city,
+    address_country,
+    address_postDirectional,
+    address_postalCode,
+    address_postalCodePlus4,
+    address_preDirectional,
+    address_state,
+    address_streetName,
+    address_streetNumber,
+    address_streetSuffix,
+
+    -- * CandidateAddress
+    CandidateAddress (..),
+    newCandidateAddress,
+    candidateAddress_city,
+    candidateAddress_country,
+    candidateAddress_postalCode,
+    candidateAddress_postalCodePlus4,
+    candidateAddress_state,
+    candidateAddress_streetInfo,
+    candidateAddress_streetNumber,
+
+    -- * Credential
+    Credential (..),
+    newCredential,
+    credential_password,
+    credential_username,
+
+    -- * DNISEmergencyCallingConfiguration
+    DNISEmergencyCallingConfiguration (..),
+    newDNISEmergencyCallingConfiguration,
+    dNISEmergencyCallingConfiguration_testPhoneNumber,
+    dNISEmergencyCallingConfiguration_emergencyPhoneNumber,
+    dNISEmergencyCallingConfiguration_callingCountry,
+
+    -- * EmergencyCallingConfiguration
+    EmergencyCallingConfiguration (..),
+    newEmergencyCallingConfiguration,
+    emergencyCallingConfiguration_dnis,
+
+    -- * GeoMatchParams
+    GeoMatchParams (..),
+    newGeoMatchParams,
+    geoMatchParams_country,
+    geoMatchParams_areaCode,
+
+    -- * LoggingConfiguration
+    LoggingConfiguration (..),
+    newLoggingConfiguration,
+    loggingConfiguration_enableSIPLogs,
+
+    -- * 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_orderId,
+    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_orderType,
+    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,
+
+    -- * SipMediaApplication
+    SipMediaApplication (..),
+    newSipMediaApplication,
+    sipMediaApplication_awsRegion,
+    sipMediaApplication_createdTimestamp,
+    sipMediaApplication_endpoints,
+    sipMediaApplication_name,
+    sipMediaApplication_sipMediaApplicationId,
+    sipMediaApplication_updatedTimestamp,
+
+    -- * SipMediaApplicationAlexaSkillConfiguration
+    SipMediaApplicationAlexaSkillConfiguration (..),
+    newSipMediaApplicationAlexaSkillConfiguration,
+    sipMediaApplicationAlexaSkillConfiguration_alexaSkillStatus,
+    sipMediaApplicationAlexaSkillConfiguration_alexaSkillIds,
+
+    -- * 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,
+
+    -- * StreamingConfiguration
+    StreamingConfiguration (..),
+    newStreamingConfiguration,
+    streamingConfiguration_streamingNotificationTargets,
+    streamingConfiguration_dataRetentionInHours,
+    streamingConfiguration_disabled,
+
+    -- * StreamingNotificationTarget
+    StreamingNotificationTarget (..),
+    newStreamingNotificationTarget,
+    streamingNotificationTarget_notificationTarget,
+
+    -- * Termination
+    Termination (..),
+    newTermination,
+    termination_callingRegions,
+    termination_cidrAllowedList,
+    termination_cpsLimit,
+    termination_defaultPhoneNumber,
+    termination_disabled,
+
+    -- * TerminationHealth
+    TerminationHealth (..),
+    newTerminationHealth,
+    terminationHealth_source,
+    terminationHealth_timestamp,
+
+    -- * UpdatePhoneNumberRequestItem
+    UpdatePhoneNumberRequestItem (..),
+    newUpdatePhoneNumberRequestItem,
+    updatePhoneNumberRequestItem_callingName,
+    updatePhoneNumberRequestItem_productType,
+    updatePhoneNumberRequestItem_phoneNumberId,
+
+    -- * 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.ChimeSdkVoice.Types.Address
+import Amazonka.ChimeSdkVoice.Types.AlexaSkillStatus
+import Amazonka.ChimeSdkVoice.Types.CallingNameStatus
+import Amazonka.ChimeSdkVoice.Types.CandidateAddress
+import Amazonka.ChimeSdkVoice.Types.Capability
+import Amazonka.ChimeSdkVoice.Types.Credential
+import Amazonka.ChimeSdkVoice.Types.DNISEmergencyCallingConfiguration
+import Amazonka.ChimeSdkVoice.Types.EmergencyCallingConfiguration
+import Amazonka.ChimeSdkVoice.Types.ErrorCode
+import Amazonka.ChimeSdkVoice.Types.GeoMatchLevel
+import Amazonka.ChimeSdkVoice.Types.GeoMatchParams
+import Amazonka.ChimeSdkVoice.Types.LoggingConfiguration
+import Amazonka.ChimeSdkVoice.Types.NotificationTarget
+import Amazonka.ChimeSdkVoice.Types.NumberSelectionBehavior
+import Amazonka.ChimeSdkVoice.Types.OrderedPhoneNumber
+import Amazonka.ChimeSdkVoice.Types.OrderedPhoneNumberStatus
+import Amazonka.ChimeSdkVoice.Types.Origination
+import Amazonka.ChimeSdkVoice.Types.OriginationRoute
+import Amazonka.ChimeSdkVoice.Types.OriginationRouteProtocol
+import Amazonka.ChimeSdkVoice.Types.Participant
+import Amazonka.ChimeSdkVoice.Types.PhoneNumber
+import Amazonka.ChimeSdkVoice.Types.PhoneNumberAssociation
+import Amazonka.ChimeSdkVoice.Types.PhoneNumberAssociationName
+import Amazonka.ChimeSdkVoice.Types.PhoneNumberCapabilities
+import Amazonka.ChimeSdkVoice.Types.PhoneNumberCountry
+import Amazonka.ChimeSdkVoice.Types.PhoneNumberError
+import Amazonka.ChimeSdkVoice.Types.PhoneNumberOrder
+import Amazonka.ChimeSdkVoice.Types.PhoneNumberOrderStatus
+import Amazonka.ChimeSdkVoice.Types.PhoneNumberOrderType
+import Amazonka.ChimeSdkVoice.Types.PhoneNumberProductType
+import Amazonka.ChimeSdkVoice.Types.PhoneNumberStatus
+import Amazonka.ChimeSdkVoice.Types.PhoneNumberType
+import Amazonka.ChimeSdkVoice.Types.Proxy
+import Amazonka.ChimeSdkVoice.Types.ProxySession
+import Amazonka.ChimeSdkVoice.Types.ProxySessionStatus
+import Amazonka.ChimeSdkVoice.Types.SipMediaApplication
+import Amazonka.ChimeSdkVoice.Types.SipMediaApplicationAlexaSkillConfiguration
+import Amazonka.ChimeSdkVoice.Types.SipMediaApplicationCall
+import Amazonka.ChimeSdkVoice.Types.SipMediaApplicationEndpoint
+import Amazonka.ChimeSdkVoice.Types.SipMediaApplicationLoggingConfiguration
+import Amazonka.ChimeSdkVoice.Types.SipRule
+import Amazonka.ChimeSdkVoice.Types.SipRuleTargetApplication
+import Amazonka.ChimeSdkVoice.Types.SipRuleTriggerType
+import Amazonka.ChimeSdkVoice.Types.StreamingConfiguration
+import Amazonka.ChimeSdkVoice.Types.StreamingNotificationTarget
+import Amazonka.ChimeSdkVoice.Types.Termination
+import Amazonka.ChimeSdkVoice.Types.TerminationHealth
+import Amazonka.ChimeSdkVoice.Types.UpdatePhoneNumberRequestItem
+import Amazonka.ChimeSdkVoice.Types.VoiceConnector
+import Amazonka.ChimeSdkVoice.Types.VoiceConnectorAwsRegion
+import Amazonka.ChimeSdkVoice.Types.VoiceConnectorGroup
+import Amazonka.ChimeSdkVoice.Types.VoiceConnectorItem
+import Amazonka.ChimeSdkVoice.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 @2022-08-03@ of the Amazon Chime SDK Voice SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "ChimeSdkVoice",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "voice-chime",
+      Core.signingName = "chime",
+      Core.version = "2022-08-03",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error = Core.parseJSONError "ChimeSdkVoice",
+      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
+
+-- | Prism for AccessDeniedException' errors.
+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_AccessDeniedException =
+  Core._MatchServiceError
+    defaultService
+    "AccessDeniedException"
+    Prelude.. Core.hasStatus 403
+
+-- | Prism for BadRequestException' errors.
+_BadRequestException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_BadRequestException =
+  Core._MatchServiceError
+    defaultService
+    "BadRequestException"
+    Prelude.. Core.hasStatus 400
+
+-- | Prism for ConflictException' errors.
+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConflictException =
+  Core._MatchServiceError
+    defaultService
+    "ConflictException"
+    Prelude.. Core.hasStatus 409
+
+-- | Prism for ForbiddenException' errors.
+_ForbiddenException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ForbiddenException =
+  Core._MatchServiceError
+    defaultService
+    "ForbiddenException"
+    Prelude.. Core.hasStatus 403
+
+-- | Prism for NotFoundException' errors.
+_NotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_NotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "NotFoundException"
+    Prelude.. Core.hasStatus 404
+
+-- | Prism for ResourceLimitExceededException' errors.
+_ResourceLimitExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceLimitExceededException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceLimitExceededException"
+    Prelude.. Core.hasStatus 400
+
+-- | Prism for ServiceFailureException' errors.
+_ServiceFailureException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ServiceFailureException =
+  Core._MatchServiceError
+    defaultService
+    "ServiceFailureException"
+    Prelude.. Core.hasStatus 500
+
+-- | Prism for ServiceUnavailableException' errors.
+_ServiceUnavailableException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ServiceUnavailableException =
+  Core._MatchServiceError
+    defaultService
+    "ServiceUnavailableException"
+    Prelude.. Core.hasStatus 503
+
+-- | Prism for ThrottledClientException' errors.
+_ThrottledClientException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ThrottledClientException =
+  Core._MatchServiceError
+    defaultService
+    "ThrottledClientException"
+    Prelude.. Core.hasStatus 429
+
+-- | Prism for UnauthorizedClientException' errors.
+_UnauthorizedClientException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_UnauthorizedClientException =
+  Core._MatchServiceError
+    defaultService
+    "UnauthorizedClientException"
+    Prelude.. Core.hasStatus 401
diff --git a/gen/Amazonka/ChimeSdkVoice/Types/Address.hs b/gen/Amazonka/ChimeSdkVoice/Types/Address.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/Address.hs
@@ -0,0 +1,168 @@
+{-# 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.ChimeSdkVoice.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.ChimeSdkVoice.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
+
+-- | /See:/ 'newAddress' smart constructor.
+data Address = Address'
+  { city :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    country :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    postDirectional :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    postalCode :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    postalCodePlus4 :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    preDirectional :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    state :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    streetName :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    streetNumber :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    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' - Undocumented member.
+--
+-- 'country', 'address_country' - Undocumented member.
+--
+-- 'postDirectional', 'address_postDirectional' - Undocumented member.
+--
+-- 'postalCode', 'address_postalCode' - Undocumented member.
+--
+-- 'postalCodePlus4', 'address_postalCodePlus4' - Undocumented member.
+--
+-- 'preDirectional', 'address_preDirectional' - Undocumented member.
+--
+-- 'state', 'address_state' - Undocumented member.
+--
+-- 'streetName', 'address_streetName' - Undocumented member.
+--
+-- 'streetNumber', 'address_streetNumber' - Undocumented member.
+--
+-- 'streetSuffix', 'address_streetSuffix' - Undocumented member.
+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
+    }
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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/ChimeSdkVoice/Types/AlexaSkillStatus.hs b/gen/Amazonka/ChimeSdkVoice/Types/AlexaSkillStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/AlexaSkillStatus.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.ChimeSdkVoice.Types.AlexaSkillStatus
+-- 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.ChimeSdkVoice.Types.AlexaSkillStatus
+  ( AlexaSkillStatus
+      ( ..,
+        AlexaSkillStatus_ACTIVE,
+        AlexaSkillStatus_INACTIVE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AlexaSkillStatus = AlexaSkillStatus'
+  { fromAlexaSkillStatus ::
+      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 AlexaSkillStatus_ACTIVE :: AlexaSkillStatus
+pattern AlexaSkillStatus_ACTIVE = AlexaSkillStatus' "ACTIVE"
+
+pattern AlexaSkillStatus_INACTIVE :: AlexaSkillStatus
+pattern AlexaSkillStatus_INACTIVE = AlexaSkillStatus' "INACTIVE"
+
+{-# COMPLETE
+  AlexaSkillStatus_ACTIVE,
+  AlexaSkillStatus_INACTIVE,
+  AlexaSkillStatus'
+  #-}
diff --git a/gen/Amazonka/ChimeSdkVoice/Types/CallingNameStatus.hs b/gen/Amazonka/ChimeSdkVoice/Types/CallingNameStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/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.ChimeSdkVoice.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.ChimeSdkVoice.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/ChimeSdkVoice/Types/CandidateAddress.hs b/gen/Amazonka/ChimeSdkVoice/Types/CandidateAddress.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/CandidateAddress.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.ChimeSdkVoice.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.ChimeSdkVoice.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
+
+-- | /See:/ 'newCandidateAddress' smart constructor.
+data CandidateAddress = CandidateAddress'
+  { city :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    country :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    postalCode :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    postalCodePlus4 :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    state :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    streetInfo :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    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' - Undocumented member.
+--
+-- 'country', 'candidateAddress_country' - Undocumented member.
+--
+-- 'postalCode', 'candidateAddress_postalCode' - Undocumented member.
+--
+-- 'postalCodePlus4', 'candidateAddress_postalCodePlus4' - Undocumented member.
+--
+-- 'state', 'candidateAddress_state' - Undocumented member.
+--
+-- 'streetInfo', 'candidateAddress_streetInfo' - Undocumented member.
+--
+-- 'streetNumber', 'candidateAddress_streetNumber' - Undocumented member.
+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
+    }
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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/ChimeSdkVoice/Types/Capability.hs b/gen/Amazonka/ChimeSdkVoice/Types/Capability.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/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.ChimeSdkVoice.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.ChimeSdkVoice.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/ChimeSdkVoice/Types/Credential.hs b/gen/Amazonka/ChimeSdkVoice/Types/Credential.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/Credential.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.ChimeSdkVoice.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.ChimeSdkVoice.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
+
+-- | /See:/ 'newCredential' smart constructor.
+data Credential = Credential'
+  { password :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    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' - Undocumented member.
+--
+-- 'username', 'credential_username' - Undocumented member.
+newCredential ::
+  Credential
+newCredential =
+  Credential'
+    { password = Prelude.Nothing,
+      username = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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/ChimeSdkVoice/Types/DNISEmergencyCallingConfiguration.hs b/gen/Amazonka/ChimeSdkVoice/Types/DNISEmergencyCallingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/DNISEmergencyCallingConfiguration.hs
@@ -0,0 +1,129 @@
+{-# 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.ChimeSdkVoice.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.ChimeSdkVoice.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
+
+-- | /See:/ 'newDNISEmergencyCallingConfiguration' smart constructor.
+data DNISEmergencyCallingConfiguration = DNISEmergencyCallingConfiguration'
+  { testPhoneNumber :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    emergencyPhoneNumber :: Data.Sensitive Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'emergencyPhoneNumber', 'dNISEmergencyCallingConfiguration_emergencyPhoneNumber' - Undocumented member.
+--
+-- 'callingCountry', 'dNISEmergencyCallingConfiguration_callingCountry' - Undocumented member.
+newDNISEmergencyCallingConfiguration ::
+  -- | 'emergencyPhoneNumber'
+  Prelude.Text ->
+  -- | 'callingCountry'
+  Prelude.Text ->
+  DNISEmergencyCallingConfiguration
+newDNISEmergencyCallingConfiguration
+  pEmergencyPhoneNumber_
+  pCallingCountry_ =
+    DNISEmergencyCallingConfiguration'
+      { testPhoneNumber =
+          Prelude.Nothing,
+        emergencyPhoneNumber =
+          Data._Sensitive
+            Lens.# pEmergencyPhoneNumber_,
+        callingCountry = pCallingCountry_
+      }
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+dNISEmergencyCallingConfiguration_emergencyPhoneNumber :: Lens.Lens' DNISEmergencyCallingConfiguration Prelude.Text
+dNISEmergencyCallingConfiguration_emergencyPhoneNumber = Lens.lens (\DNISEmergencyCallingConfiguration' {emergencyPhoneNumber} -> emergencyPhoneNumber) (\s@DNISEmergencyCallingConfiguration' {} a -> s {emergencyPhoneNumber = a} :: DNISEmergencyCallingConfiguration) Prelude.. Data._Sensitive
+
+-- | Undocumented member.
+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/ChimeSdkVoice/Types/EmergencyCallingConfiguration.hs b/gen/Amazonka/ChimeSdkVoice/Types/EmergencyCallingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/EmergencyCallingConfiguration.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.ChimeSdkVoice.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.ChimeSdkVoice.Types.EmergencyCallingConfiguration where
+
+import Amazonka.ChimeSdkVoice.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
+
+-- | /See:/ 'newEmergencyCallingConfiguration' smart constructor.
+data EmergencyCallingConfiguration = EmergencyCallingConfiguration'
+  { 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' - Undocumented member.
+newEmergencyCallingConfiguration ::
+  EmergencyCallingConfiguration
+newEmergencyCallingConfiguration =
+  EmergencyCallingConfiguration'
+    { dnis =
+        Prelude.Nothing
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/Types/ErrorCode.hs b/gen/Amazonka/ChimeSdkVoice/Types/ErrorCode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/ErrorCode.hs
@@ -0,0 +1,141 @@
+{-# 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.ChimeSdkVoice.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.ChimeSdkVoice.Types.ErrorCode
+  ( ErrorCode
+      ( ..,
+        ErrorCode_AccessDenied,
+        ErrorCode_BadRequest,
+        ErrorCode_Conflict,
+        ErrorCode_Forbidden,
+        ErrorCode_Gone,
+        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_Gone :: ErrorCode
+pattern ErrorCode_Gone = ErrorCode' "Gone"
+
+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_Gone,
+  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/ChimeSdkVoice/Types/GeoMatchLevel.hs b/gen/Amazonka/ChimeSdkVoice/Types/GeoMatchLevel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/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.ChimeSdkVoice.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.ChimeSdkVoice.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/ChimeSdkVoice/Types/GeoMatchParams.hs b/gen/Amazonka/ChimeSdkVoice/Types/GeoMatchParams.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/GeoMatchParams.hs
@@ -0,0 +1,93 @@
+{-# 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.ChimeSdkVoice.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.ChimeSdkVoice.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
+
+-- | /See:/ 'newGeoMatchParams' smart constructor.
+data GeoMatchParams = GeoMatchParams'
+  { country :: Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'areaCode', 'geoMatchParams_areaCode' - Undocumented member.
+newGeoMatchParams ::
+  -- | 'country'
+  Prelude.Text ->
+  -- | 'areaCode'
+  Prelude.Text ->
+  GeoMatchParams
+newGeoMatchParams pCountry_ pAreaCode_ =
+  GeoMatchParams'
+    { country = pCountry_,
+      areaCode = pAreaCode_
+    }
+
+-- | Undocumented member.
+geoMatchParams_country :: Lens.Lens' GeoMatchParams Prelude.Text
+geoMatchParams_country = Lens.lens (\GeoMatchParams' {country} -> country) (\s@GeoMatchParams' {} a -> s {country = a} :: GeoMatchParams)
+
+-- | Undocumented member.
+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/ChimeSdkVoice/Types/LoggingConfiguration.hs b/gen/Amazonka/ChimeSdkVoice/Types/LoggingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/LoggingConfiguration.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.ChimeSdkVoice.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.ChimeSdkVoice.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
+
+-- | /See:/ 'newLoggingConfiguration' smart constructor.
+data LoggingConfiguration = LoggingConfiguration'
+  { 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:
+--
+-- 'enableSIPLogs', 'loggingConfiguration_enableSIPLogs' - Undocumented member.
+newLoggingConfiguration ::
+  LoggingConfiguration
+newLoggingConfiguration =
+  LoggingConfiguration'
+    { enableSIPLogs =
+        Prelude.Nothing
+    }
+
+-- | Undocumented member.
+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..:? "EnableSIPLogs")
+      )
+
+instance Prelude.Hashable LoggingConfiguration where
+  hashWithSalt _salt LoggingConfiguration' {..} =
+    _salt `Prelude.hashWithSalt` enableSIPLogs
+
+instance Prelude.NFData LoggingConfiguration where
+  rnf LoggingConfiguration' {..} =
+    Prelude.rnf enableSIPLogs
+
+instance Data.ToJSON LoggingConfiguration where
+  toJSON LoggingConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("EnableSIPLogs" Data..=)
+              Prelude.<$> enableSIPLogs
+          ]
+      )
diff --git a/gen/Amazonka/ChimeSdkVoice/Types/NotificationTarget.hs b/gen/Amazonka/ChimeSdkVoice/Types/NotificationTarget.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/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.ChimeSdkVoice.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.ChimeSdkVoice.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/ChimeSdkVoice/Types/NumberSelectionBehavior.hs b/gen/Amazonka/ChimeSdkVoice/Types/NumberSelectionBehavior.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/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.ChimeSdkVoice.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.ChimeSdkVoice.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/ChimeSdkVoice/Types/OrderedPhoneNumber.hs b/gen/Amazonka/ChimeSdkVoice/Types/OrderedPhoneNumber.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/OrderedPhoneNumber.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.ChimeSdkVoice.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.ChimeSdkVoice.Types.OrderedPhoneNumber where
+
+import Amazonka.ChimeSdkVoice.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
+
+-- | /See:/ 'newOrderedPhoneNumber' smart constructor.
+data OrderedPhoneNumber = OrderedPhoneNumber'
+  { e164PhoneNumber :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    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' - Undocumented member.
+--
+-- 'status', 'orderedPhoneNumber_status' - Undocumented member.
+newOrderedPhoneNumber ::
+  OrderedPhoneNumber
+newOrderedPhoneNumber =
+  OrderedPhoneNumber'
+    { e164PhoneNumber =
+        Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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/ChimeSdkVoice/Types/OrderedPhoneNumberStatus.hs b/gen/Amazonka/ChimeSdkVoice/Types/OrderedPhoneNumberStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/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.ChimeSdkVoice.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.ChimeSdkVoice.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/ChimeSdkVoice/Types/Origination.hs b/gen/Amazonka/ChimeSdkVoice/Types/Origination.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/Origination.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.ChimeSdkVoice.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.ChimeSdkVoice.Types.Origination where
+
+import Amazonka.ChimeSdkVoice.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
+
+-- | /See:/ 'newOrigination' smart constructor.
+data Origination = Origination'
+  { disabled :: Prelude.Maybe Prelude.Bool,
+    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' - Undocumented member.
+--
+-- 'routes', 'origination_routes' - Undocumented member.
+newOrigination ::
+  Origination
+newOrigination =
+  Origination'
+    { disabled = Prelude.Nothing,
+      routes = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+origination_disabled :: Lens.Lens' Origination (Prelude.Maybe Prelude.Bool)
+origination_disabled = Lens.lens (\Origination' {disabled} -> disabled) (\s@Origination' {} a -> s {disabled = a} :: Origination)
+
+-- | Undocumented member.
+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/ChimeSdkVoice/Types/OriginationRoute.hs b/gen/Amazonka/ChimeSdkVoice/Types/OriginationRoute.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/OriginationRoute.hs
@@ -0,0 +1,126 @@
+{-# 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.ChimeSdkVoice.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.ChimeSdkVoice.Types.OriginationRoute where
+
+import Amazonka.ChimeSdkVoice.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
+
+-- | /See:/ 'newOriginationRoute' smart constructor.
+data OriginationRoute = OriginationRoute'
+  { host :: Prelude.Maybe Prelude.Text,
+    port :: Prelude.Maybe Prelude.Natural,
+    priority :: Prelude.Maybe Prelude.Natural,
+    protocol :: Prelude.Maybe OriginationRouteProtocol,
+    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' - Undocumented member.
+--
+-- 'port', 'originationRoute_port' - Undocumented member.
+--
+-- 'priority', 'originationRoute_priority' - Undocumented member.
+--
+-- 'protocol', 'originationRoute_protocol' - Undocumented member.
+--
+-- 'weight', 'originationRoute_weight' - Undocumented member.
+newOriginationRoute ::
+  OriginationRoute
+newOriginationRoute =
+  OriginationRoute'
+    { host = Prelude.Nothing,
+      port = Prelude.Nothing,
+      priority = Prelude.Nothing,
+      protocol = Prelude.Nothing,
+      weight = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+originationRoute_host :: Lens.Lens' OriginationRoute (Prelude.Maybe Prelude.Text)
+originationRoute_host = Lens.lens (\OriginationRoute' {host} -> host) (\s@OriginationRoute' {} a -> s {host = a} :: OriginationRoute)
+
+-- | Undocumented member.
+originationRoute_port :: Lens.Lens' OriginationRoute (Prelude.Maybe Prelude.Natural)
+originationRoute_port = Lens.lens (\OriginationRoute' {port} -> port) (\s@OriginationRoute' {} a -> s {port = a} :: OriginationRoute)
+
+-- | Undocumented member.
+originationRoute_priority :: Lens.Lens' OriginationRoute (Prelude.Maybe Prelude.Natural)
+originationRoute_priority = Lens.lens (\OriginationRoute' {priority} -> priority) (\s@OriginationRoute' {} a -> s {priority = a} :: OriginationRoute)
+
+-- | Undocumented member.
+originationRoute_protocol :: Lens.Lens' OriginationRoute (Prelude.Maybe OriginationRouteProtocol)
+originationRoute_protocol = Lens.lens (\OriginationRoute' {protocol} -> protocol) (\s@OriginationRoute' {} a -> s {protocol = a} :: OriginationRoute)
+
+-- | Undocumented member.
+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/ChimeSdkVoice/Types/OriginationRouteProtocol.hs b/gen/Amazonka/ChimeSdkVoice/Types/OriginationRouteProtocol.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/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.ChimeSdkVoice.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.ChimeSdkVoice.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/ChimeSdkVoice/Types/Participant.hs b/gen/Amazonka/ChimeSdkVoice/Types/Participant.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/Participant.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.ChimeSdkVoice.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.ChimeSdkVoice.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
+
+-- | /See:/ 'newParticipant' smart constructor.
+data Participant = Participant'
+  { phoneNumber :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    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' - Undocumented member.
+--
+-- 'proxyPhoneNumber', 'participant_proxyPhoneNumber' - Undocumented member.
+newParticipant ::
+  Participant
+newParticipant =
+  Participant'
+    { phoneNumber = Prelude.Nothing,
+      proxyPhoneNumber = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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/ChimeSdkVoice/Types/PhoneNumber.hs b/gen/Amazonka/ChimeSdkVoice/Types/PhoneNumber.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/PhoneNumber.hs
@@ -0,0 +1,218 @@
+{-# 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.ChimeSdkVoice.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.ChimeSdkVoice.Types.PhoneNumber where
+
+import Amazonka.ChimeSdkVoice.Types.CallingNameStatus
+import Amazonka.ChimeSdkVoice.Types.PhoneNumberAssociation
+import Amazonka.ChimeSdkVoice.Types.PhoneNumberCapabilities
+import Amazonka.ChimeSdkVoice.Types.PhoneNumberProductType
+import Amazonka.ChimeSdkVoice.Types.PhoneNumberStatus
+import Amazonka.ChimeSdkVoice.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
+
+-- | /See:/ 'newPhoneNumber' smart constructor.
+data PhoneNumber = PhoneNumber'
+  { associations :: Prelude.Maybe [PhoneNumberAssociation],
+    callingName :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    callingNameStatus :: Prelude.Maybe CallingNameStatus,
+    capabilities :: Prelude.Maybe PhoneNumberCapabilities,
+    country :: Prelude.Maybe Prelude.Text,
+    createdTimestamp :: Prelude.Maybe Data.ISO8601,
+    deletionTimestamp :: Prelude.Maybe Data.ISO8601,
+    e164PhoneNumber :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    orderId :: Prelude.Maybe Prelude.Text,
+    phoneNumberId :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    productType :: Prelude.Maybe PhoneNumberProductType,
+    status :: Prelude.Maybe PhoneNumberStatus,
+    type' :: Prelude.Maybe PhoneNumberType,
+    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' - Undocumented member.
+--
+-- 'callingName', 'phoneNumber_callingName' - Undocumented member.
+--
+-- 'callingNameStatus', 'phoneNumber_callingNameStatus' - Undocumented member.
+--
+-- 'capabilities', 'phoneNumber_capabilities' - Undocumented member.
+--
+-- 'country', 'phoneNumber_country' - Undocumented member.
+--
+-- 'createdTimestamp', 'phoneNumber_createdTimestamp' - Undocumented member.
+--
+-- 'deletionTimestamp', 'phoneNumber_deletionTimestamp' - Undocumented member.
+--
+-- 'e164PhoneNumber', 'phoneNumber_e164PhoneNumber' - Undocumented member.
+--
+-- 'orderId', 'phoneNumber_orderId' - Undocumented member.
+--
+-- 'phoneNumberId', 'phoneNumber_phoneNumberId' - Undocumented member.
+--
+-- 'productType', 'phoneNumber_productType' - Undocumented member.
+--
+-- 'status', 'phoneNumber_status' - Undocumented member.
+--
+-- 'type'', 'phoneNumber_type' - Undocumented member.
+--
+-- 'updatedTimestamp', 'phoneNumber_updatedTimestamp' - Undocumented member.
+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,
+      orderId = Prelude.Nothing,
+      phoneNumberId = Prelude.Nothing,
+      productType = Prelude.Nothing,
+      status = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      updatedTimestamp = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+phoneNumber_callingNameStatus :: Lens.Lens' PhoneNumber (Prelude.Maybe CallingNameStatus)
+phoneNumber_callingNameStatus = Lens.lens (\PhoneNumber' {callingNameStatus} -> callingNameStatus) (\s@PhoneNumber' {} a -> s {callingNameStatus = a} :: PhoneNumber)
+
+-- | Undocumented member.
+phoneNumber_capabilities :: Lens.Lens' PhoneNumber (Prelude.Maybe PhoneNumberCapabilities)
+phoneNumber_capabilities = Lens.lens (\PhoneNumber' {capabilities} -> capabilities) (\s@PhoneNumber' {} a -> s {capabilities = a} :: PhoneNumber)
+
+-- | Undocumented member.
+phoneNumber_country :: Lens.Lens' PhoneNumber (Prelude.Maybe Prelude.Text)
+phoneNumber_country = Lens.lens (\PhoneNumber' {country} -> country) (\s@PhoneNumber' {} a -> s {country = a} :: PhoneNumber)
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+phoneNumber_orderId :: Lens.Lens' PhoneNumber (Prelude.Maybe Prelude.Text)
+phoneNumber_orderId = Lens.lens (\PhoneNumber' {orderId} -> orderId) (\s@PhoneNumber' {} a -> s {orderId = a} :: PhoneNumber)
+
+-- | Undocumented member.
+phoneNumber_phoneNumberId :: Lens.Lens' PhoneNumber (Prelude.Maybe Prelude.Text)
+phoneNumber_phoneNumberId = Lens.lens (\PhoneNumber' {phoneNumberId} -> phoneNumberId) (\s@PhoneNumber' {} a -> s {phoneNumberId = a} :: PhoneNumber) Prelude.. Lens.mapping Data._Sensitive
+
+-- | Undocumented member.
+phoneNumber_productType :: Lens.Lens' PhoneNumber (Prelude.Maybe PhoneNumberProductType)
+phoneNumber_productType = Lens.lens (\PhoneNumber' {productType} -> productType) (\s@PhoneNumber' {} a -> s {productType = a} :: PhoneNumber)
+
+-- | Undocumented member.
+phoneNumber_status :: Lens.Lens' PhoneNumber (Prelude.Maybe PhoneNumberStatus)
+phoneNumber_status = Lens.lens (\PhoneNumber' {status} -> status) (\s@PhoneNumber' {} a -> s {status = a} :: PhoneNumber)
+
+-- | Undocumented member.
+phoneNumber_type :: Lens.Lens' PhoneNumber (Prelude.Maybe PhoneNumberType)
+phoneNumber_type = Lens.lens (\PhoneNumber' {type'} -> type') (\s@PhoneNumber' {} a -> s {type' = a} :: PhoneNumber)
+
+-- | Undocumented member.
+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..:? "OrderId")
+            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` orderId
+      `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 orderId
+      `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/ChimeSdkVoice/Types/PhoneNumberAssociation.hs b/gen/Amazonka/ChimeSdkVoice/Types/PhoneNumberAssociation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/PhoneNumberAssociation.hs
@@ -0,0 +1,93 @@
+{-# 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.ChimeSdkVoice.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.ChimeSdkVoice.Types.PhoneNumberAssociation where
+
+import Amazonka.ChimeSdkVoice.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
+
+-- | /See:/ 'newPhoneNumberAssociation' smart constructor.
+data PhoneNumberAssociation = PhoneNumberAssociation'
+  { associatedTimestamp :: Prelude.Maybe Data.ISO8601,
+    name :: Prelude.Maybe PhoneNumberAssociationName,
+    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' - Undocumented member.
+--
+-- 'name', 'phoneNumberAssociation_name' - Undocumented member.
+--
+-- 'value', 'phoneNumberAssociation_value' - Undocumented member.
+newPhoneNumberAssociation ::
+  PhoneNumberAssociation
+newPhoneNumberAssociation =
+  PhoneNumberAssociation'
+    { associatedTimestamp =
+        Prelude.Nothing,
+      name = Prelude.Nothing,
+      value = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+phoneNumberAssociation_name :: Lens.Lens' PhoneNumberAssociation (Prelude.Maybe PhoneNumberAssociationName)
+phoneNumberAssociation_name = Lens.lens (\PhoneNumberAssociation' {name} -> name) (\s@PhoneNumberAssociation' {} a -> s {name = a} :: PhoneNumberAssociation)
+
+-- | Undocumented member.
+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/ChimeSdkVoice/Types/PhoneNumberAssociationName.hs b/gen/Amazonka/ChimeSdkVoice/Types/PhoneNumberAssociationName.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/PhoneNumberAssociationName.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.ChimeSdkVoice.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.ChimeSdkVoice.Types.PhoneNumberAssociationName
+  ( PhoneNumberAssociationName
+      ( ..,
+        PhoneNumberAssociationName_SipRuleId,
+        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_SipRuleId :: PhoneNumberAssociationName
+pattern PhoneNumberAssociationName_SipRuleId = PhoneNumberAssociationName' "SipRuleId"
+
+pattern PhoneNumberAssociationName_VoiceConnectorGroupId :: PhoneNumberAssociationName
+pattern PhoneNumberAssociationName_VoiceConnectorGroupId = PhoneNumberAssociationName' "VoiceConnectorGroupId"
+
+pattern PhoneNumberAssociationName_VoiceConnectorId :: PhoneNumberAssociationName
+pattern PhoneNumberAssociationName_VoiceConnectorId = PhoneNumberAssociationName' "VoiceConnectorId"
+
+{-# COMPLETE
+  PhoneNumberAssociationName_SipRuleId,
+  PhoneNumberAssociationName_VoiceConnectorGroupId,
+  PhoneNumberAssociationName_VoiceConnectorId,
+  PhoneNumberAssociationName'
+  #-}
diff --git a/gen/Amazonka/ChimeSdkVoice/Types/PhoneNumberCapabilities.hs b/gen/Amazonka/ChimeSdkVoice/Types/PhoneNumberCapabilities.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/PhoneNumberCapabilities.hs
@@ -0,0 +1,125 @@
+{-# 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.ChimeSdkVoice.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.ChimeSdkVoice.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
+
+-- | /See:/ 'newPhoneNumberCapabilities' smart constructor.
+data PhoneNumberCapabilities = PhoneNumberCapabilities'
+  { inboundCall :: Prelude.Maybe Prelude.Bool,
+    inboundMMS :: Prelude.Maybe Prelude.Bool,
+    inboundSMS :: Prelude.Maybe Prelude.Bool,
+    outboundCall :: Prelude.Maybe Prelude.Bool,
+    outboundMMS :: Prelude.Maybe Prelude.Bool,
+    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' - Undocumented member.
+--
+-- 'inboundMMS', 'phoneNumberCapabilities_inboundMMS' - Undocumented member.
+--
+-- 'inboundSMS', 'phoneNumberCapabilities_inboundSMS' - Undocumented member.
+--
+-- 'outboundCall', 'phoneNumberCapabilities_outboundCall' - Undocumented member.
+--
+-- 'outboundMMS', 'phoneNumberCapabilities_outboundMMS' - Undocumented member.
+--
+-- 'outboundSMS', 'phoneNumberCapabilities_outboundSMS' - Undocumented member.
+newPhoneNumberCapabilities ::
+  PhoneNumberCapabilities
+newPhoneNumberCapabilities =
+  PhoneNumberCapabilities'
+    { inboundCall =
+        Prelude.Nothing,
+      inboundMMS = Prelude.Nothing,
+      inboundSMS = Prelude.Nothing,
+      outboundCall = Prelude.Nothing,
+      outboundMMS = Prelude.Nothing,
+      outboundSMS = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+phoneNumberCapabilities_inboundCall :: Lens.Lens' PhoneNumberCapabilities (Prelude.Maybe Prelude.Bool)
+phoneNumberCapabilities_inboundCall = Lens.lens (\PhoneNumberCapabilities' {inboundCall} -> inboundCall) (\s@PhoneNumberCapabilities' {} a -> s {inboundCall = a} :: PhoneNumberCapabilities)
+
+-- | Undocumented member.
+phoneNumberCapabilities_inboundMMS :: Lens.Lens' PhoneNumberCapabilities (Prelude.Maybe Prelude.Bool)
+phoneNumberCapabilities_inboundMMS = Lens.lens (\PhoneNumberCapabilities' {inboundMMS} -> inboundMMS) (\s@PhoneNumberCapabilities' {} a -> s {inboundMMS = a} :: PhoneNumberCapabilities)
+
+-- | Undocumented member.
+phoneNumberCapabilities_inboundSMS :: Lens.Lens' PhoneNumberCapabilities (Prelude.Maybe Prelude.Bool)
+phoneNumberCapabilities_inboundSMS = Lens.lens (\PhoneNumberCapabilities' {inboundSMS} -> inboundSMS) (\s@PhoneNumberCapabilities' {} a -> s {inboundSMS = a} :: PhoneNumberCapabilities)
+
+-- | Undocumented member.
+phoneNumberCapabilities_outboundCall :: Lens.Lens' PhoneNumberCapabilities (Prelude.Maybe Prelude.Bool)
+phoneNumberCapabilities_outboundCall = Lens.lens (\PhoneNumberCapabilities' {outboundCall} -> outboundCall) (\s@PhoneNumberCapabilities' {} a -> s {outboundCall = a} :: PhoneNumberCapabilities)
+
+-- | Undocumented member.
+phoneNumberCapabilities_outboundMMS :: Lens.Lens' PhoneNumberCapabilities (Prelude.Maybe Prelude.Bool)
+phoneNumberCapabilities_outboundMMS = Lens.lens (\PhoneNumberCapabilities' {outboundMMS} -> outboundMMS) (\s@PhoneNumberCapabilities' {} a -> s {outboundMMS = a} :: PhoneNumberCapabilities)
+
+-- | Undocumented member.
+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/ChimeSdkVoice/Types/PhoneNumberCountry.hs b/gen/Amazonka/ChimeSdkVoice/Types/PhoneNumberCountry.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/PhoneNumberCountry.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.ChimeSdkVoice.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.ChimeSdkVoice.Types.PhoneNumberCountry where
+
+import Amazonka.ChimeSdkVoice.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
+
+-- | /See:/ 'newPhoneNumberCountry' smart constructor.
+data PhoneNumberCountry = PhoneNumberCountry'
+  { countryCode :: Prelude.Maybe Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'supportedPhoneNumberTypes', 'phoneNumberCountry_supportedPhoneNumberTypes' - Undocumented member.
+newPhoneNumberCountry ::
+  PhoneNumberCountry
+newPhoneNumberCountry =
+  PhoneNumberCountry'
+    { countryCode = Prelude.Nothing,
+      supportedPhoneNumberTypes = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+phoneNumberCountry_countryCode :: Lens.Lens' PhoneNumberCountry (Prelude.Maybe Prelude.Text)
+phoneNumberCountry_countryCode = Lens.lens (\PhoneNumberCountry' {countryCode} -> countryCode) (\s@PhoneNumberCountry' {} a -> s {countryCode = a} :: PhoneNumberCountry)
+
+-- | Undocumented member.
+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/ChimeSdkVoice/Types/PhoneNumberError.hs b/gen/Amazonka/ChimeSdkVoice/Types/PhoneNumberError.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/PhoneNumberError.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.ChimeSdkVoice.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.ChimeSdkVoice.Types.PhoneNumberError where
+
+import Amazonka.ChimeSdkVoice.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
+
+-- | /See:/ 'newPhoneNumberError' smart constructor.
+data PhoneNumberError = PhoneNumberError'
+  { errorCode :: Prelude.Maybe ErrorCode,
+    errorMessage :: Prelude.Maybe Prelude.Text,
+    phoneNumberId :: Prelude.Maybe (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, 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' - Undocumented member.
+--
+-- 'errorMessage', 'phoneNumberError_errorMessage' - Undocumented member.
+--
+-- 'phoneNumberId', 'phoneNumberError_phoneNumberId' - Undocumented member.
+newPhoneNumberError ::
+  PhoneNumberError
+newPhoneNumberError =
+  PhoneNumberError'
+    { errorCode = Prelude.Nothing,
+      errorMessage = Prelude.Nothing,
+      phoneNumberId = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+phoneNumberError_errorCode :: Lens.Lens' PhoneNumberError (Prelude.Maybe ErrorCode)
+phoneNumberError_errorCode = Lens.lens (\PhoneNumberError' {errorCode} -> errorCode) (\s@PhoneNumberError' {} a -> s {errorCode = a} :: PhoneNumberError)
+
+-- | Undocumented member.
+phoneNumberError_errorMessage :: Lens.Lens' PhoneNumberError (Prelude.Maybe Prelude.Text)
+phoneNumberError_errorMessage = Lens.lens (\PhoneNumberError' {errorMessage} -> errorMessage) (\s@PhoneNumberError' {} a -> s {errorMessage = a} :: PhoneNumberError)
+
+-- | Undocumented member.
+phoneNumberError_phoneNumberId :: Lens.Lens' PhoneNumberError (Prelude.Maybe Prelude.Text)
+phoneNumberError_phoneNumberId = Lens.lens (\PhoneNumberError' {phoneNumberId} -> phoneNumberId) (\s@PhoneNumberError' {} a -> s {phoneNumberId = a} :: PhoneNumberError) Prelude.. Lens.mapping Data._Sensitive
+
+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/ChimeSdkVoice/Types/PhoneNumberOrder.hs b/gen/Amazonka/ChimeSdkVoice/Types/PhoneNumberOrder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/PhoneNumberOrder.hs
@@ -0,0 +1,143 @@
+{-# 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.ChimeSdkVoice.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.ChimeSdkVoice.Types.PhoneNumberOrder where
+
+import Amazonka.ChimeSdkVoice.Types.OrderedPhoneNumber
+import Amazonka.ChimeSdkVoice.Types.PhoneNumberOrderStatus
+import Amazonka.ChimeSdkVoice.Types.PhoneNumberOrderType
+import Amazonka.ChimeSdkVoice.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
+
+-- | /See:/ 'newPhoneNumberOrder' smart constructor.
+data PhoneNumberOrder = PhoneNumberOrder'
+  { createdTimestamp :: Prelude.Maybe Data.ISO8601,
+    orderType :: Prelude.Maybe PhoneNumberOrderType,
+    orderedPhoneNumbers :: Prelude.Maybe [OrderedPhoneNumber],
+    phoneNumberOrderId :: Prelude.Maybe Prelude.Text,
+    productType :: Prelude.Maybe PhoneNumberProductType,
+    status :: Prelude.Maybe PhoneNumberOrderStatus,
+    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' - Undocumented member.
+--
+-- 'orderType', 'phoneNumberOrder_orderType' - Undocumented member.
+--
+-- 'orderedPhoneNumbers', 'phoneNumberOrder_orderedPhoneNumbers' - Undocumented member.
+--
+-- 'phoneNumberOrderId', 'phoneNumberOrder_phoneNumberOrderId' - Undocumented member.
+--
+-- 'productType', 'phoneNumberOrder_productType' - Undocumented member.
+--
+-- 'status', 'phoneNumberOrder_status' - Undocumented member.
+--
+-- 'updatedTimestamp', 'phoneNumberOrder_updatedTimestamp' - Undocumented member.
+newPhoneNumberOrder ::
+  PhoneNumberOrder
+newPhoneNumberOrder =
+  PhoneNumberOrder'
+    { createdTimestamp =
+        Prelude.Nothing,
+      orderType = Prelude.Nothing,
+      orderedPhoneNumbers = Prelude.Nothing,
+      phoneNumberOrderId = Prelude.Nothing,
+      productType = Prelude.Nothing,
+      status = Prelude.Nothing,
+      updatedTimestamp = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+phoneNumberOrder_orderType :: Lens.Lens' PhoneNumberOrder (Prelude.Maybe PhoneNumberOrderType)
+phoneNumberOrder_orderType = Lens.lens (\PhoneNumberOrder' {orderType} -> orderType) (\s@PhoneNumberOrder' {} a -> s {orderType = a} :: PhoneNumberOrder)
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+phoneNumberOrder_phoneNumberOrderId :: Lens.Lens' PhoneNumberOrder (Prelude.Maybe Prelude.Text)
+phoneNumberOrder_phoneNumberOrderId = Lens.lens (\PhoneNumberOrder' {phoneNumberOrderId} -> phoneNumberOrderId) (\s@PhoneNumberOrder' {} a -> s {phoneNumberOrderId = a} :: PhoneNumberOrder)
+
+-- | Undocumented member.
+phoneNumberOrder_productType :: Lens.Lens' PhoneNumberOrder (Prelude.Maybe PhoneNumberProductType)
+phoneNumberOrder_productType = Lens.lens (\PhoneNumberOrder' {productType} -> productType) (\s@PhoneNumberOrder' {} a -> s {productType = a} :: PhoneNumberOrder)
+
+-- | Undocumented member.
+phoneNumberOrder_status :: Lens.Lens' PhoneNumberOrder (Prelude.Maybe PhoneNumberOrderStatus)
+phoneNumberOrder_status = Lens.lens (\PhoneNumberOrder' {status} -> status) (\s@PhoneNumberOrder' {} a -> s {status = a} :: PhoneNumberOrder)
+
+-- | Undocumented member.
+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..:? "OrderType")
+            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` orderType
+      `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 orderType
+      `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/ChimeSdkVoice/Types/PhoneNumberOrderStatus.hs b/gen/Amazonka/ChimeSdkVoice/Types/PhoneNumberOrderStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/PhoneNumberOrderStatus.hs
@@ -0,0 +1,116 @@
+{-# 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.ChimeSdkVoice.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.ChimeSdkVoice.Types.PhoneNumberOrderStatus
+  ( PhoneNumberOrderStatus
+      ( ..,
+        PhoneNumberOrderStatus_CancelRequested,
+        PhoneNumberOrderStatus_Cancelled,
+        PhoneNumberOrderStatus_ChangeRequested,
+        PhoneNumberOrderStatus_Exception,
+        PhoneNumberOrderStatus_FOC,
+        PhoneNumberOrderStatus_Failed,
+        PhoneNumberOrderStatus_Partial,
+        PhoneNumberOrderStatus_PendingDocuments,
+        PhoneNumberOrderStatus_Processing,
+        PhoneNumberOrderStatus_Submitted,
+        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_CancelRequested :: PhoneNumberOrderStatus
+pattern PhoneNumberOrderStatus_CancelRequested = PhoneNumberOrderStatus' "CancelRequested"
+
+pattern PhoneNumberOrderStatus_Cancelled :: PhoneNumberOrderStatus
+pattern PhoneNumberOrderStatus_Cancelled = PhoneNumberOrderStatus' "Cancelled"
+
+pattern PhoneNumberOrderStatus_ChangeRequested :: PhoneNumberOrderStatus
+pattern PhoneNumberOrderStatus_ChangeRequested = PhoneNumberOrderStatus' "ChangeRequested"
+
+pattern PhoneNumberOrderStatus_Exception :: PhoneNumberOrderStatus
+pattern PhoneNumberOrderStatus_Exception = PhoneNumberOrderStatus' "Exception"
+
+pattern PhoneNumberOrderStatus_FOC :: PhoneNumberOrderStatus
+pattern PhoneNumberOrderStatus_FOC = PhoneNumberOrderStatus' "FOC"
+
+pattern PhoneNumberOrderStatus_Failed :: PhoneNumberOrderStatus
+pattern PhoneNumberOrderStatus_Failed = PhoneNumberOrderStatus' "Failed"
+
+pattern PhoneNumberOrderStatus_Partial :: PhoneNumberOrderStatus
+pattern PhoneNumberOrderStatus_Partial = PhoneNumberOrderStatus' "Partial"
+
+pattern PhoneNumberOrderStatus_PendingDocuments :: PhoneNumberOrderStatus
+pattern PhoneNumberOrderStatus_PendingDocuments = PhoneNumberOrderStatus' "PendingDocuments"
+
+pattern PhoneNumberOrderStatus_Processing :: PhoneNumberOrderStatus
+pattern PhoneNumberOrderStatus_Processing = PhoneNumberOrderStatus' "Processing"
+
+pattern PhoneNumberOrderStatus_Submitted :: PhoneNumberOrderStatus
+pattern PhoneNumberOrderStatus_Submitted = PhoneNumberOrderStatus' "Submitted"
+
+pattern PhoneNumberOrderStatus_Successful :: PhoneNumberOrderStatus
+pattern PhoneNumberOrderStatus_Successful = PhoneNumberOrderStatus' "Successful"
+
+{-# COMPLETE
+  PhoneNumberOrderStatus_CancelRequested,
+  PhoneNumberOrderStatus_Cancelled,
+  PhoneNumberOrderStatus_ChangeRequested,
+  PhoneNumberOrderStatus_Exception,
+  PhoneNumberOrderStatus_FOC,
+  PhoneNumberOrderStatus_Failed,
+  PhoneNumberOrderStatus_Partial,
+  PhoneNumberOrderStatus_PendingDocuments,
+  PhoneNumberOrderStatus_Processing,
+  PhoneNumberOrderStatus_Submitted,
+  PhoneNumberOrderStatus_Successful,
+  PhoneNumberOrderStatus'
+  #-}
diff --git a/gen/Amazonka/ChimeSdkVoice/Types/PhoneNumberOrderType.hs b/gen/Amazonka/ChimeSdkVoice/Types/PhoneNumberOrderType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/PhoneNumberOrderType.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.ChimeSdkVoice.Types.PhoneNumberOrderType
+-- 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.ChimeSdkVoice.Types.PhoneNumberOrderType
+  ( PhoneNumberOrderType
+      ( ..,
+        PhoneNumberOrderType_New,
+        PhoneNumberOrderType_Porting
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PhoneNumberOrderType = PhoneNumberOrderType'
+  { fromPhoneNumberOrderType ::
+      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 PhoneNumberOrderType_New :: PhoneNumberOrderType
+pattern PhoneNumberOrderType_New = PhoneNumberOrderType' "New"
+
+pattern PhoneNumberOrderType_Porting :: PhoneNumberOrderType
+pattern PhoneNumberOrderType_Porting = PhoneNumberOrderType' "Porting"
+
+{-# COMPLETE
+  PhoneNumberOrderType_New,
+  PhoneNumberOrderType_Porting,
+  PhoneNumberOrderType'
+  #-}
diff --git a/gen/Amazonka/ChimeSdkVoice/Types/PhoneNumberProductType.hs b/gen/Amazonka/ChimeSdkVoice/Types/PhoneNumberProductType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/PhoneNumberProductType.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.ChimeSdkVoice.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.ChimeSdkVoice.Types.PhoneNumberProductType
+  ( PhoneNumberProductType
+      ( ..,
+        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_SipMediaApplicationDialIn :: PhoneNumberProductType
+pattern PhoneNumberProductType_SipMediaApplicationDialIn = PhoneNumberProductType' "SipMediaApplicationDialIn"
+
+pattern PhoneNumberProductType_VoiceConnector :: PhoneNumberProductType
+pattern PhoneNumberProductType_VoiceConnector = PhoneNumberProductType' "VoiceConnector"
+
+{-# COMPLETE
+  PhoneNumberProductType_SipMediaApplicationDialIn,
+  PhoneNumberProductType_VoiceConnector,
+  PhoneNumberProductType'
+  #-}
diff --git a/gen/Amazonka/ChimeSdkVoice/Types/PhoneNumberStatus.hs b/gen/Amazonka/ChimeSdkVoice/Types/PhoneNumberStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/PhoneNumberStatus.hs
@@ -0,0 +1,116 @@
+{-# 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.ChimeSdkVoice.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.ChimeSdkVoice.Types.PhoneNumberStatus
+  ( PhoneNumberStatus
+      ( ..,
+        PhoneNumberStatus_AcquireFailed,
+        PhoneNumberStatus_AcquireInProgress,
+        PhoneNumberStatus_Assigned,
+        PhoneNumberStatus_Cancelled,
+        PhoneNumberStatus_DeleteFailed,
+        PhoneNumberStatus_DeleteInProgress,
+        PhoneNumberStatus_PortinCancelRequested,
+        PhoneNumberStatus_PortinInProgress,
+        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_Cancelled :: PhoneNumberStatus
+pattern PhoneNumberStatus_Cancelled = PhoneNumberStatus' "Cancelled"
+
+pattern PhoneNumberStatus_DeleteFailed :: PhoneNumberStatus
+pattern PhoneNumberStatus_DeleteFailed = PhoneNumberStatus' "DeleteFailed"
+
+pattern PhoneNumberStatus_DeleteInProgress :: PhoneNumberStatus
+pattern PhoneNumberStatus_DeleteInProgress = PhoneNumberStatus' "DeleteInProgress"
+
+pattern PhoneNumberStatus_PortinCancelRequested :: PhoneNumberStatus
+pattern PhoneNumberStatus_PortinCancelRequested = PhoneNumberStatus' "PortinCancelRequested"
+
+pattern PhoneNumberStatus_PortinInProgress :: PhoneNumberStatus
+pattern PhoneNumberStatus_PortinInProgress = PhoneNumberStatus' "PortinInProgress"
+
+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_Cancelled,
+  PhoneNumberStatus_DeleteFailed,
+  PhoneNumberStatus_DeleteInProgress,
+  PhoneNumberStatus_PortinCancelRequested,
+  PhoneNumberStatus_PortinInProgress,
+  PhoneNumberStatus_ReleaseFailed,
+  PhoneNumberStatus_ReleaseInProgress,
+  PhoneNumberStatus_Unassigned,
+  PhoneNumberStatus'
+  #-}
diff --git a/gen/Amazonka/ChimeSdkVoice/Types/PhoneNumberType.hs b/gen/Amazonka/ChimeSdkVoice/Types/PhoneNumberType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/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.ChimeSdkVoice.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.ChimeSdkVoice.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/ChimeSdkVoice/Types/Proxy.hs b/gen/Amazonka/ChimeSdkVoice/Types/Proxy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/Proxy.hs
@@ -0,0 +1,106 @@
+{-# 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.ChimeSdkVoice.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.ChimeSdkVoice.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
+
+-- | /See:/ 'newProxy' smart constructor.
+data Proxy = Proxy'
+  { defaultSessionExpiryMinutes :: Prelude.Maybe Prelude.Int,
+    disabled :: Prelude.Maybe Prelude.Bool,
+    fallBackPhoneNumber :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    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' - Undocumented member.
+--
+-- 'disabled', 'proxy_disabled' - Undocumented member.
+--
+-- 'fallBackPhoneNumber', 'proxy_fallBackPhoneNumber' - Undocumented member.
+--
+-- 'phoneNumberCountries', 'proxy_phoneNumberCountries' - Undocumented member.
+newProxy ::
+  Proxy
+newProxy =
+  Proxy'
+    { defaultSessionExpiryMinutes =
+        Prelude.Nothing,
+      disabled = Prelude.Nothing,
+      fallBackPhoneNumber = Prelude.Nothing,
+      phoneNumberCountries = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+proxy_defaultSessionExpiryMinutes :: Lens.Lens' Proxy (Prelude.Maybe Prelude.Int)
+proxy_defaultSessionExpiryMinutes = Lens.lens (\Proxy' {defaultSessionExpiryMinutes} -> defaultSessionExpiryMinutes) (\s@Proxy' {} a -> s {defaultSessionExpiryMinutes = a} :: Proxy)
+
+-- | Undocumented member.
+proxy_disabled :: Lens.Lens' Proxy (Prelude.Maybe Prelude.Bool)
+proxy_disabled = Lens.lens (\Proxy' {disabled} -> disabled) (\s@Proxy' {} a -> s {disabled = a} :: Proxy)
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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/ChimeSdkVoice/Types/ProxySession.hs b/gen/Amazonka/ChimeSdkVoice/Types/ProxySession.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/ProxySession.hs
@@ -0,0 +1,207 @@
+{-# 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.ChimeSdkVoice.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.ChimeSdkVoice.Types.ProxySession where
+
+import Amazonka.ChimeSdkVoice.Types.Capability
+import Amazonka.ChimeSdkVoice.Types.GeoMatchLevel
+import Amazonka.ChimeSdkVoice.Types.GeoMatchParams
+import Amazonka.ChimeSdkVoice.Types.NumberSelectionBehavior
+import Amazonka.ChimeSdkVoice.Types.Participant
+import Amazonka.ChimeSdkVoice.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
+
+-- | /See:/ 'newProxySession' smart constructor.
+data ProxySession = ProxySession'
+  { capabilities :: Prelude.Maybe [Capability],
+    createdTimestamp :: Prelude.Maybe Data.ISO8601,
+    endedTimestamp :: Prelude.Maybe Data.ISO8601,
+    expiryMinutes :: Prelude.Maybe Prelude.Natural,
+    geoMatchLevel :: Prelude.Maybe GeoMatchLevel,
+    geoMatchParams :: Prelude.Maybe GeoMatchParams,
+    name :: Prelude.Maybe Prelude.Text,
+    numberSelectionBehavior :: Prelude.Maybe NumberSelectionBehavior,
+    participants :: Prelude.Maybe [Participant],
+    proxySessionId :: Prelude.Maybe Prelude.Text,
+    status :: Prelude.Maybe ProxySessionStatus,
+    updatedTimestamp :: Prelude.Maybe Data.ISO8601,
+    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' - Undocumented member.
+--
+-- 'createdTimestamp', 'proxySession_createdTimestamp' - Undocumented member.
+--
+-- 'endedTimestamp', 'proxySession_endedTimestamp' - Undocumented member.
+--
+-- 'expiryMinutes', 'proxySession_expiryMinutes' - Undocumented member.
+--
+-- 'geoMatchLevel', 'proxySession_geoMatchLevel' - Undocumented member.
+--
+-- 'geoMatchParams', 'proxySession_geoMatchParams' - Undocumented member.
+--
+-- 'name', 'proxySession_name' - Undocumented member.
+--
+-- 'numberSelectionBehavior', 'proxySession_numberSelectionBehavior' - Undocumented member.
+--
+-- 'participants', 'proxySession_participants' - Undocumented member.
+--
+-- 'proxySessionId', 'proxySession_proxySessionId' - Undocumented member.
+--
+-- 'status', 'proxySession_status' - Undocumented member.
+--
+-- 'updatedTimestamp', 'proxySession_updatedTimestamp' - Undocumented member.
+--
+-- 'voiceConnectorId', 'proxySession_voiceConnectorId' - Undocumented member.
+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
+    }
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+proxySession_expiryMinutes :: Lens.Lens' ProxySession (Prelude.Maybe Prelude.Natural)
+proxySession_expiryMinutes = Lens.lens (\ProxySession' {expiryMinutes} -> expiryMinutes) (\s@ProxySession' {} a -> s {expiryMinutes = a} :: ProxySession)
+
+-- | Undocumented member.
+proxySession_geoMatchLevel :: Lens.Lens' ProxySession (Prelude.Maybe GeoMatchLevel)
+proxySession_geoMatchLevel = Lens.lens (\ProxySession' {geoMatchLevel} -> geoMatchLevel) (\s@ProxySession' {} a -> s {geoMatchLevel = a} :: ProxySession)
+
+-- | Undocumented member.
+proxySession_geoMatchParams :: Lens.Lens' ProxySession (Prelude.Maybe GeoMatchParams)
+proxySession_geoMatchParams = Lens.lens (\ProxySession' {geoMatchParams} -> geoMatchParams) (\s@ProxySession' {} a -> s {geoMatchParams = a} :: ProxySession)
+
+-- | Undocumented member.
+proxySession_name :: Lens.Lens' ProxySession (Prelude.Maybe Prelude.Text)
+proxySession_name = Lens.lens (\ProxySession' {name} -> name) (\s@ProxySession' {} a -> s {name = a} :: ProxySession)
+
+-- | Undocumented member.
+proxySession_numberSelectionBehavior :: Lens.Lens' ProxySession (Prelude.Maybe NumberSelectionBehavior)
+proxySession_numberSelectionBehavior = Lens.lens (\ProxySession' {numberSelectionBehavior} -> numberSelectionBehavior) (\s@ProxySession' {} a -> s {numberSelectionBehavior = a} :: ProxySession)
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+proxySession_proxySessionId :: Lens.Lens' ProxySession (Prelude.Maybe Prelude.Text)
+proxySession_proxySessionId = Lens.lens (\ProxySession' {proxySessionId} -> proxySessionId) (\s@ProxySession' {} a -> s {proxySessionId = a} :: ProxySession)
+
+-- | Undocumented member.
+proxySession_status :: Lens.Lens' ProxySession (Prelude.Maybe ProxySessionStatus)
+proxySession_status = Lens.lens (\ProxySession' {status} -> status) (\s@ProxySession' {} a -> s {status = a} :: ProxySession)
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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/ChimeSdkVoice/Types/ProxySessionStatus.hs b/gen/Amazonka/ChimeSdkVoice/Types/ProxySessionStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/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.ChimeSdkVoice.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.ChimeSdkVoice.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/ChimeSdkVoice/Types/SipMediaApplication.hs b/gen/Amazonka/ChimeSdkVoice/Types/SipMediaApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/SipMediaApplication.hs
@@ -0,0 +1,125 @@
+{-# 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.ChimeSdkVoice.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.ChimeSdkVoice.Types.SipMediaApplication where
+
+import Amazonka.ChimeSdkVoice.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
+
+-- | /See:/ 'newSipMediaApplication' smart constructor.
+data SipMediaApplication = SipMediaApplication'
+  { awsRegion :: Prelude.Maybe Prelude.Text,
+    createdTimestamp :: Prelude.Maybe Data.ISO8601,
+    endpoints :: Prelude.Maybe (Prelude.NonEmpty SipMediaApplicationEndpoint),
+    name :: Prelude.Maybe Prelude.Text,
+    sipMediaApplicationId :: Prelude.Maybe Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'createdTimestamp', 'sipMediaApplication_createdTimestamp' - Undocumented member.
+--
+-- 'endpoints', 'sipMediaApplication_endpoints' - Undocumented member.
+--
+-- 'name', 'sipMediaApplication_name' - Undocumented member.
+--
+-- 'sipMediaApplicationId', 'sipMediaApplication_sipMediaApplicationId' - Undocumented member.
+--
+-- 'updatedTimestamp', 'sipMediaApplication_updatedTimestamp' - Undocumented member.
+newSipMediaApplication ::
+  SipMediaApplication
+newSipMediaApplication =
+  SipMediaApplication'
+    { awsRegion = Prelude.Nothing,
+      createdTimestamp = Prelude.Nothing,
+      endpoints = Prelude.Nothing,
+      name = Prelude.Nothing,
+      sipMediaApplicationId = Prelude.Nothing,
+      updatedTimestamp = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+sipMediaApplication_awsRegion :: Lens.Lens' SipMediaApplication (Prelude.Maybe Prelude.Text)
+sipMediaApplication_awsRegion = Lens.lens (\SipMediaApplication' {awsRegion} -> awsRegion) (\s@SipMediaApplication' {} a -> s {awsRegion = a} :: SipMediaApplication)
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+sipMediaApplication_name :: Lens.Lens' SipMediaApplication (Prelude.Maybe Prelude.Text)
+sipMediaApplication_name = Lens.lens (\SipMediaApplication' {name} -> name) (\s@SipMediaApplication' {} a -> s {name = a} :: SipMediaApplication)
+
+-- | Undocumented member.
+sipMediaApplication_sipMediaApplicationId :: Lens.Lens' SipMediaApplication (Prelude.Maybe Prelude.Text)
+sipMediaApplication_sipMediaApplicationId = Lens.lens (\SipMediaApplication' {sipMediaApplicationId} -> sipMediaApplicationId) (\s@SipMediaApplication' {} a -> s {sipMediaApplicationId = a} :: SipMediaApplication)
+
+-- | Undocumented member.
+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/ChimeSdkVoice/Types/SipMediaApplicationAlexaSkillConfiguration.hs b/gen/Amazonka/ChimeSdkVoice/Types/SipMediaApplicationAlexaSkillConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/SipMediaApplicationAlexaSkillConfiguration.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.ChimeSdkVoice.Types.SipMediaApplicationAlexaSkillConfiguration
+-- 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.ChimeSdkVoice.Types.SipMediaApplicationAlexaSkillConfiguration where
+
+import Amazonka.ChimeSdkVoice.Types.AlexaSkillStatus
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | /See:/ 'newSipMediaApplicationAlexaSkillConfiguration' smart constructor.
+data SipMediaApplicationAlexaSkillConfiguration = SipMediaApplicationAlexaSkillConfiguration'
+  { alexaSkillStatus :: AlexaSkillStatus,
+    alexaSkillIds :: Prelude.NonEmpty (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SipMediaApplicationAlexaSkillConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'alexaSkillStatus', 'sipMediaApplicationAlexaSkillConfiguration_alexaSkillStatus' - Undocumented member.
+--
+-- 'alexaSkillIds', 'sipMediaApplicationAlexaSkillConfiguration_alexaSkillIds' - Undocumented member.
+newSipMediaApplicationAlexaSkillConfiguration ::
+  -- | 'alexaSkillStatus'
+  AlexaSkillStatus ->
+  -- | 'alexaSkillIds'
+  Prelude.NonEmpty Prelude.Text ->
+  SipMediaApplicationAlexaSkillConfiguration
+newSipMediaApplicationAlexaSkillConfiguration
+  pAlexaSkillStatus_
+  pAlexaSkillIds_ =
+    SipMediaApplicationAlexaSkillConfiguration'
+      { alexaSkillStatus =
+          pAlexaSkillStatus_,
+        alexaSkillIds =
+          Lens.coerced
+            Lens.# pAlexaSkillIds_
+      }
+
+-- | Undocumented member.
+sipMediaApplicationAlexaSkillConfiguration_alexaSkillStatus :: Lens.Lens' SipMediaApplicationAlexaSkillConfiguration AlexaSkillStatus
+sipMediaApplicationAlexaSkillConfiguration_alexaSkillStatus = Lens.lens (\SipMediaApplicationAlexaSkillConfiguration' {alexaSkillStatus} -> alexaSkillStatus) (\s@SipMediaApplicationAlexaSkillConfiguration' {} a -> s {alexaSkillStatus = a} :: SipMediaApplicationAlexaSkillConfiguration)
+
+-- | Undocumented member.
+sipMediaApplicationAlexaSkillConfiguration_alexaSkillIds :: Lens.Lens' SipMediaApplicationAlexaSkillConfiguration (Prelude.NonEmpty Prelude.Text)
+sipMediaApplicationAlexaSkillConfiguration_alexaSkillIds = Lens.lens (\SipMediaApplicationAlexaSkillConfiguration' {alexaSkillIds} -> alexaSkillIds) (\s@SipMediaApplicationAlexaSkillConfiguration' {} a -> s {alexaSkillIds = a} :: SipMediaApplicationAlexaSkillConfiguration) Prelude.. Lens.coerced
+
+instance
+  Data.FromJSON
+    SipMediaApplicationAlexaSkillConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "SipMediaApplicationAlexaSkillConfiguration"
+      ( \x ->
+          SipMediaApplicationAlexaSkillConfiguration'
+            Prelude.<$> (x Data..: "AlexaSkillStatus")
+            Prelude.<*> (x Data..: "AlexaSkillIds")
+      )
+
+instance
+  Prelude.Hashable
+    SipMediaApplicationAlexaSkillConfiguration
+  where
+  hashWithSalt
+    _salt
+    SipMediaApplicationAlexaSkillConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` alexaSkillStatus
+        `Prelude.hashWithSalt` alexaSkillIds
+
+instance
+  Prelude.NFData
+    SipMediaApplicationAlexaSkillConfiguration
+  where
+  rnf SipMediaApplicationAlexaSkillConfiguration' {..} =
+    Prelude.rnf alexaSkillStatus
+      `Prelude.seq` Prelude.rnf alexaSkillIds
+
+instance
+  Data.ToJSON
+    SipMediaApplicationAlexaSkillConfiguration
+  where
+  toJSON
+    SipMediaApplicationAlexaSkillConfiguration' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ Prelude.Just
+                ("AlexaSkillStatus" Data..= alexaSkillStatus),
+              Prelude.Just
+                ("AlexaSkillIds" Data..= alexaSkillIds)
+            ]
+        )
diff --git a/gen/Amazonka/ChimeSdkVoice/Types/SipMediaApplicationCall.hs b/gen/Amazonka/ChimeSdkVoice/Types/SipMediaApplicationCall.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/SipMediaApplicationCall.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.ChimeSdkVoice.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.ChimeSdkVoice.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
+
+-- | /See:/ 'newSipMediaApplicationCall' smart constructor.
+data SipMediaApplicationCall = SipMediaApplicationCall'
+  { 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' - Undocumented member.
+newSipMediaApplicationCall ::
+  SipMediaApplicationCall
+newSipMediaApplicationCall =
+  SipMediaApplicationCall'
+    { transactionId =
+        Prelude.Nothing
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/Types/SipMediaApplicationEndpoint.hs b/gen/Amazonka/ChimeSdkVoice/Types/SipMediaApplicationEndpoint.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/SipMediaApplicationEndpoint.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.ChimeSdkVoice.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.ChimeSdkVoice.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
+
+-- | /See:/ 'newSipMediaApplicationEndpoint' smart constructor.
+data SipMediaApplicationEndpoint = SipMediaApplicationEndpoint'
+  { 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' - Undocumented member.
+newSipMediaApplicationEndpoint ::
+  SipMediaApplicationEndpoint
+newSipMediaApplicationEndpoint =
+  SipMediaApplicationEndpoint'
+    { lambdaArn =
+        Prelude.Nothing
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/Types/SipMediaApplicationLoggingConfiguration.hs b/gen/Amazonka/ChimeSdkVoice/Types/SipMediaApplicationLoggingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/SipMediaApplicationLoggingConfiguration.hs
@@ -0,0 +1,93 @@
+{-# 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.ChimeSdkVoice.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.ChimeSdkVoice.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
+
+-- | /See:/ 'newSipMediaApplicationLoggingConfiguration' smart constructor.
+data SipMediaApplicationLoggingConfiguration = SipMediaApplicationLoggingConfiguration'
+  { 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' - Undocumented member.
+newSipMediaApplicationLoggingConfiguration ::
+  SipMediaApplicationLoggingConfiguration
+newSipMediaApplicationLoggingConfiguration =
+  SipMediaApplicationLoggingConfiguration'
+    { enableSipMediaApplicationMessageLogs =
+        Prelude.Nothing
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/Types/SipRule.hs b/gen/Amazonka/ChimeSdkVoice/Types/SipRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/SipRule.hs
@@ -0,0 +1,148 @@
+{-# 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.ChimeSdkVoice.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.ChimeSdkVoice.Types.SipRule where
+
+import Amazonka.ChimeSdkVoice.Types.SipRuleTargetApplication
+import Amazonka.ChimeSdkVoice.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
+
+-- | /See:/ 'newSipRule' smart constructor.
+data SipRule = SipRule'
+  { createdTimestamp :: Prelude.Maybe Data.ISO8601,
+    disabled :: Prelude.Maybe Prelude.Bool,
+    name :: Prelude.Maybe Prelude.Text,
+    sipRuleId :: Prelude.Maybe Prelude.Text,
+    targetApplications :: Prelude.Maybe (Prelude.NonEmpty SipRuleTargetApplication),
+    triggerType :: Prelude.Maybe SipRuleTriggerType,
+    triggerValue :: Prelude.Maybe Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'disabled', 'sipRule_disabled' - Undocumented member.
+--
+-- 'name', 'sipRule_name' - Undocumented member.
+--
+-- 'sipRuleId', 'sipRule_sipRuleId' - Undocumented member.
+--
+-- 'targetApplications', 'sipRule_targetApplications' - Undocumented member.
+--
+-- 'triggerType', 'sipRule_triggerType' - Undocumented member.
+--
+-- 'triggerValue', 'sipRule_triggerValue' - Undocumented member.
+--
+-- 'updatedTimestamp', 'sipRule_updatedTimestamp' - Undocumented member.
+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
+    }
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+sipRule_disabled :: Lens.Lens' SipRule (Prelude.Maybe Prelude.Bool)
+sipRule_disabled = Lens.lens (\SipRule' {disabled} -> disabled) (\s@SipRule' {} a -> s {disabled = a} :: SipRule)
+
+-- | Undocumented member.
+sipRule_name :: Lens.Lens' SipRule (Prelude.Maybe Prelude.Text)
+sipRule_name = Lens.lens (\SipRule' {name} -> name) (\s@SipRule' {} a -> s {name = a} :: SipRule)
+
+-- | Undocumented member.
+sipRule_sipRuleId :: Lens.Lens' SipRule (Prelude.Maybe Prelude.Text)
+sipRule_sipRuleId = Lens.lens (\SipRule' {sipRuleId} -> sipRuleId) (\s@SipRule' {} a -> s {sipRuleId = a} :: SipRule)
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+sipRule_triggerType :: Lens.Lens' SipRule (Prelude.Maybe SipRuleTriggerType)
+sipRule_triggerType = Lens.lens (\SipRule' {triggerType} -> triggerType) (\s@SipRule' {} a -> s {triggerType = a} :: SipRule)
+
+-- | Undocumented member.
+sipRule_triggerValue :: Lens.Lens' SipRule (Prelude.Maybe Prelude.Text)
+sipRule_triggerValue = Lens.lens (\SipRule' {triggerValue} -> triggerValue) (\s@SipRule' {} a -> s {triggerValue = a} :: SipRule)
+
+-- | Undocumented member.
+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/ChimeSdkVoice/Types/SipRuleTargetApplication.hs b/gen/Amazonka/ChimeSdkVoice/Types/SipRuleTargetApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/SipRuleTargetApplication.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.ChimeSdkVoice.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.ChimeSdkVoice.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
+
+-- | /See:/ 'newSipRuleTargetApplication' smart constructor.
+data SipRuleTargetApplication = SipRuleTargetApplication'
+  { awsRegion :: Prelude.Maybe Prelude.Text,
+    priority :: Prelude.Maybe Prelude.Natural,
+    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' - Undocumented member.
+--
+-- 'priority', 'sipRuleTargetApplication_priority' - Undocumented member.
+--
+-- 'sipMediaApplicationId', 'sipRuleTargetApplication_sipMediaApplicationId' - Undocumented member.
+newSipRuleTargetApplication ::
+  SipRuleTargetApplication
+newSipRuleTargetApplication =
+  SipRuleTargetApplication'
+    { awsRegion =
+        Prelude.Nothing,
+      priority = Prelude.Nothing,
+      sipMediaApplicationId = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+sipRuleTargetApplication_awsRegion :: Lens.Lens' SipRuleTargetApplication (Prelude.Maybe Prelude.Text)
+sipRuleTargetApplication_awsRegion = Lens.lens (\SipRuleTargetApplication' {awsRegion} -> awsRegion) (\s@SipRuleTargetApplication' {} a -> s {awsRegion = a} :: SipRuleTargetApplication)
+
+-- | Undocumented member.
+sipRuleTargetApplication_priority :: Lens.Lens' SipRuleTargetApplication (Prelude.Maybe Prelude.Natural)
+sipRuleTargetApplication_priority = Lens.lens (\SipRuleTargetApplication' {priority} -> priority) (\s@SipRuleTargetApplication' {} a -> s {priority = a} :: SipRuleTargetApplication)
+
+-- | Undocumented member.
+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/ChimeSdkVoice/Types/SipRuleTriggerType.hs b/gen/Amazonka/ChimeSdkVoice/Types/SipRuleTriggerType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/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.ChimeSdkVoice.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.ChimeSdkVoice.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/ChimeSdkVoice/Types/StreamingConfiguration.hs b/gen/Amazonka/ChimeSdkVoice/Types/StreamingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/StreamingConfiguration.hs
@@ -0,0 +1,113 @@
+{-# 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.ChimeSdkVoice.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.ChimeSdkVoice.Types.StreamingConfiguration where
+
+import Amazonka.ChimeSdkVoice.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
+
+-- | /See:/ 'newStreamingConfiguration' smart constructor.
+data StreamingConfiguration = StreamingConfiguration'
+  { streamingNotificationTargets :: Prelude.Maybe (Prelude.NonEmpty StreamingNotificationTarget),
+    dataRetentionInHours :: Prelude.Natural,
+    disabled :: Prelude.Bool
+  }
+  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:
+--
+-- 'streamingNotificationTargets', 'streamingConfiguration_streamingNotificationTargets' - Undocumented member.
+--
+-- 'dataRetentionInHours', 'streamingConfiguration_dataRetentionInHours' - Undocumented member.
+--
+-- 'disabled', 'streamingConfiguration_disabled' - Undocumented member.
+newStreamingConfiguration ::
+  -- | 'dataRetentionInHours'
+  Prelude.Natural ->
+  -- | 'disabled'
+  Prelude.Bool ->
+  StreamingConfiguration
+newStreamingConfiguration
+  pDataRetentionInHours_
+  pDisabled_ =
+    StreamingConfiguration'
+      { streamingNotificationTargets =
+          Prelude.Nothing,
+        dataRetentionInHours = pDataRetentionInHours_,
+        disabled = pDisabled_
+      }
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+streamingConfiguration_dataRetentionInHours :: Lens.Lens' StreamingConfiguration Prelude.Natural
+streamingConfiguration_dataRetentionInHours = Lens.lens (\StreamingConfiguration' {dataRetentionInHours} -> dataRetentionInHours) (\s@StreamingConfiguration' {} a -> s {dataRetentionInHours = a} :: StreamingConfiguration)
+
+-- | Undocumented member.
+streamingConfiguration_disabled :: Lens.Lens' StreamingConfiguration Prelude.Bool
+streamingConfiguration_disabled = Lens.lens (\StreamingConfiguration' {disabled} -> disabled) (\s@StreamingConfiguration' {} a -> s {disabled = a} :: StreamingConfiguration)
+
+instance Data.FromJSON StreamingConfiguration where
+  parseJSON =
+    Data.withObject
+      "StreamingConfiguration"
+      ( \x ->
+          StreamingConfiguration'
+            Prelude.<$> (x Data..:? "StreamingNotificationTargets")
+            Prelude.<*> (x Data..: "DataRetentionInHours")
+            Prelude.<*> (x Data..: "Disabled")
+      )
+
+instance Prelude.Hashable StreamingConfiguration where
+  hashWithSalt _salt StreamingConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` streamingNotificationTargets
+      `Prelude.hashWithSalt` dataRetentionInHours
+      `Prelude.hashWithSalt` disabled
+
+instance Prelude.NFData StreamingConfiguration where
+  rnf StreamingConfiguration' {..} =
+    Prelude.rnf streamingNotificationTargets
+      `Prelude.seq` Prelude.rnf dataRetentionInHours
+      `Prelude.seq` Prelude.rnf disabled
+
+instance Data.ToJSON StreamingConfiguration where
+  toJSON StreamingConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("StreamingNotificationTargets" Data..=)
+              Prelude.<$> streamingNotificationTargets,
+            Prelude.Just
+              ( "DataRetentionInHours"
+                  Data..= dataRetentionInHours
+              ),
+            Prelude.Just ("Disabled" Data..= disabled)
+          ]
+      )
diff --git a/gen/Amazonka/ChimeSdkVoice/Types/StreamingNotificationTarget.hs b/gen/Amazonka/ChimeSdkVoice/Types/StreamingNotificationTarget.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/StreamingNotificationTarget.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.ChimeSdkVoice.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.ChimeSdkVoice.Types.StreamingNotificationTarget where
+
+import Amazonka.ChimeSdkVoice.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
+
+-- | /See:/ 'newStreamingNotificationTarget' smart constructor.
+data StreamingNotificationTarget = StreamingNotificationTarget'
+  { notificationTarget :: Prelude.Maybe 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' - Undocumented member.
+newStreamingNotificationTarget ::
+  StreamingNotificationTarget
+newStreamingNotificationTarget =
+  StreamingNotificationTarget'
+    { notificationTarget =
+        Prelude.Nothing
+    }
+
+-- | Undocumented member.
+streamingNotificationTarget_notificationTarget :: Lens.Lens' StreamingNotificationTarget (Prelude.Maybe 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
+          [ ("NotificationTarget" Data..=)
+              Prelude.<$> notificationTarget
+          ]
+      )
diff --git a/gen/Amazonka/ChimeSdkVoice/Types/Termination.hs b/gen/Amazonka/ChimeSdkVoice/Types/Termination.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/Termination.hs
@@ -0,0 +1,131 @@
+{-# 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.ChimeSdkVoice.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.ChimeSdkVoice.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
+
+-- | /See:/ 'newTermination' smart constructor.
+data Termination = Termination'
+  { callingRegions :: Prelude.Maybe [Prelude.Text],
+    cidrAllowedList :: Prelude.Maybe [Prelude.Text],
+    cpsLimit :: Prelude.Maybe Prelude.Natural,
+    defaultPhoneNumber :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    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' - Undocumented member.
+--
+-- 'cidrAllowedList', 'termination_cidrAllowedList' - Undocumented member.
+--
+-- 'cpsLimit', 'termination_cpsLimit' - Undocumented member.
+--
+-- 'defaultPhoneNumber', 'termination_defaultPhoneNumber' - Undocumented member.
+--
+-- 'disabled', 'termination_disabled' - Undocumented member.
+newTermination ::
+  Termination
+newTermination =
+  Termination'
+    { callingRegions = Prelude.Nothing,
+      cidrAllowedList = Prelude.Nothing,
+      cpsLimit = Prelude.Nothing,
+      defaultPhoneNumber = Prelude.Nothing,
+      disabled = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+termination_cpsLimit :: Lens.Lens' Termination (Prelude.Maybe Prelude.Natural)
+termination_cpsLimit = Lens.lens (\Termination' {cpsLimit} -> cpsLimit) (\s@Termination' {} a -> s {cpsLimit = a} :: Termination)
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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/ChimeSdkVoice/Types/TerminationHealth.hs b/gen/Amazonka/ChimeSdkVoice/Types/TerminationHealth.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/TerminationHealth.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.ChimeSdkVoice.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.ChimeSdkVoice.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
+
+-- | /See:/ 'newTerminationHealth' smart constructor.
+data TerminationHealth = TerminationHealth'
+  { source :: Prelude.Maybe Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'timestamp', 'terminationHealth_timestamp' - Undocumented member.
+newTerminationHealth ::
+  TerminationHealth
+newTerminationHealth =
+  TerminationHealth'
+    { source = Prelude.Nothing,
+      timestamp = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+terminationHealth_source :: Lens.Lens' TerminationHealth (Prelude.Maybe Prelude.Text)
+terminationHealth_source = Lens.lens (\TerminationHealth' {source} -> source) (\s@TerminationHealth' {} a -> s {source = a} :: TerminationHealth)
+
+-- | Undocumented member.
+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/ChimeSdkVoice/Types/UpdatePhoneNumberRequestItem.hs b/gen/Amazonka/ChimeSdkVoice/Types/UpdatePhoneNumberRequestItem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/UpdatePhoneNumberRequestItem.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.ChimeSdkVoice.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.ChimeSdkVoice.Types.UpdatePhoneNumberRequestItem where
+
+import Amazonka.ChimeSdkVoice.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
+
+-- | /See:/ 'newUpdatePhoneNumberRequestItem' smart constructor.
+data UpdatePhoneNumberRequestItem = UpdatePhoneNumberRequestItem'
+  { callingName :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    productType :: Prelude.Maybe PhoneNumberProductType,
+    phoneNumberId :: Data.Sensitive 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' - Undocumented member.
+--
+-- 'productType', 'updatePhoneNumberRequestItem_productType' - Undocumented member.
+--
+-- 'phoneNumberId', 'updatePhoneNumberRequestItem_phoneNumberId' - Undocumented member.
+newUpdatePhoneNumberRequestItem ::
+  -- | 'phoneNumberId'
+  Prelude.Text ->
+  UpdatePhoneNumberRequestItem
+newUpdatePhoneNumberRequestItem pPhoneNumberId_ =
+  UpdatePhoneNumberRequestItem'
+    { callingName =
+        Prelude.Nothing,
+      productType = Prelude.Nothing,
+      phoneNumberId =
+        Data._Sensitive Lens.# pPhoneNumberId_
+    }
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+updatePhoneNumberRequestItem_productType :: Lens.Lens' UpdatePhoneNumberRequestItem (Prelude.Maybe PhoneNumberProductType)
+updatePhoneNumberRequestItem_productType = Lens.lens (\UpdatePhoneNumberRequestItem' {productType} -> productType) (\s@UpdatePhoneNumberRequestItem' {} a -> s {productType = a} :: UpdatePhoneNumberRequestItem)
+
+-- | Undocumented member.
+updatePhoneNumberRequestItem_phoneNumberId :: Lens.Lens' UpdatePhoneNumberRequestItem Prelude.Text
+updatePhoneNumberRequestItem_phoneNumberId = Lens.lens (\UpdatePhoneNumberRequestItem' {phoneNumberId} -> phoneNumberId) (\s@UpdatePhoneNumberRequestItem' {} a -> s {phoneNumberId = a} :: UpdatePhoneNumberRequestItem) Prelude.. Data._Sensitive
+
+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/ChimeSdkVoice/Types/VoiceConnector.hs b/gen/Amazonka/ChimeSdkVoice/Types/VoiceConnector.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/VoiceConnector.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.ChimeSdkVoice.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.ChimeSdkVoice.Types.VoiceConnector where
+
+import Amazonka.ChimeSdkVoice.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
+
+-- | /See:/ 'newVoiceConnector' smart constructor.
+data VoiceConnector = VoiceConnector'
+  { awsRegion :: Prelude.Maybe VoiceConnectorAwsRegion,
+    createdTimestamp :: Prelude.Maybe Data.ISO8601,
+    name :: Prelude.Maybe Prelude.Text,
+    outboundHostName :: Prelude.Maybe Prelude.Text,
+    requireEncryption :: Prelude.Maybe Prelude.Bool,
+    updatedTimestamp :: Prelude.Maybe Data.ISO8601,
+    voiceConnectorArn :: Prelude.Maybe Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'createdTimestamp', 'voiceConnector_createdTimestamp' - Undocumented member.
+--
+-- 'name', 'voiceConnector_name' - Undocumented member.
+--
+-- 'outboundHostName', 'voiceConnector_outboundHostName' - Undocumented member.
+--
+-- 'requireEncryption', 'voiceConnector_requireEncryption' - Undocumented member.
+--
+-- 'updatedTimestamp', 'voiceConnector_updatedTimestamp' - Undocumented member.
+--
+-- 'voiceConnectorArn', 'voiceConnector_voiceConnectorArn' - Undocumented member.
+--
+-- 'voiceConnectorId', 'voiceConnector_voiceConnectorId' - Undocumented member.
+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
+    }
+
+-- | Undocumented member.
+voiceConnector_awsRegion :: Lens.Lens' VoiceConnector (Prelude.Maybe VoiceConnectorAwsRegion)
+voiceConnector_awsRegion = Lens.lens (\VoiceConnector' {awsRegion} -> awsRegion) (\s@VoiceConnector' {} a -> s {awsRegion = a} :: VoiceConnector)
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+voiceConnector_name :: Lens.Lens' VoiceConnector (Prelude.Maybe Prelude.Text)
+voiceConnector_name = Lens.lens (\VoiceConnector' {name} -> name) (\s@VoiceConnector' {} a -> s {name = a} :: VoiceConnector)
+
+-- | Undocumented member.
+voiceConnector_outboundHostName :: Lens.Lens' VoiceConnector (Prelude.Maybe Prelude.Text)
+voiceConnector_outboundHostName = Lens.lens (\VoiceConnector' {outboundHostName} -> outboundHostName) (\s@VoiceConnector' {} a -> s {outboundHostName = a} :: VoiceConnector)
+
+-- | Undocumented member.
+voiceConnector_requireEncryption :: Lens.Lens' VoiceConnector (Prelude.Maybe Prelude.Bool)
+voiceConnector_requireEncryption = Lens.lens (\VoiceConnector' {requireEncryption} -> requireEncryption) (\s@VoiceConnector' {} a -> s {requireEncryption = a} :: VoiceConnector)
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+voiceConnector_voiceConnectorArn :: Lens.Lens' VoiceConnector (Prelude.Maybe Prelude.Text)
+voiceConnector_voiceConnectorArn = Lens.lens (\VoiceConnector' {voiceConnectorArn} -> voiceConnectorArn) (\s@VoiceConnector' {} a -> s {voiceConnectorArn = a} :: VoiceConnector)
+
+-- | Undocumented member.
+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/ChimeSdkVoice/Types/VoiceConnectorAwsRegion.hs b/gen/Amazonka/ChimeSdkVoice/Types/VoiceConnectorAwsRegion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/VoiceConnectorAwsRegion.hs
@@ -0,0 +1,111 @@
+{-# 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.ChimeSdkVoice.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.ChimeSdkVoice.Types.VoiceConnectorAwsRegion
+  ( VoiceConnectorAwsRegion
+      ( ..,
+        VoiceConnectorAwsRegion_Ap_northeast_1,
+        VoiceConnectorAwsRegion_Ap_northeast_2,
+        VoiceConnectorAwsRegion_Ap_southeast_1,
+        VoiceConnectorAwsRegion_Ap_southeast_2,
+        VoiceConnectorAwsRegion_Ca_central_1,
+        VoiceConnectorAwsRegion_Eu_central_1,
+        VoiceConnectorAwsRegion_Eu_west_1,
+        VoiceConnectorAwsRegion_Eu_west_2,
+        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_Ap_northeast_1 :: VoiceConnectorAwsRegion
+pattern VoiceConnectorAwsRegion_Ap_northeast_1 = VoiceConnectorAwsRegion' "ap-northeast-1"
+
+pattern VoiceConnectorAwsRegion_Ap_northeast_2 :: VoiceConnectorAwsRegion
+pattern VoiceConnectorAwsRegion_Ap_northeast_2 = VoiceConnectorAwsRegion' "ap-northeast-2"
+
+pattern VoiceConnectorAwsRegion_Ap_southeast_1 :: VoiceConnectorAwsRegion
+pattern VoiceConnectorAwsRegion_Ap_southeast_1 = VoiceConnectorAwsRegion' "ap-southeast-1"
+
+pattern VoiceConnectorAwsRegion_Ap_southeast_2 :: VoiceConnectorAwsRegion
+pattern VoiceConnectorAwsRegion_Ap_southeast_2 = VoiceConnectorAwsRegion' "ap-southeast-2"
+
+pattern VoiceConnectorAwsRegion_Ca_central_1 :: VoiceConnectorAwsRegion
+pattern VoiceConnectorAwsRegion_Ca_central_1 = VoiceConnectorAwsRegion' "ca-central-1"
+
+pattern VoiceConnectorAwsRegion_Eu_central_1 :: VoiceConnectorAwsRegion
+pattern VoiceConnectorAwsRegion_Eu_central_1 = VoiceConnectorAwsRegion' "eu-central-1"
+
+pattern VoiceConnectorAwsRegion_Eu_west_1 :: VoiceConnectorAwsRegion
+pattern VoiceConnectorAwsRegion_Eu_west_1 = VoiceConnectorAwsRegion' "eu-west-1"
+
+pattern VoiceConnectorAwsRegion_Eu_west_2 :: VoiceConnectorAwsRegion
+pattern VoiceConnectorAwsRegion_Eu_west_2 = VoiceConnectorAwsRegion' "eu-west-2"
+
+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_Ap_northeast_1,
+  VoiceConnectorAwsRegion_Ap_northeast_2,
+  VoiceConnectorAwsRegion_Ap_southeast_1,
+  VoiceConnectorAwsRegion_Ap_southeast_2,
+  VoiceConnectorAwsRegion_Ca_central_1,
+  VoiceConnectorAwsRegion_Eu_central_1,
+  VoiceConnectorAwsRegion_Eu_west_1,
+  VoiceConnectorAwsRegion_Eu_west_2,
+  VoiceConnectorAwsRegion_Us_east_1,
+  VoiceConnectorAwsRegion_Us_west_2,
+  VoiceConnectorAwsRegion'
+  #-}
diff --git a/gen/Amazonka/ChimeSdkVoice/Types/VoiceConnectorGroup.hs b/gen/Amazonka/ChimeSdkVoice/Types/VoiceConnectorGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/VoiceConnectorGroup.hs
@@ -0,0 +1,129 @@
+{-# 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.ChimeSdkVoice.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.ChimeSdkVoice.Types.VoiceConnectorGroup where
+
+import Amazonka.ChimeSdkVoice.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
+
+-- | /See:/ 'newVoiceConnectorGroup' smart constructor.
+data VoiceConnectorGroup = VoiceConnectorGroup'
+  { createdTimestamp :: Prelude.Maybe Data.ISO8601,
+    name :: Prelude.Maybe Prelude.Text,
+    updatedTimestamp :: Prelude.Maybe Data.ISO8601,
+    voiceConnectorGroupArn :: Prelude.Maybe Prelude.Text,
+    voiceConnectorGroupId :: Prelude.Maybe Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'name', 'voiceConnectorGroup_name' - Undocumented member.
+--
+-- 'updatedTimestamp', 'voiceConnectorGroup_updatedTimestamp' - Undocumented member.
+--
+-- 'voiceConnectorGroupArn', 'voiceConnectorGroup_voiceConnectorGroupArn' - Undocumented member.
+--
+-- 'voiceConnectorGroupId', 'voiceConnectorGroup_voiceConnectorGroupId' - Undocumented member.
+--
+-- 'voiceConnectorItems', 'voiceConnectorGroup_voiceConnectorItems' - Undocumented member.
+newVoiceConnectorGroup ::
+  VoiceConnectorGroup
+newVoiceConnectorGroup =
+  VoiceConnectorGroup'
+    { createdTimestamp =
+        Prelude.Nothing,
+      name = Prelude.Nothing,
+      updatedTimestamp = Prelude.Nothing,
+      voiceConnectorGroupArn = Prelude.Nothing,
+      voiceConnectorGroupId = Prelude.Nothing,
+      voiceConnectorItems = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+voiceConnectorGroup_name :: Lens.Lens' VoiceConnectorGroup (Prelude.Maybe Prelude.Text)
+voiceConnectorGroup_name = Lens.lens (\VoiceConnectorGroup' {name} -> name) (\s@VoiceConnectorGroup' {} a -> s {name = a} :: VoiceConnectorGroup)
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+voiceConnectorGroup_voiceConnectorGroupArn :: Lens.Lens' VoiceConnectorGroup (Prelude.Maybe Prelude.Text)
+voiceConnectorGroup_voiceConnectorGroupArn = Lens.lens (\VoiceConnectorGroup' {voiceConnectorGroupArn} -> voiceConnectorGroupArn) (\s@VoiceConnectorGroup' {} a -> s {voiceConnectorGroupArn = a} :: VoiceConnectorGroup)
+
+-- | Undocumented member.
+voiceConnectorGroup_voiceConnectorGroupId :: Lens.Lens' VoiceConnectorGroup (Prelude.Maybe Prelude.Text)
+voiceConnectorGroup_voiceConnectorGroupId = Lens.lens (\VoiceConnectorGroup' {voiceConnectorGroupId} -> voiceConnectorGroupId) (\s@VoiceConnectorGroup' {} a -> s {voiceConnectorGroupId = a} :: VoiceConnectorGroup)
+
+-- | Undocumented member.
+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/ChimeSdkVoice/Types/VoiceConnectorItem.hs b/gen/Amazonka/ChimeSdkVoice/Types/VoiceConnectorItem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/VoiceConnectorItem.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.ChimeSdkVoice.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.ChimeSdkVoice.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
+
+-- | /See:/ 'newVoiceConnectorItem' smart constructor.
+data VoiceConnectorItem = VoiceConnectorItem'
+  { voiceConnectorId :: Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'priority', 'voiceConnectorItem_priority' - Undocumented member.
+newVoiceConnectorItem ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  -- | 'priority'
+  Prelude.Natural ->
+  VoiceConnectorItem
+newVoiceConnectorItem pVoiceConnectorId_ pPriority_ =
+  VoiceConnectorItem'
+    { voiceConnectorId =
+        pVoiceConnectorId_,
+      priority = pPriority_
+    }
+
+-- | Undocumented member.
+voiceConnectorItem_voiceConnectorId :: Lens.Lens' VoiceConnectorItem Prelude.Text
+voiceConnectorItem_voiceConnectorId = Lens.lens (\VoiceConnectorItem' {voiceConnectorId} -> voiceConnectorId) (\s@VoiceConnectorItem' {} a -> s {voiceConnectorId = a} :: VoiceConnectorItem)
+
+-- | Undocumented member.
+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/ChimeSdkVoice/Types/VoiceConnectorSettings.hs b/gen/Amazonka/ChimeSdkVoice/Types/VoiceConnectorSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/Types/VoiceConnectorSettings.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.ChimeSdkVoice.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.ChimeSdkVoice.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
+
+-- | /See:/ 'newVoiceConnectorSettings' smart constructor.
+data VoiceConnectorSettings = VoiceConnectorSettings'
+  { 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' - Undocumented member.
+newVoiceConnectorSettings ::
+  VoiceConnectorSettings
+newVoiceConnectorSettings =
+  VoiceConnectorSettings'
+    { cdrBucket =
+        Prelude.Nothing
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/UpdateGlobalSettings.hs b/gen/Amazonka/ChimeSdkVoice/UpdateGlobalSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/UpdateGlobalSettings.hs
@@ -0,0 +1,124 @@
+{-# 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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.UpdateGlobalSettings
+  ( -- * Creating a Request
+    UpdateGlobalSettings (..),
+    newUpdateGlobalSettings,
+
+    -- * Request Lenses
+    updateGlobalSettings_voiceConnector,
+
+    -- * Destructuring the Response
+    UpdateGlobalSettingsResponse (..),
+    newUpdateGlobalSettingsResponse,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { 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:
+--
+-- 'voiceConnector', 'updateGlobalSettings_voiceConnector' - Undocumented member.
+newUpdateGlobalSettings ::
+  UpdateGlobalSettings
+newUpdateGlobalSettings =
+  UpdateGlobalSettings'
+    { voiceConnector =
+        Prelude.Nothing
+    }
+
+-- | Undocumented member.
+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` voiceConnector
+
+instance Prelude.NFData UpdateGlobalSettings where
+  rnf UpdateGlobalSettings' {..} =
+    Prelude.rnf voiceConnector
+
+instance Data.ToHeaders UpdateGlobalSettings where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON UpdateGlobalSettings where
+  toJSON UpdateGlobalSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("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/ChimeSdkVoice/UpdatePhoneNumber.hs b/gen/Amazonka/ChimeSdkVoice/UpdatePhoneNumber.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/UpdatePhoneNumber.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { callingName :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    productType :: Prelude.Maybe PhoneNumberProductType,
+    phoneNumberId :: Data.Sensitive 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' - Undocumented member.
+--
+-- 'productType', 'updatePhoneNumber_productType' - Undocumented member.
+--
+-- 'phoneNumberId', 'updatePhoneNumber_phoneNumberId' - Undocumented member.
+newUpdatePhoneNumber ::
+  -- | 'phoneNumberId'
+  Prelude.Text ->
+  UpdatePhoneNumber
+newUpdatePhoneNumber pPhoneNumberId_ =
+  UpdatePhoneNumber'
+    { callingName = Prelude.Nothing,
+      productType = Prelude.Nothing,
+      phoneNumberId =
+        Data._Sensitive Lens.# pPhoneNumberId_
+    }
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+updatePhoneNumber_productType :: Lens.Lens' UpdatePhoneNumber (Prelude.Maybe PhoneNumberProductType)
+updatePhoneNumber_productType = Lens.lens (\UpdatePhoneNumber' {productType} -> productType) (\s@UpdatePhoneNumber' {} a -> s {productType = a} :: UpdatePhoneNumber)
+
+-- | Undocumented member.
+updatePhoneNumber_phoneNumberId :: Lens.Lens' UpdatePhoneNumber Prelude.Text
+updatePhoneNumber_phoneNumberId = Lens.lens (\UpdatePhoneNumber' {phoneNumberId} -> phoneNumberId) (\s@UpdatePhoneNumber' {} a -> s {phoneNumberId = a} :: UpdatePhoneNumber) Prelude.. Data._Sensitive
+
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'updatePhoneNumberResponse_httpStatus' - The response's http status code.
+newUpdatePhoneNumberResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdatePhoneNumberResponse
+newUpdatePhoneNumberResponse pHttpStatus_ =
+  UpdatePhoneNumberResponse'
+    { phoneNumber =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/UpdatePhoneNumberSettings.hs b/gen/Amazonka/ChimeSdkVoice/UpdatePhoneNumberSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/UpdatePhoneNumberSettings.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.UpdatePhoneNumberSettings
+  ( -- * Creating a Request
+    UpdatePhoneNumberSettings (..),
+    newUpdatePhoneNumberSettings,
+
+    -- * Request Lenses
+    updatePhoneNumberSettings_callingName,
+
+    -- * Destructuring the Response
+    UpdatePhoneNumberSettingsResponse (..),
+    newUpdatePhoneNumberSettingsResponse,
+  )
+where
+
+import Amazonka.ChimeSdkVoice.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'
+  { 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' - Undocumented member.
+newUpdatePhoneNumberSettings ::
+  -- | 'callingName'
+  Prelude.Text ->
+  UpdatePhoneNumberSettings
+newUpdatePhoneNumberSettings pCallingName_ =
+  UpdatePhoneNumberSettings'
+    { callingName =
+        Data._Sensitive Lens.# pCallingName_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/UpdateProxySession.hs b/gen/Amazonka/ChimeSdkVoice/UpdateProxySession.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/UpdateProxySession.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { expiryMinutes :: Prelude.Maybe Prelude.Natural,
+    capabilities :: [Capability],
+    voiceConnectorId :: Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'capabilities', 'updateProxySession_capabilities' - Undocumented member.
+--
+-- 'voiceConnectorId', 'updateProxySession_voiceConnectorId' - Undocumented member.
+--
+-- 'proxySessionId', 'updateProxySession_proxySessionId' - Undocumented member.
+newUpdateProxySession ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  -- | 'proxySessionId'
+  Prelude.Text ->
+  UpdateProxySession
+newUpdateProxySession
+  pVoiceConnectorId_
+  pProxySessionId_ =
+    UpdateProxySession'
+      { expiryMinutes =
+          Prelude.Nothing,
+        capabilities = Prelude.mempty,
+        voiceConnectorId = pVoiceConnectorId_,
+        proxySessionId = pProxySessionId_
+      }
+
+-- | Undocumented member.
+updateProxySession_expiryMinutes :: Lens.Lens' UpdateProxySession (Prelude.Maybe Prelude.Natural)
+updateProxySession_expiryMinutes = Lens.lens (\UpdateProxySession' {expiryMinutes} -> expiryMinutes) (\s@UpdateProxySession' {} a -> s {expiryMinutes = a} :: UpdateProxySession)
+
+-- | Undocumented member.
+updateProxySession_capabilities :: Lens.Lens' UpdateProxySession [Capability]
+updateProxySession_capabilities = Lens.lens (\UpdateProxySession' {capabilities} -> capabilities) (\s@UpdateProxySession' {} a -> s {capabilities = a} :: UpdateProxySession) Prelude.. Lens.coerced
+
+-- | Undocumented member.
+updateProxySession_voiceConnectorId :: Lens.Lens' UpdateProxySession Prelude.Text
+updateProxySession_voiceConnectorId = Lens.lens (\UpdateProxySession' {voiceConnectorId} -> voiceConnectorId) (\s@UpdateProxySession' {} a -> s {voiceConnectorId = a} :: UpdateProxySession)
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'updateProxySessionResponse_httpStatus' - The response's http status code.
+newUpdateProxySessionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateProxySessionResponse
+newUpdateProxySessionResponse pHttpStatus_ =
+  UpdateProxySessionResponse'
+    { proxySession =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/UpdateSipMediaApplication.hs b/gen/Amazonka/ChimeSdkVoice/UpdateSipMediaApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/UpdateSipMediaApplication.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { endpoints :: Prelude.Maybe (Prelude.NonEmpty SipMediaApplicationEndpoint),
+    name :: Prelude.Maybe Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'name', 'updateSipMediaApplication_name' - Undocumented member.
+--
+-- 'sipMediaApplicationId', 'updateSipMediaApplication_sipMediaApplicationId' - Undocumented member.
+newUpdateSipMediaApplication ::
+  -- | 'sipMediaApplicationId'
+  Prelude.Text ->
+  UpdateSipMediaApplication
+newUpdateSipMediaApplication pSipMediaApplicationId_ =
+  UpdateSipMediaApplication'
+    { endpoints =
+        Prelude.Nothing,
+      name = Prelude.Nothing,
+      sipMediaApplicationId = pSipMediaApplicationId_
+    }
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+updateSipMediaApplication_name :: Lens.Lens' UpdateSipMediaApplication (Prelude.Maybe Prelude.Text)
+updateSipMediaApplication_name = Lens.lens (\UpdateSipMediaApplication' {name} -> name) (\s@UpdateSipMediaApplication' {} a -> s {name = a} :: UpdateSipMediaApplication)
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'updateSipMediaApplicationResponse_httpStatus' - The response's http status code.
+newUpdateSipMediaApplicationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateSipMediaApplicationResponse
+newUpdateSipMediaApplicationResponse pHttpStatus_ =
+  UpdateSipMediaApplicationResponse'
+    { sipMediaApplication =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/UpdateSipMediaApplicationCall.hs b/gen/Amazonka/ChimeSdkVoice/UpdateSipMediaApplicationCall.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/UpdateSipMediaApplicationCall.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { sipMediaApplicationId :: Prelude.Text,
+    transactionId :: Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'transactionId', 'updateSipMediaApplicationCall_transactionId' - Undocumented member.
+--
+-- 'arguments', 'updateSipMediaApplicationCall_arguments' - Undocumented member.
+newUpdateSipMediaApplicationCall ::
+  -- | 'sipMediaApplicationId'
+  Prelude.Text ->
+  -- | 'transactionId'
+  Prelude.Text ->
+  UpdateSipMediaApplicationCall
+newUpdateSipMediaApplicationCall
+  pSipMediaApplicationId_
+  pTransactionId_ =
+    UpdateSipMediaApplicationCall'
+      { sipMediaApplicationId =
+          pSipMediaApplicationId_,
+        transactionId = pTransactionId_,
+        arguments = Prelude.mempty
+      }
+
+-- | Undocumented member.
+updateSipMediaApplicationCall_sipMediaApplicationId :: Lens.Lens' UpdateSipMediaApplicationCall Prelude.Text
+updateSipMediaApplicationCall_sipMediaApplicationId = Lens.lens (\UpdateSipMediaApplicationCall' {sipMediaApplicationId} -> sipMediaApplicationId) (\s@UpdateSipMediaApplicationCall' {} a -> s {sipMediaApplicationId = a} :: UpdateSipMediaApplicationCall)
+
+-- | Undocumented member.
+updateSipMediaApplicationCall_transactionId :: Lens.Lens' UpdateSipMediaApplicationCall Prelude.Text
+updateSipMediaApplicationCall_transactionId = Lens.lens (\UpdateSipMediaApplicationCall' {transactionId} -> transactionId) (\s@UpdateSipMediaApplicationCall' {} a -> s {transactionId = a} :: UpdateSipMediaApplicationCall)
+
+-- | Undocumented member.
+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/ChimeSdkVoice/UpdateSipRule.hs b/gen/Amazonka/ChimeSdkVoice/UpdateSipRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/UpdateSipRule.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { disabled :: Prelude.Maybe Prelude.Bool,
+    targetApplications :: Prelude.Maybe (Prelude.NonEmpty SipRuleTargetApplication),
+    sipRuleId :: Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'targetApplications', 'updateSipRule_targetApplications' - Undocumented member.
+--
+-- 'sipRuleId', 'updateSipRule_sipRuleId' - Undocumented member.
+--
+-- 'name', 'updateSipRule_name' - Undocumented member.
+newUpdateSipRule ::
+  -- | 'sipRuleId'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  UpdateSipRule
+newUpdateSipRule pSipRuleId_ pName_ =
+  UpdateSipRule'
+    { disabled = Prelude.Nothing,
+      targetApplications = Prelude.Nothing,
+      sipRuleId = pSipRuleId_,
+      name = pName_
+    }
+
+-- | Undocumented member.
+updateSipRule_disabled :: Lens.Lens' UpdateSipRule (Prelude.Maybe Prelude.Bool)
+updateSipRule_disabled = Lens.lens (\UpdateSipRule' {disabled} -> disabled) (\s@UpdateSipRule' {} a -> s {disabled = a} :: UpdateSipRule)
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+updateSipRule_sipRuleId :: Lens.Lens' UpdateSipRule Prelude.Text
+updateSipRule_sipRuleId = Lens.lens (\UpdateSipRule' {sipRuleId} -> sipRuleId) (\s@UpdateSipRule' {} a -> s {sipRuleId = a} :: UpdateSipRule)
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'updateSipRuleResponse_httpStatus' - The response's http status code.
+newUpdateSipRuleResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateSipRuleResponse
+newUpdateSipRuleResponse pHttpStatus_ =
+  UpdateSipRuleResponse'
+    { sipRule = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/UpdateVoiceConnector.hs b/gen/Amazonka/ChimeSdkVoice/UpdateVoiceConnector.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/UpdateVoiceConnector.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { voiceConnectorId :: Prelude.Text,
+    name :: Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'name', 'updateVoiceConnector_name' - Undocumented member.
+--
+-- 'requireEncryption', 'updateVoiceConnector_requireEncryption' - Undocumented member.
+newUpdateVoiceConnector ::
+  -- | 'voiceConnectorId'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'requireEncryption'
+  Prelude.Bool ->
+  UpdateVoiceConnector
+newUpdateVoiceConnector
+  pVoiceConnectorId_
+  pName_
+  pRequireEncryption_ =
+    UpdateVoiceConnector'
+      { voiceConnectorId =
+          pVoiceConnectorId_,
+        name = pName_,
+        requireEncryption = pRequireEncryption_
+      }
+
+-- | Undocumented member.
+updateVoiceConnector_voiceConnectorId :: Lens.Lens' UpdateVoiceConnector Prelude.Text
+updateVoiceConnector_voiceConnectorId = Lens.lens (\UpdateVoiceConnector' {voiceConnectorId} -> voiceConnectorId) (\s@UpdateVoiceConnector' {} a -> s {voiceConnectorId = a} :: UpdateVoiceConnector)
+
+-- | Undocumented member.
+updateVoiceConnector_name :: Lens.Lens' UpdateVoiceConnector Prelude.Text
+updateVoiceConnector_name = Lens.lens (\UpdateVoiceConnector' {name} -> name) (\s@UpdateVoiceConnector' {} a -> s {name = a} :: UpdateVoiceConnector)
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'updateVoiceConnectorResponse_httpStatus' - The response's http status code.
+newUpdateVoiceConnectorResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateVoiceConnectorResponse
+newUpdateVoiceConnectorResponse pHttpStatus_ =
+  UpdateVoiceConnectorResponse'
+    { voiceConnector =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/UpdateVoiceConnectorGroup.hs b/gen/Amazonka/ChimeSdkVoice/UpdateVoiceConnectorGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/UpdateVoiceConnectorGroup.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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { voiceConnectorGroupId :: Prelude.Text,
+    name :: Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'name', 'updateVoiceConnectorGroup_name' - Undocumented member.
+--
+-- 'voiceConnectorItems', 'updateVoiceConnectorGroup_voiceConnectorItems' - Undocumented member.
+newUpdateVoiceConnectorGroup ::
+  -- | 'voiceConnectorGroupId'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  UpdateVoiceConnectorGroup
+newUpdateVoiceConnectorGroup
+  pVoiceConnectorGroupId_
+  pName_ =
+    UpdateVoiceConnectorGroup'
+      { voiceConnectorGroupId =
+          pVoiceConnectorGroupId_,
+        name = pName_,
+        voiceConnectorItems = Prelude.mempty
+      }
+
+-- | Undocumented member.
+updateVoiceConnectorGroup_voiceConnectorGroupId :: Lens.Lens' UpdateVoiceConnectorGroup Prelude.Text
+updateVoiceConnectorGroup_voiceConnectorGroupId = Lens.lens (\UpdateVoiceConnectorGroup' {voiceConnectorGroupId} -> voiceConnectorGroupId) (\s@UpdateVoiceConnectorGroup' {} a -> s {voiceConnectorGroupId = a} :: UpdateVoiceConnectorGroup)
+
+-- | Undocumented member.
+updateVoiceConnectorGroup_name :: Lens.Lens' UpdateVoiceConnectorGroup Prelude.Text
+updateVoiceConnectorGroup_name = Lens.lens (\UpdateVoiceConnectorGroup' {name} -> name) (\s@UpdateVoiceConnectorGroup' {} a -> s {name = a} :: UpdateVoiceConnectorGroup)
+
+-- | Undocumented member.
+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'
+  { 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' - Undocumented member.
+--
+-- 'httpStatus', 'updateVoiceConnectorGroupResponse_httpStatus' - The response's http status code.
+newUpdateVoiceConnectorGroupResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateVoiceConnectorGroupResponse
+newUpdateVoiceConnectorGroupResponse pHttpStatus_ =
+  UpdateVoiceConnectorGroupResponse'
+    { voiceConnectorGroup =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+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/ChimeSdkVoice/ValidateE911Address.hs b/gen/Amazonka/ChimeSdkVoice/ValidateE911Address.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/ValidateE911Address.hs
@@ -0,0 +1,286 @@
+{-# 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.ChimeSdkVoice.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.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'
+  { awsAccountId :: Prelude.Text,
+    streetNumber :: Data.Sensitive Prelude.Text,
+    streetInfo :: Data.Sensitive Prelude.Text,
+    city :: Data.Sensitive Prelude.Text,
+    state :: Data.Sensitive Prelude.Text,
+    country :: Data.Sensitive Prelude.Text,
+    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' - Undocumented member.
+--
+-- 'streetNumber', 'validateE911Address_streetNumber' - Undocumented member.
+--
+-- 'streetInfo', 'validateE911Address_streetInfo' - Undocumented member.
+--
+-- 'city', 'validateE911Address_city' - Undocumented member.
+--
+-- 'state', 'validateE911Address_state' - Undocumented member.
+--
+-- 'country', 'validateE911Address_country' - Undocumented member.
+--
+-- 'postalCode', 'validateE911Address_postalCode' - Undocumented member.
+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_
+      }
+
+-- | Undocumented member.
+validateE911Address_awsAccountId :: Lens.Lens' ValidateE911Address Prelude.Text
+validateE911Address_awsAccountId = Lens.lens (\ValidateE911Address' {awsAccountId} -> awsAccountId) (\s@ValidateE911Address' {} a -> s {awsAccountId = a} :: ValidateE911Address)
+
+-- | Undocumented member.
+validateE911Address_streetNumber :: Lens.Lens' ValidateE911Address Prelude.Text
+validateE911Address_streetNumber = Lens.lens (\ValidateE911Address' {streetNumber} -> streetNumber) (\s@ValidateE911Address' {} a -> s {streetNumber = a} :: ValidateE911Address) Prelude.. Data._Sensitive
+
+-- | Undocumented member.
+validateE911Address_streetInfo :: Lens.Lens' ValidateE911Address Prelude.Text
+validateE911Address_streetInfo = Lens.lens (\ValidateE911Address' {streetInfo} -> streetInfo) (\s@ValidateE911Address' {} a -> s {streetInfo = a} :: ValidateE911Address) Prelude.. Data._Sensitive
+
+-- | Undocumented member.
+validateE911Address_city :: Lens.Lens' ValidateE911Address Prelude.Text
+validateE911Address_city = Lens.lens (\ValidateE911Address' {city} -> city) (\s@ValidateE911Address' {} a -> s {city = a} :: ValidateE911Address) Prelude.. Data._Sensitive
+
+-- | Undocumented member.
+validateE911Address_state :: Lens.Lens' ValidateE911Address Prelude.Text
+validateE911Address_state = Lens.lens (\ValidateE911Address' {state} -> state) (\s@ValidateE911Address' {} a -> s {state = a} :: ValidateE911Address) Prelude.. Data._Sensitive
+
+-- | Undocumented member.
+validateE911Address_country :: Lens.Lens' ValidateE911Address Prelude.Text
+validateE911Address_country = Lens.lens (\ValidateE911Address' {country} -> country) (\s@ValidateE911Address' {} a -> s {country = a} :: ValidateE911Address) Prelude.. Data._Sensitive
+
+-- | Undocumented member.
+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'
+  { address :: Prelude.Maybe Address,
+    addressExternalId :: Prelude.Maybe Prelude.Text,
+    candidateAddressList :: Prelude.Maybe [CandidateAddress],
+    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' - Undocumented member.
+--
+-- 'addressExternalId', 'validateE911AddressResponse_addressExternalId' - Undocumented member.
+--
+-- 'candidateAddressList', 'validateE911AddressResponse_candidateAddressList' - Undocumented member.
+--
+-- 'validationResult', 'validateE911AddressResponse_validationResult' - Undocumented member.
+--
+-- '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_
+    }
+
+-- | Undocumented member.
+validateE911AddressResponse_address :: Lens.Lens' ValidateE911AddressResponse (Prelude.Maybe Address)
+validateE911AddressResponse_address = Lens.lens (\ValidateE911AddressResponse' {address} -> address) (\s@ValidateE911AddressResponse' {} a -> s {address = a} :: ValidateE911AddressResponse)
+
+-- | Undocumented member.
+validateE911AddressResponse_addressExternalId :: Lens.Lens' ValidateE911AddressResponse (Prelude.Maybe Prelude.Text)
+validateE911AddressResponse_addressExternalId = Lens.lens (\ValidateE911AddressResponse' {addressExternalId} -> addressExternalId) (\s@ValidateE911AddressResponse' {} a -> s {addressExternalId = a} :: ValidateE911AddressResponse)
+
+-- | Undocumented member.
+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
+
+-- | Undocumented member.
+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/ChimeSdkVoice/Waiters.hs b/gen/Amazonka/ChimeSdkVoice/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkVoice/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.ChimeSdkVoice.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.ChimeSdkVoice.Waiters where
+
+import Amazonka.ChimeSdkVoice.Lens
+import Amazonka.ChimeSdkVoice.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.ChimeSdkVoice
+import Test.Amazonka.ChimeSdkVoice.Internal
+import Test.Tasty
+
+main :: IO ()
+main =
+  defaultMain $
+    testGroup
+      "ChimeSdkVoice"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/Amazonka/ChimeSdkVoice.hs b/test/Test/Amazonka/ChimeSdkVoice.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/ChimeSdkVoice.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.ChimeSdkVoice
+-- 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.ChimeSdkVoice
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/ChimeSdkVoice/Internal.hs b/test/Test/Amazonka/ChimeSdkVoice/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/ChimeSdkVoice/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.ChimeSdkVoice.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.ChimeSdkVoice.Internal where
diff --git a/test/Test/Amazonka/Gen/ChimeSdkVoice.hs b/test/Test/Amazonka/Gen/ChimeSdkVoice.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/ChimeSdkVoice.hs
@@ -0,0 +1,1518 @@
+{-# 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.ChimeSdkVoice
+-- 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.ChimeSdkVoice where
+
+import Amazonka.ChimeSdkVoice
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.ChimeSdkVoice.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"
+--         [ requestAssociatePhoneNumbersWithVoiceConnector $
+--             newAssociatePhoneNumbersWithVoiceConnector
+--
+--         , requestAssociatePhoneNumbersWithVoiceConnectorGroup $
+--             newAssociatePhoneNumbersWithVoiceConnectorGroup
+--
+--         , requestBatchDeletePhoneNumber $
+--             newBatchDeletePhoneNumber
+--
+--         , requestBatchUpdatePhoneNumber $
+--             newBatchUpdatePhoneNumber
+--
+--         , requestCreatePhoneNumberOrder $
+--             newCreatePhoneNumberOrder
+--
+--         , requestCreateProxySession $
+--             newCreateProxySession
+--
+--         , requestCreateSipMediaApplication $
+--             newCreateSipMediaApplication
+--
+--         , requestCreateSipMediaApplicationCall $
+--             newCreateSipMediaApplicationCall
+--
+--         , requestCreateSipRule $
+--             newCreateSipRule
+--
+--         , requestCreateVoiceConnector $
+--             newCreateVoiceConnector
+--
+--         , requestCreateVoiceConnectorGroup $
+--             newCreateVoiceConnectorGroup
+--
+--         , requestDeletePhoneNumber $
+--             newDeletePhoneNumber
+--
+--         , requestDeleteProxySession $
+--             newDeleteProxySession
+--
+--         , requestDeleteSipMediaApplication $
+--             newDeleteSipMediaApplication
+--
+--         , requestDeleteSipRule $
+--             newDeleteSipRule
+--
+--         , requestDeleteVoiceConnector $
+--             newDeleteVoiceConnector
+--
+--         , requestDeleteVoiceConnectorEmergencyCallingConfiguration $
+--             newDeleteVoiceConnectorEmergencyCallingConfiguration
+--
+--         , requestDeleteVoiceConnectorGroup $
+--             newDeleteVoiceConnectorGroup
+--
+--         , requestDeleteVoiceConnectorOrigination $
+--             newDeleteVoiceConnectorOrigination
+--
+--         , requestDeleteVoiceConnectorProxy $
+--             newDeleteVoiceConnectorProxy
+--
+--         , requestDeleteVoiceConnectorStreamingConfiguration $
+--             newDeleteVoiceConnectorStreamingConfiguration
+--
+--         , requestDeleteVoiceConnectorTermination $
+--             newDeleteVoiceConnectorTermination
+--
+--         , requestDeleteVoiceConnectorTerminationCredentials $
+--             newDeleteVoiceConnectorTerminationCredentials
+--
+--         , requestDisassociatePhoneNumbersFromVoiceConnector $
+--             newDisassociatePhoneNumbersFromVoiceConnector
+--
+--         , requestDisassociatePhoneNumbersFromVoiceConnectorGroup $
+--             newDisassociatePhoneNumbersFromVoiceConnectorGroup
+--
+--         , requestGetGlobalSettings $
+--             newGetGlobalSettings
+--
+--         , requestGetPhoneNumber $
+--             newGetPhoneNumber
+--
+--         , requestGetPhoneNumberOrder $
+--             newGetPhoneNumberOrder
+--
+--         , requestGetPhoneNumberSettings $
+--             newGetPhoneNumberSettings
+--
+--         , requestGetProxySession $
+--             newGetProxySession
+--
+--         , requestGetSipMediaApplication $
+--             newGetSipMediaApplication
+--
+--         , requestGetSipMediaApplicationAlexaSkillConfiguration $
+--             newGetSipMediaApplicationAlexaSkillConfiguration
+--
+--         , requestGetSipMediaApplicationLoggingConfiguration $
+--             newGetSipMediaApplicationLoggingConfiguration
+--
+--         , requestGetSipRule $
+--             newGetSipRule
+--
+--         , requestGetVoiceConnector $
+--             newGetVoiceConnector
+--
+--         , requestGetVoiceConnectorEmergencyCallingConfiguration $
+--             newGetVoiceConnectorEmergencyCallingConfiguration
+--
+--         , requestGetVoiceConnectorGroup $
+--             newGetVoiceConnectorGroup
+--
+--         , requestGetVoiceConnectorLoggingConfiguration $
+--             newGetVoiceConnectorLoggingConfiguration
+--
+--         , requestGetVoiceConnectorOrigination $
+--             newGetVoiceConnectorOrigination
+--
+--         , requestGetVoiceConnectorProxy $
+--             newGetVoiceConnectorProxy
+--
+--         , requestGetVoiceConnectorStreamingConfiguration $
+--             newGetVoiceConnectorStreamingConfiguration
+--
+--         , requestGetVoiceConnectorTermination $
+--             newGetVoiceConnectorTermination
+--
+--         , requestGetVoiceConnectorTerminationHealth $
+--             newGetVoiceConnectorTerminationHealth
+--
+--         , requestListAvailableVoiceConnectorRegions $
+--             newListAvailableVoiceConnectorRegions
+--
+--         , requestListPhoneNumberOrders $
+--             newListPhoneNumberOrders
+--
+--         , requestListPhoneNumbers $
+--             newListPhoneNumbers
+--
+--         , requestListProxySessions $
+--             newListProxySessions
+--
+--         , requestListSipMediaApplications $
+--             newListSipMediaApplications
+--
+--         , requestListSipRules $
+--             newListSipRules
+--
+--         , requestListSupportedPhoneNumberCountries $
+--             newListSupportedPhoneNumberCountries
+--
+--         , requestListVoiceConnectorGroups $
+--             newListVoiceConnectorGroups
+--
+--         , requestListVoiceConnectorTerminationCredentials $
+--             newListVoiceConnectorTerminationCredentials
+--
+--         , requestListVoiceConnectors $
+--             newListVoiceConnectors
+--
+--         , requestPutSipMediaApplicationAlexaSkillConfiguration $
+--             newPutSipMediaApplicationAlexaSkillConfiguration
+--
+--         , requestPutSipMediaApplicationLoggingConfiguration $
+--             newPutSipMediaApplicationLoggingConfiguration
+--
+--         , requestPutVoiceConnectorEmergencyCallingConfiguration $
+--             newPutVoiceConnectorEmergencyCallingConfiguration
+--
+--         , requestPutVoiceConnectorLoggingConfiguration $
+--             newPutVoiceConnectorLoggingConfiguration
+--
+--         , requestPutVoiceConnectorOrigination $
+--             newPutVoiceConnectorOrigination
+--
+--         , requestPutVoiceConnectorProxy $
+--             newPutVoiceConnectorProxy
+--
+--         , requestPutVoiceConnectorStreamingConfiguration $
+--             newPutVoiceConnectorStreamingConfiguration
+--
+--         , requestPutVoiceConnectorTermination $
+--             newPutVoiceConnectorTermination
+--
+--         , requestPutVoiceConnectorTerminationCredentials $
+--             newPutVoiceConnectorTerminationCredentials
+--
+--         , requestRestorePhoneNumber $
+--             newRestorePhoneNumber
+--
+--         , requestSearchAvailablePhoneNumbers $
+--             newSearchAvailablePhoneNumbers
+--
+--         , requestUpdateGlobalSettings $
+--             newUpdateGlobalSettings
+--
+--         , requestUpdatePhoneNumber $
+--             newUpdatePhoneNumber
+--
+--         , requestUpdatePhoneNumberSettings $
+--             newUpdatePhoneNumberSettings
+--
+--         , requestUpdateProxySession $
+--             newUpdateProxySession
+--
+--         , requestUpdateSipMediaApplication $
+--             newUpdateSipMediaApplication
+--
+--         , requestUpdateSipMediaApplicationCall $
+--             newUpdateSipMediaApplicationCall
+--
+--         , requestUpdateSipRule $
+--             newUpdateSipRule
+--
+--         , requestUpdateVoiceConnector $
+--             newUpdateVoiceConnector
+--
+--         , requestUpdateVoiceConnectorGroup $
+--             newUpdateVoiceConnectorGroup
+--
+--         , requestValidateE911Address $
+--             newValidateE911Address
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseAssociatePhoneNumbersWithVoiceConnector $
+--             newAssociatePhoneNumbersWithVoiceConnectorResponse
+--
+--         , responseAssociatePhoneNumbersWithVoiceConnectorGroup $
+--             newAssociatePhoneNumbersWithVoiceConnectorGroupResponse
+--
+--         , responseBatchDeletePhoneNumber $
+--             newBatchDeletePhoneNumberResponse
+--
+--         , responseBatchUpdatePhoneNumber $
+--             newBatchUpdatePhoneNumberResponse
+--
+--         , responseCreatePhoneNumberOrder $
+--             newCreatePhoneNumberOrderResponse
+--
+--         , responseCreateProxySession $
+--             newCreateProxySessionResponse
+--
+--         , responseCreateSipMediaApplication $
+--             newCreateSipMediaApplicationResponse
+--
+--         , responseCreateSipMediaApplicationCall $
+--             newCreateSipMediaApplicationCallResponse
+--
+--         , responseCreateSipRule $
+--             newCreateSipRuleResponse
+--
+--         , responseCreateVoiceConnector $
+--             newCreateVoiceConnectorResponse
+--
+--         , responseCreateVoiceConnectorGroup $
+--             newCreateVoiceConnectorGroupResponse
+--
+--         , responseDeletePhoneNumber $
+--             newDeletePhoneNumberResponse
+--
+--         , responseDeleteProxySession $
+--             newDeleteProxySessionResponse
+--
+--         , responseDeleteSipMediaApplication $
+--             newDeleteSipMediaApplicationResponse
+--
+--         , responseDeleteSipRule $
+--             newDeleteSipRuleResponse
+--
+--         , responseDeleteVoiceConnector $
+--             newDeleteVoiceConnectorResponse
+--
+--         , responseDeleteVoiceConnectorEmergencyCallingConfiguration $
+--             newDeleteVoiceConnectorEmergencyCallingConfigurationResponse
+--
+--         , responseDeleteVoiceConnectorGroup $
+--             newDeleteVoiceConnectorGroupResponse
+--
+--         , responseDeleteVoiceConnectorOrigination $
+--             newDeleteVoiceConnectorOriginationResponse
+--
+--         , responseDeleteVoiceConnectorProxy $
+--             newDeleteVoiceConnectorProxyResponse
+--
+--         , responseDeleteVoiceConnectorStreamingConfiguration $
+--             newDeleteVoiceConnectorStreamingConfigurationResponse
+--
+--         , responseDeleteVoiceConnectorTermination $
+--             newDeleteVoiceConnectorTerminationResponse
+--
+--         , responseDeleteVoiceConnectorTerminationCredentials $
+--             newDeleteVoiceConnectorTerminationCredentialsResponse
+--
+--         , responseDisassociatePhoneNumbersFromVoiceConnector $
+--             newDisassociatePhoneNumbersFromVoiceConnectorResponse
+--
+--         , responseDisassociatePhoneNumbersFromVoiceConnectorGroup $
+--             newDisassociatePhoneNumbersFromVoiceConnectorGroupResponse
+--
+--         , responseGetGlobalSettings $
+--             newGetGlobalSettingsResponse
+--
+--         , responseGetPhoneNumber $
+--             newGetPhoneNumberResponse
+--
+--         , responseGetPhoneNumberOrder $
+--             newGetPhoneNumberOrderResponse
+--
+--         , responseGetPhoneNumberSettings $
+--             newGetPhoneNumberSettingsResponse
+--
+--         , responseGetProxySession $
+--             newGetProxySessionResponse
+--
+--         , responseGetSipMediaApplication $
+--             newGetSipMediaApplicationResponse
+--
+--         , responseGetSipMediaApplicationAlexaSkillConfiguration $
+--             newGetSipMediaApplicationAlexaSkillConfigurationResponse
+--
+--         , responseGetSipMediaApplicationLoggingConfiguration $
+--             newGetSipMediaApplicationLoggingConfigurationResponse
+--
+--         , responseGetSipRule $
+--             newGetSipRuleResponse
+--
+--         , responseGetVoiceConnector $
+--             newGetVoiceConnectorResponse
+--
+--         , responseGetVoiceConnectorEmergencyCallingConfiguration $
+--             newGetVoiceConnectorEmergencyCallingConfigurationResponse
+--
+--         , responseGetVoiceConnectorGroup $
+--             newGetVoiceConnectorGroupResponse
+--
+--         , responseGetVoiceConnectorLoggingConfiguration $
+--             newGetVoiceConnectorLoggingConfigurationResponse
+--
+--         , responseGetVoiceConnectorOrigination $
+--             newGetVoiceConnectorOriginationResponse
+--
+--         , responseGetVoiceConnectorProxy $
+--             newGetVoiceConnectorProxyResponse
+--
+--         , responseGetVoiceConnectorStreamingConfiguration $
+--             newGetVoiceConnectorStreamingConfigurationResponse
+--
+--         , responseGetVoiceConnectorTermination $
+--             newGetVoiceConnectorTerminationResponse
+--
+--         , responseGetVoiceConnectorTerminationHealth $
+--             newGetVoiceConnectorTerminationHealthResponse
+--
+--         , responseListAvailableVoiceConnectorRegions $
+--             newListAvailableVoiceConnectorRegionsResponse
+--
+--         , responseListPhoneNumberOrders $
+--             newListPhoneNumberOrdersResponse
+--
+--         , responseListPhoneNumbers $
+--             newListPhoneNumbersResponse
+--
+--         , responseListProxySessions $
+--             newListProxySessionsResponse
+--
+--         , responseListSipMediaApplications $
+--             newListSipMediaApplicationsResponse
+--
+--         , responseListSipRules $
+--             newListSipRulesResponse
+--
+--         , responseListSupportedPhoneNumberCountries $
+--             newListSupportedPhoneNumberCountriesResponse
+--
+--         , responseListVoiceConnectorGroups $
+--             newListVoiceConnectorGroupsResponse
+--
+--         , responseListVoiceConnectorTerminationCredentials $
+--             newListVoiceConnectorTerminationCredentialsResponse
+--
+--         , responseListVoiceConnectors $
+--             newListVoiceConnectorsResponse
+--
+--         , responsePutSipMediaApplicationAlexaSkillConfiguration $
+--             newPutSipMediaApplicationAlexaSkillConfigurationResponse
+--
+--         , responsePutSipMediaApplicationLoggingConfiguration $
+--             newPutSipMediaApplicationLoggingConfigurationResponse
+--
+--         , responsePutVoiceConnectorEmergencyCallingConfiguration $
+--             newPutVoiceConnectorEmergencyCallingConfigurationResponse
+--
+--         , responsePutVoiceConnectorLoggingConfiguration $
+--             newPutVoiceConnectorLoggingConfigurationResponse
+--
+--         , responsePutVoiceConnectorOrigination $
+--             newPutVoiceConnectorOriginationResponse
+--
+--         , responsePutVoiceConnectorProxy $
+--             newPutVoiceConnectorProxyResponse
+--
+--         , responsePutVoiceConnectorStreamingConfiguration $
+--             newPutVoiceConnectorStreamingConfigurationResponse
+--
+--         , responsePutVoiceConnectorTermination $
+--             newPutVoiceConnectorTerminationResponse
+--
+--         , responsePutVoiceConnectorTerminationCredentials $
+--             newPutVoiceConnectorTerminationCredentialsResponse
+--
+--         , responseRestorePhoneNumber $
+--             newRestorePhoneNumberResponse
+--
+--         , responseSearchAvailablePhoneNumbers $
+--             newSearchAvailablePhoneNumbersResponse
+--
+--         , responseUpdateGlobalSettings $
+--             newUpdateGlobalSettingsResponse
+--
+--         , responseUpdatePhoneNumber $
+--             newUpdatePhoneNumberResponse
+--
+--         , responseUpdatePhoneNumberSettings $
+--             newUpdatePhoneNumberSettingsResponse
+--
+--         , responseUpdateProxySession $
+--             newUpdateProxySessionResponse
+--
+--         , responseUpdateSipMediaApplication $
+--             newUpdateSipMediaApplicationResponse
+--
+--         , responseUpdateSipMediaApplicationCall $
+--             newUpdateSipMediaApplicationCallResponse
+--
+--         , responseUpdateSipRule $
+--             newUpdateSipRuleResponse
+--
+--         , responseUpdateVoiceConnector $
+--             newUpdateVoiceConnectorResponse
+--
+--         , responseUpdateVoiceConnectorGroup $
+--             newUpdateVoiceConnectorGroupResponse
+--
+--         , responseValidateE911Address $
+--             newValidateE911AddressResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestAssociatePhoneNumbersWithVoiceConnector :: AssociatePhoneNumbersWithVoiceConnector -> TestTree
+requestAssociatePhoneNumbersWithVoiceConnector =
+  req
+    "AssociatePhoneNumbersWithVoiceConnector"
+    "fixture/AssociatePhoneNumbersWithVoiceConnector.yaml"
+
+requestAssociatePhoneNumbersWithVoiceConnectorGroup :: AssociatePhoneNumbersWithVoiceConnectorGroup -> TestTree
+requestAssociatePhoneNumbersWithVoiceConnectorGroup =
+  req
+    "AssociatePhoneNumbersWithVoiceConnectorGroup"
+    "fixture/AssociatePhoneNumbersWithVoiceConnectorGroup.yaml"
+
+requestBatchDeletePhoneNumber :: BatchDeletePhoneNumber -> TestTree
+requestBatchDeletePhoneNumber =
+  req
+    "BatchDeletePhoneNumber"
+    "fixture/BatchDeletePhoneNumber.yaml"
+
+requestBatchUpdatePhoneNumber :: BatchUpdatePhoneNumber -> TestTree
+requestBatchUpdatePhoneNumber =
+  req
+    "BatchUpdatePhoneNumber"
+    "fixture/BatchUpdatePhoneNumber.yaml"
+
+requestCreatePhoneNumberOrder :: CreatePhoneNumberOrder -> TestTree
+requestCreatePhoneNumberOrder =
+  req
+    "CreatePhoneNumberOrder"
+    "fixture/CreatePhoneNumberOrder.yaml"
+
+requestCreateProxySession :: CreateProxySession -> TestTree
+requestCreateProxySession =
+  req
+    "CreateProxySession"
+    "fixture/CreateProxySession.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"
+
+requestCreateVoiceConnector :: CreateVoiceConnector -> TestTree
+requestCreateVoiceConnector =
+  req
+    "CreateVoiceConnector"
+    "fixture/CreateVoiceConnector.yaml"
+
+requestCreateVoiceConnectorGroup :: CreateVoiceConnectorGroup -> TestTree
+requestCreateVoiceConnectorGroup =
+  req
+    "CreateVoiceConnectorGroup"
+    "fixture/CreateVoiceConnectorGroup.yaml"
+
+requestDeletePhoneNumber :: DeletePhoneNumber -> TestTree
+requestDeletePhoneNumber =
+  req
+    "DeletePhoneNumber"
+    "fixture/DeletePhoneNumber.yaml"
+
+requestDeleteProxySession :: DeleteProxySession -> TestTree
+requestDeleteProxySession =
+  req
+    "DeleteProxySession"
+    "fixture/DeleteProxySession.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"
+
+requestDisassociatePhoneNumbersFromVoiceConnector :: DisassociatePhoneNumbersFromVoiceConnector -> TestTree
+requestDisassociatePhoneNumbersFromVoiceConnector =
+  req
+    "DisassociatePhoneNumbersFromVoiceConnector"
+    "fixture/DisassociatePhoneNumbersFromVoiceConnector.yaml"
+
+requestDisassociatePhoneNumbersFromVoiceConnectorGroup :: DisassociatePhoneNumbersFromVoiceConnectorGroup -> TestTree
+requestDisassociatePhoneNumbersFromVoiceConnectorGroup =
+  req
+    "DisassociatePhoneNumbersFromVoiceConnectorGroup"
+    "fixture/DisassociatePhoneNumbersFromVoiceConnectorGroup.yaml"
+
+requestGetGlobalSettings :: GetGlobalSettings -> TestTree
+requestGetGlobalSettings =
+  req
+    "GetGlobalSettings"
+    "fixture/GetGlobalSettings.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"
+
+requestGetSipMediaApplication :: GetSipMediaApplication -> TestTree
+requestGetSipMediaApplication =
+  req
+    "GetSipMediaApplication"
+    "fixture/GetSipMediaApplication.yaml"
+
+requestGetSipMediaApplicationAlexaSkillConfiguration :: GetSipMediaApplicationAlexaSkillConfiguration -> TestTree
+requestGetSipMediaApplicationAlexaSkillConfiguration =
+  req
+    "GetSipMediaApplicationAlexaSkillConfiguration"
+    "fixture/GetSipMediaApplicationAlexaSkillConfiguration.yaml"
+
+requestGetSipMediaApplicationLoggingConfiguration :: GetSipMediaApplicationLoggingConfiguration -> TestTree
+requestGetSipMediaApplicationLoggingConfiguration =
+  req
+    "GetSipMediaApplicationLoggingConfiguration"
+    "fixture/GetSipMediaApplicationLoggingConfiguration.yaml"
+
+requestGetSipRule :: GetSipRule -> TestTree
+requestGetSipRule =
+  req
+    "GetSipRule"
+    "fixture/GetSipRule.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"
+
+requestListAvailableVoiceConnectorRegions :: ListAvailableVoiceConnectorRegions -> TestTree
+requestListAvailableVoiceConnectorRegions =
+  req
+    "ListAvailableVoiceConnectorRegions"
+    "fixture/ListAvailableVoiceConnectorRegions.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"
+
+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"
+
+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"
+
+requestPutSipMediaApplicationAlexaSkillConfiguration :: PutSipMediaApplicationAlexaSkillConfiguration -> TestTree
+requestPutSipMediaApplicationAlexaSkillConfiguration =
+  req
+    "PutSipMediaApplicationAlexaSkillConfiguration"
+    "fixture/PutSipMediaApplicationAlexaSkillConfiguration.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"
+
+requestRestorePhoneNumber :: RestorePhoneNumber -> TestTree
+requestRestorePhoneNumber =
+  req
+    "RestorePhoneNumber"
+    "fixture/RestorePhoneNumber.yaml"
+
+requestSearchAvailablePhoneNumbers :: SearchAvailablePhoneNumbers -> TestTree
+requestSearchAvailablePhoneNumbers =
+  req
+    "SearchAvailablePhoneNumbers"
+    "fixture/SearchAvailablePhoneNumbers.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"
+
+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"
+
+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
+
+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)
+
+responseBatchDeletePhoneNumber :: BatchDeletePhoneNumberResponse -> TestTree
+responseBatchDeletePhoneNumber =
+  res
+    "BatchDeletePhoneNumberResponse"
+    "fixture/BatchDeletePhoneNumberResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy BatchDeletePhoneNumber)
+
+responseBatchUpdatePhoneNumber :: BatchUpdatePhoneNumberResponse -> TestTree
+responseBatchUpdatePhoneNumber =
+  res
+    "BatchUpdatePhoneNumberResponse"
+    "fixture/BatchUpdatePhoneNumberResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy BatchUpdatePhoneNumber)
+
+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)
+
+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)
+
+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)
+
+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)
+
+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)
+
+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)
+
+responseGetGlobalSettings :: GetGlobalSettingsResponse -> TestTree
+responseGetGlobalSettings =
+  res
+    "GetGlobalSettingsResponse"
+    "fixture/GetGlobalSettingsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetGlobalSettings)
+
+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)
+
+responseGetSipMediaApplication :: GetSipMediaApplicationResponse -> TestTree
+responseGetSipMediaApplication =
+  res
+    "GetSipMediaApplicationResponse"
+    "fixture/GetSipMediaApplicationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetSipMediaApplication)
+
+responseGetSipMediaApplicationAlexaSkillConfiguration :: GetSipMediaApplicationAlexaSkillConfigurationResponse -> TestTree
+responseGetSipMediaApplicationAlexaSkillConfiguration =
+  res
+    "GetSipMediaApplicationAlexaSkillConfigurationResponse"
+    "fixture/GetSipMediaApplicationAlexaSkillConfigurationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetSipMediaApplicationAlexaSkillConfiguration)
+
+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)
+
+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)
+
+responseListAvailableVoiceConnectorRegions :: ListAvailableVoiceConnectorRegionsResponse -> TestTree
+responseListAvailableVoiceConnectorRegions =
+  res
+    "ListAvailableVoiceConnectorRegionsResponse"
+    "fixture/ListAvailableVoiceConnectorRegionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListAvailableVoiceConnectorRegions)
+
+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)
+
+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)
+
+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)
+
+responsePutSipMediaApplicationAlexaSkillConfiguration :: PutSipMediaApplicationAlexaSkillConfigurationResponse -> TestTree
+responsePutSipMediaApplicationAlexaSkillConfiguration =
+  res
+    "PutSipMediaApplicationAlexaSkillConfigurationResponse"
+    "fixture/PutSipMediaApplicationAlexaSkillConfigurationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy PutSipMediaApplicationAlexaSkillConfiguration)
+
+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)
+
+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)
+
+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)
+
+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)
+
+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)
