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 Systems Manager Incident Manager SDK
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+ 
+`2.0` - Derived from API version @2018-05-10@ of the AWS service descriptions, licensed under Apache 2.0.
+
+## Description
+
+Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-ssm-incidents)
+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.SSMIncidents](http://hackage.haskell.org/package/amazonka-ssm-incidents/docs/Amazonka-SSMIncidents.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-ssm-incidents` 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-ssm-incidents.cabal b/amazonka-ssm-incidents.cabal
new file mode 100644
--- /dev/null
+++ b/amazonka-ssm-incidents.cabal
@@ -0,0 +1,154 @@
+cabal-version:      2.2
+name:               amazonka-ssm-incidents
+version:            2.0
+synopsis:           Amazon Systems Manager Incident Manager SDK.
+homepage:           https://github.com/brendanhay/amazonka
+bug-reports:        https://github.com/brendanhay/amazonka/issues
+license:            MPL-2.0
+license-file:       LICENSE
+author:             Brendan Hay
+maintainer:
+  Brendan Hay <brendan.g.hay+amazonka@gmail.com>, Jack Kelly <jack@jackkelly.name>
+
+copyright:          Copyright (c) 2013-2023 Brendan Hay
+category:           AWS
+build-type:         Simple
+extra-source-files:
+  fixture/*.proto
+  fixture/*.yaml
+  README.md
+  src/.gitkeep
+
+description:
+  Derived from API version @2018-05-10@ 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.SSMIncidents.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.SSMIncidents" 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-ssm-incidents
+
+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.SSMIncidents
+    Amazonka.SSMIncidents.CreateReplicationSet
+    Amazonka.SSMIncidents.CreateResponsePlan
+    Amazonka.SSMIncidents.CreateTimelineEvent
+    Amazonka.SSMIncidents.DeleteIncidentRecord
+    Amazonka.SSMIncidents.DeleteReplicationSet
+    Amazonka.SSMIncidents.DeleteResourcePolicy
+    Amazonka.SSMIncidents.DeleteResponsePlan
+    Amazonka.SSMIncidents.DeleteTimelineEvent
+    Amazonka.SSMIncidents.GetIncidentRecord
+    Amazonka.SSMIncidents.GetReplicationSet
+    Amazonka.SSMIncidents.GetResourcePolicies
+    Amazonka.SSMIncidents.GetResponsePlan
+    Amazonka.SSMIncidents.GetTimelineEvent
+    Amazonka.SSMIncidents.Lens
+    Amazonka.SSMIncidents.ListIncidentRecords
+    Amazonka.SSMIncidents.ListRelatedItems
+    Amazonka.SSMIncidents.ListReplicationSets
+    Amazonka.SSMIncidents.ListResponsePlans
+    Amazonka.SSMIncidents.ListTagsForResource
+    Amazonka.SSMIncidents.ListTimelineEvents
+    Amazonka.SSMIncidents.PutResourcePolicy
+    Amazonka.SSMIncidents.StartIncident
+    Amazonka.SSMIncidents.TagResource
+    Amazonka.SSMIncidents.Types
+    Amazonka.SSMIncidents.Types.Action
+    Amazonka.SSMIncidents.Types.AddRegionAction
+    Amazonka.SSMIncidents.Types.AttributeValueList
+    Amazonka.SSMIncidents.Types.AutomationExecution
+    Amazonka.SSMIncidents.Types.ChatChannel
+    Amazonka.SSMIncidents.Types.Condition
+    Amazonka.SSMIncidents.Types.DeleteRegionAction
+    Amazonka.SSMIncidents.Types.DynamicSsmParameterValue
+    Amazonka.SSMIncidents.Types.EmptyChatChannel
+    Amazonka.SSMIncidents.Types.EventReference
+    Amazonka.SSMIncidents.Types.EventSummary
+    Amazonka.SSMIncidents.Types.Filter
+    Amazonka.SSMIncidents.Types.IncidentRecord
+    Amazonka.SSMIncidents.Types.IncidentRecordSource
+    Amazonka.SSMIncidents.Types.IncidentRecordStatus
+    Amazonka.SSMIncidents.Types.IncidentRecordSummary
+    Amazonka.SSMIncidents.Types.IncidentTemplate
+    Amazonka.SSMIncidents.Types.Integration
+    Amazonka.SSMIncidents.Types.ItemIdentifier
+    Amazonka.SSMIncidents.Types.ItemType
+    Amazonka.SSMIncidents.Types.ItemValue
+    Amazonka.SSMIncidents.Types.NotificationTargetItem
+    Amazonka.SSMIncidents.Types.PagerDutyConfiguration
+    Amazonka.SSMIncidents.Types.PagerDutyIncidentConfiguration
+    Amazonka.SSMIncidents.Types.PagerDutyIncidentDetail
+    Amazonka.SSMIncidents.Types.RegionInfo
+    Amazonka.SSMIncidents.Types.RegionMapInputValue
+    Amazonka.SSMIncidents.Types.RegionStatus
+    Amazonka.SSMIncidents.Types.RelatedItem
+    Amazonka.SSMIncidents.Types.RelatedItemsUpdate
+    Amazonka.SSMIncidents.Types.ReplicationSet
+    Amazonka.SSMIncidents.Types.ReplicationSetStatus
+    Amazonka.SSMIncidents.Types.ResourcePolicy
+    Amazonka.SSMIncidents.Types.ResponsePlanSummary
+    Amazonka.SSMIncidents.Types.SortOrder
+    Amazonka.SSMIncidents.Types.SsmAutomation
+    Amazonka.SSMIncidents.Types.SsmTargetAccount
+    Amazonka.SSMIncidents.Types.TimelineEvent
+    Amazonka.SSMIncidents.Types.TimelineEventSort
+    Amazonka.SSMIncidents.Types.TriggerDetails
+    Amazonka.SSMIncidents.Types.UpdateReplicationSetAction
+    Amazonka.SSMIncidents.Types.VariableType
+    Amazonka.SSMIncidents.UntagResource
+    Amazonka.SSMIncidents.UpdateDeletionProtection
+    Amazonka.SSMIncidents.UpdateIncidentRecord
+    Amazonka.SSMIncidents.UpdateRelatedItems
+    Amazonka.SSMIncidents.UpdateReplicationSet
+    Amazonka.SSMIncidents.UpdateResponsePlan
+    Amazonka.SSMIncidents.UpdateTimelineEvent
+    Amazonka.SSMIncidents.Waiters
+
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
+
+test-suite amazonka-ssm-incidents-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.Gen.SSMIncidents
+    Test.Amazonka.SSMIncidents
+    Test.Amazonka.SSMIncidents.Internal
+
+  build-depends:
+    , amazonka-core           >=2.0 && <2.1
+    , amazonka-ssm-incidents
+    , amazonka-test           >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/CreateReplicationSet.yaml b/fixture/CreateReplicationSet.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateReplicationSet.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm-incidents/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm-incidents.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateReplicationSetResponse.proto b/fixture/CreateReplicationSetResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateReplicationSetResponse.proto
diff --git a/fixture/CreateResponsePlan.yaml b/fixture/CreateResponsePlan.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateResponsePlan.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm-incidents/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm-incidents.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateResponsePlanResponse.proto b/fixture/CreateResponsePlanResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateResponsePlanResponse.proto
diff --git a/fixture/CreateTimelineEvent.yaml b/fixture/CreateTimelineEvent.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateTimelineEvent.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm-incidents/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm-incidents.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateTimelineEventResponse.proto b/fixture/CreateTimelineEventResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateTimelineEventResponse.proto
diff --git a/fixture/DeleteIncidentRecord.yaml b/fixture/DeleteIncidentRecord.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteIncidentRecord.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm-incidents/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm-incidents.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteIncidentRecordResponse.proto b/fixture/DeleteIncidentRecordResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteIncidentRecordResponse.proto
diff --git a/fixture/DeleteReplicationSet.yaml b/fixture/DeleteReplicationSet.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteReplicationSet.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm-incidents/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm-incidents.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteReplicationSetResponse.proto b/fixture/DeleteReplicationSetResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteReplicationSetResponse.proto
diff --git a/fixture/DeleteResourcePolicy.yaml b/fixture/DeleteResourcePolicy.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteResourcePolicy.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm-incidents/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm-incidents.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteResourcePolicyResponse.proto b/fixture/DeleteResourcePolicyResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteResourcePolicyResponse.proto
diff --git a/fixture/DeleteResponsePlan.yaml b/fixture/DeleteResponsePlan.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteResponsePlan.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm-incidents/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm-incidents.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteResponsePlanResponse.proto b/fixture/DeleteResponsePlanResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteResponsePlanResponse.proto
diff --git a/fixture/DeleteTimelineEvent.yaml b/fixture/DeleteTimelineEvent.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteTimelineEvent.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm-incidents/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm-incidents.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteTimelineEventResponse.proto b/fixture/DeleteTimelineEventResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteTimelineEventResponse.proto
diff --git a/fixture/GetIncidentRecord.yaml b/fixture/GetIncidentRecord.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetIncidentRecord.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm-incidents/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm-incidents.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetIncidentRecordResponse.proto b/fixture/GetIncidentRecordResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetIncidentRecordResponse.proto
diff --git a/fixture/GetReplicationSet.yaml b/fixture/GetReplicationSet.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetReplicationSet.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm-incidents/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm-incidents.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetReplicationSetResponse.proto b/fixture/GetReplicationSetResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetReplicationSetResponse.proto
diff --git a/fixture/GetResourcePolicies.yaml b/fixture/GetResourcePolicies.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetResourcePolicies.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm-incidents/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm-incidents.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetResourcePoliciesResponse.proto b/fixture/GetResourcePoliciesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetResourcePoliciesResponse.proto
diff --git a/fixture/GetResponsePlan.yaml b/fixture/GetResponsePlan.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetResponsePlan.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm-incidents/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm-incidents.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetResponsePlanResponse.proto b/fixture/GetResponsePlanResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetResponsePlanResponse.proto
diff --git a/fixture/GetTimelineEvent.yaml b/fixture/GetTimelineEvent.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetTimelineEvent.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm-incidents/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm-incidents.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetTimelineEventResponse.proto b/fixture/GetTimelineEventResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetTimelineEventResponse.proto
diff --git a/fixture/ListIncidentRecords.yaml b/fixture/ListIncidentRecords.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListIncidentRecords.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm-incidents/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm-incidents.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListIncidentRecordsResponse.proto b/fixture/ListIncidentRecordsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListIncidentRecordsResponse.proto
diff --git a/fixture/ListRelatedItems.yaml b/fixture/ListRelatedItems.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListRelatedItems.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm-incidents/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm-incidents.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListRelatedItemsResponse.proto b/fixture/ListRelatedItemsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListRelatedItemsResponse.proto
diff --git a/fixture/ListReplicationSets.yaml b/fixture/ListReplicationSets.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListReplicationSets.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm-incidents/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm-incidents.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListReplicationSetsResponse.proto b/fixture/ListReplicationSetsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListReplicationSetsResponse.proto
diff --git a/fixture/ListResponsePlans.yaml b/fixture/ListResponsePlans.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListResponsePlans.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm-incidents/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm-incidents.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListResponsePlansResponse.proto b/fixture/ListResponsePlansResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListResponsePlansResponse.proto
diff --git a/fixture/ListTagsForResource.yaml b/fixture/ListTagsForResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsForResource.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm-incidents/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm-incidents.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListTagsForResourceResponse.proto b/fixture/ListTagsForResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsForResourceResponse.proto
diff --git a/fixture/ListTimelineEvents.yaml b/fixture/ListTimelineEvents.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListTimelineEvents.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm-incidents/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm-incidents.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListTimelineEventsResponse.proto b/fixture/ListTimelineEventsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListTimelineEventsResponse.proto
diff --git a/fixture/PutResourcePolicy.yaml b/fixture/PutResourcePolicy.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PutResourcePolicy.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm-incidents/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm-incidents.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/PutResourcePolicyResponse.proto b/fixture/PutResourcePolicyResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PutResourcePolicyResponse.proto
diff --git a/fixture/StartIncident.yaml b/fixture/StartIncident.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StartIncident.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm-incidents/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm-incidents.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StartIncidentResponse.proto b/fixture/StartIncidentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StartIncidentResponse.proto
diff --git a/fixture/TagResource.yaml b/fixture/TagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/TagResource.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm-incidents/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm-incidents.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/TagResourceResponse.proto b/fixture/TagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/TagResourceResponse.proto
diff --git a/fixture/UntagResource.yaml b/fixture/UntagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResource.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm-incidents/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm-incidents.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UntagResourceResponse.proto b/fixture/UntagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResourceResponse.proto
diff --git a/fixture/UpdateDeletionProtection.yaml b/fixture/UpdateDeletionProtection.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDeletionProtection.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm-incidents/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm-incidents.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateDeletionProtectionResponse.proto b/fixture/UpdateDeletionProtectionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDeletionProtectionResponse.proto
diff --git a/fixture/UpdateIncidentRecord.yaml b/fixture/UpdateIncidentRecord.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateIncidentRecord.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm-incidents/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm-incidents.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateIncidentRecordResponse.proto b/fixture/UpdateIncidentRecordResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateIncidentRecordResponse.proto
diff --git a/fixture/UpdateRelatedItems.yaml b/fixture/UpdateRelatedItems.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateRelatedItems.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm-incidents/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm-incidents.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateRelatedItemsResponse.proto b/fixture/UpdateRelatedItemsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateRelatedItemsResponse.proto
diff --git a/fixture/UpdateReplicationSet.yaml b/fixture/UpdateReplicationSet.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateReplicationSet.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm-incidents/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm-incidents.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateReplicationSetResponse.proto b/fixture/UpdateReplicationSetResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateReplicationSetResponse.proto
diff --git a/fixture/UpdateResponsePlan.yaml b/fixture/UpdateResponsePlan.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateResponsePlan.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm-incidents/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm-incidents.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateResponsePlanResponse.proto b/fixture/UpdateResponsePlanResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateResponsePlanResponse.proto
diff --git a/fixture/UpdateTimelineEvent.yaml b/fixture/UpdateTimelineEvent.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateTimelineEvent.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm-incidents/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm-incidents.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateTimelineEventResponse.proto b/fixture/UpdateTimelineEventResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateTimelineEventResponse.proto
diff --git a/gen/Amazonka/SSMIncidents.hs b/gen/Amazonka/SSMIncidents.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents.hs
@@ -0,0 +1,461 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.SSMIncidents
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from API version @2018-05-10@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- Systems Manager Incident Manager is an incident management console
+-- designed to help users mitigate and recover from incidents affecting
+-- their Amazon Web Services-hosted applications. An incident is any
+-- unplanned interruption or reduction in quality of services.
+--
+-- Incident Manager increases incident resolution by notifying responders
+-- of impact, highlighting relevant troubleshooting data, and providing
+-- collaboration tools to get services back up and running. To achieve the
+-- primary goal of reducing the time-to-resolution of critical incidents,
+-- Incident Manager automates response plans and enables responder team
+-- escalation.
+module Amazonka.SSMIncidents
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** AccessDeniedException
+    _AccessDeniedException,
+
+    -- ** ConflictException
+    _ConflictException,
+
+    -- ** InternalServerException
+    _InternalServerException,
+
+    -- ** ResourceNotFoundException
+    _ResourceNotFoundException,
+
+    -- ** ServiceQuotaExceededException
+    _ServiceQuotaExceededException,
+
+    -- ** ThrottlingException
+    _ThrottlingException,
+
+    -- ** ValidationException
+    _ValidationException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- ** WaitForReplicationSetActive
+    newWaitForReplicationSetActive,
+
+    -- ** WaitForReplicationSetDeleted
+    newWaitForReplicationSetDeleted,
+
+    -- * Operations
+    -- $operations
+
+    -- ** CreateReplicationSet
+    CreateReplicationSet (CreateReplicationSet'),
+    newCreateReplicationSet,
+    CreateReplicationSetResponse (CreateReplicationSetResponse'),
+    newCreateReplicationSetResponse,
+
+    -- ** CreateResponsePlan
+    CreateResponsePlan (CreateResponsePlan'),
+    newCreateResponsePlan,
+    CreateResponsePlanResponse (CreateResponsePlanResponse'),
+    newCreateResponsePlanResponse,
+
+    -- ** CreateTimelineEvent
+    CreateTimelineEvent (CreateTimelineEvent'),
+    newCreateTimelineEvent,
+    CreateTimelineEventResponse (CreateTimelineEventResponse'),
+    newCreateTimelineEventResponse,
+
+    -- ** DeleteIncidentRecord
+    DeleteIncidentRecord (DeleteIncidentRecord'),
+    newDeleteIncidentRecord,
+    DeleteIncidentRecordResponse (DeleteIncidentRecordResponse'),
+    newDeleteIncidentRecordResponse,
+
+    -- ** DeleteReplicationSet
+    DeleteReplicationSet (DeleteReplicationSet'),
+    newDeleteReplicationSet,
+    DeleteReplicationSetResponse (DeleteReplicationSetResponse'),
+    newDeleteReplicationSetResponse,
+
+    -- ** DeleteResourcePolicy
+    DeleteResourcePolicy (DeleteResourcePolicy'),
+    newDeleteResourcePolicy,
+    DeleteResourcePolicyResponse (DeleteResourcePolicyResponse'),
+    newDeleteResourcePolicyResponse,
+
+    -- ** DeleteResponsePlan
+    DeleteResponsePlan (DeleteResponsePlan'),
+    newDeleteResponsePlan,
+    DeleteResponsePlanResponse (DeleteResponsePlanResponse'),
+    newDeleteResponsePlanResponse,
+
+    -- ** DeleteTimelineEvent
+    DeleteTimelineEvent (DeleteTimelineEvent'),
+    newDeleteTimelineEvent,
+    DeleteTimelineEventResponse (DeleteTimelineEventResponse'),
+    newDeleteTimelineEventResponse,
+
+    -- ** GetIncidentRecord
+    GetIncidentRecord (GetIncidentRecord'),
+    newGetIncidentRecord,
+    GetIncidentRecordResponse (GetIncidentRecordResponse'),
+    newGetIncidentRecordResponse,
+
+    -- ** GetReplicationSet
+    GetReplicationSet (GetReplicationSet'),
+    newGetReplicationSet,
+    GetReplicationSetResponse (GetReplicationSetResponse'),
+    newGetReplicationSetResponse,
+
+    -- ** GetResourcePolicies (Paginated)
+    GetResourcePolicies (GetResourcePolicies'),
+    newGetResourcePolicies,
+    GetResourcePoliciesResponse (GetResourcePoliciesResponse'),
+    newGetResourcePoliciesResponse,
+
+    -- ** GetResponsePlan
+    GetResponsePlan (GetResponsePlan'),
+    newGetResponsePlan,
+    GetResponsePlanResponse (GetResponsePlanResponse'),
+    newGetResponsePlanResponse,
+
+    -- ** GetTimelineEvent
+    GetTimelineEvent (GetTimelineEvent'),
+    newGetTimelineEvent,
+    GetTimelineEventResponse (GetTimelineEventResponse'),
+    newGetTimelineEventResponse,
+
+    -- ** ListIncidentRecords (Paginated)
+    ListIncidentRecords (ListIncidentRecords'),
+    newListIncidentRecords,
+    ListIncidentRecordsResponse (ListIncidentRecordsResponse'),
+    newListIncidentRecordsResponse,
+
+    -- ** ListRelatedItems (Paginated)
+    ListRelatedItems (ListRelatedItems'),
+    newListRelatedItems,
+    ListRelatedItemsResponse (ListRelatedItemsResponse'),
+    newListRelatedItemsResponse,
+
+    -- ** ListReplicationSets (Paginated)
+    ListReplicationSets (ListReplicationSets'),
+    newListReplicationSets,
+    ListReplicationSetsResponse (ListReplicationSetsResponse'),
+    newListReplicationSetsResponse,
+
+    -- ** ListResponsePlans (Paginated)
+    ListResponsePlans (ListResponsePlans'),
+    newListResponsePlans,
+    ListResponsePlansResponse (ListResponsePlansResponse'),
+    newListResponsePlansResponse,
+
+    -- ** ListTagsForResource
+    ListTagsForResource (ListTagsForResource'),
+    newListTagsForResource,
+    ListTagsForResourceResponse (ListTagsForResourceResponse'),
+    newListTagsForResourceResponse,
+
+    -- ** ListTimelineEvents (Paginated)
+    ListTimelineEvents (ListTimelineEvents'),
+    newListTimelineEvents,
+    ListTimelineEventsResponse (ListTimelineEventsResponse'),
+    newListTimelineEventsResponse,
+
+    -- ** PutResourcePolicy
+    PutResourcePolicy (PutResourcePolicy'),
+    newPutResourcePolicy,
+    PutResourcePolicyResponse (PutResourcePolicyResponse'),
+    newPutResourcePolicyResponse,
+
+    -- ** StartIncident
+    StartIncident (StartIncident'),
+    newStartIncident,
+    StartIncidentResponse (StartIncidentResponse'),
+    newStartIncidentResponse,
+
+    -- ** TagResource
+    TagResource (TagResource'),
+    newTagResource,
+    TagResourceResponse (TagResourceResponse'),
+    newTagResourceResponse,
+
+    -- ** UntagResource
+    UntagResource (UntagResource'),
+    newUntagResource,
+    UntagResourceResponse (UntagResourceResponse'),
+    newUntagResourceResponse,
+
+    -- ** UpdateDeletionProtection
+    UpdateDeletionProtection (UpdateDeletionProtection'),
+    newUpdateDeletionProtection,
+    UpdateDeletionProtectionResponse (UpdateDeletionProtectionResponse'),
+    newUpdateDeletionProtectionResponse,
+
+    -- ** UpdateIncidentRecord
+    UpdateIncidentRecord (UpdateIncidentRecord'),
+    newUpdateIncidentRecord,
+    UpdateIncidentRecordResponse (UpdateIncidentRecordResponse'),
+    newUpdateIncidentRecordResponse,
+
+    -- ** UpdateRelatedItems
+    UpdateRelatedItems (UpdateRelatedItems'),
+    newUpdateRelatedItems,
+    UpdateRelatedItemsResponse (UpdateRelatedItemsResponse'),
+    newUpdateRelatedItemsResponse,
+
+    -- ** UpdateReplicationSet
+    UpdateReplicationSet (UpdateReplicationSet'),
+    newUpdateReplicationSet,
+    UpdateReplicationSetResponse (UpdateReplicationSetResponse'),
+    newUpdateReplicationSetResponse,
+
+    -- ** UpdateResponsePlan
+    UpdateResponsePlan (UpdateResponsePlan'),
+    newUpdateResponsePlan,
+    UpdateResponsePlanResponse (UpdateResponsePlanResponse'),
+    newUpdateResponsePlanResponse,
+
+    -- ** UpdateTimelineEvent
+    UpdateTimelineEvent (UpdateTimelineEvent'),
+    newUpdateTimelineEvent,
+    UpdateTimelineEventResponse (UpdateTimelineEventResponse'),
+    newUpdateTimelineEventResponse,
+
+    -- * Types
+
+    -- ** IncidentRecordStatus
+    IncidentRecordStatus (..),
+
+    -- ** ItemType
+    ItemType (..),
+
+    -- ** RegionStatus
+    RegionStatus (..),
+
+    -- ** ReplicationSetStatus
+    ReplicationSetStatus (..),
+
+    -- ** SortOrder
+    SortOrder (..),
+
+    -- ** SsmTargetAccount
+    SsmTargetAccount (..),
+
+    -- ** TimelineEventSort
+    TimelineEventSort (..),
+
+    -- ** VariableType
+    VariableType (..),
+
+    -- ** Action
+    Action (Action'),
+    newAction,
+
+    -- ** AddRegionAction
+    AddRegionAction (AddRegionAction'),
+    newAddRegionAction,
+
+    -- ** AttributeValueList
+    AttributeValueList (AttributeValueList'),
+    newAttributeValueList,
+
+    -- ** AutomationExecution
+    AutomationExecution (AutomationExecution'),
+    newAutomationExecution,
+
+    -- ** ChatChannel
+    ChatChannel (ChatChannel'),
+    newChatChannel,
+
+    -- ** Condition
+    Condition (Condition'),
+    newCondition,
+
+    -- ** DeleteRegionAction
+    DeleteRegionAction (DeleteRegionAction'),
+    newDeleteRegionAction,
+
+    -- ** DynamicSsmParameterValue
+    DynamicSsmParameterValue (DynamicSsmParameterValue'),
+    newDynamicSsmParameterValue,
+
+    -- ** EmptyChatChannel
+    EmptyChatChannel (EmptyChatChannel'),
+    newEmptyChatChannel,
+
+    -- ** EventReference
+    EventReference (EventReference'),
+    newEventReference,
+
+    -- ** EventSummary
+    EventSummary (EventSummary'),
+    newEventSummary,
+
+    -- ** Filter
+    Filter (Filter'),
+    newFilter,
+
+    -- ** IncidentRecord
+    IncidentRecord (IncidentRecord'),
+    newIncidentRecord,
+
+    -- ** IncidentRecordSource
+    IncidentRecordSource (IncidentRecordSource'),
+    newIncidentRecordSource,
+
+    -- ** IncidentRecordSummary
+    IncidentRecordSummary (IncidentRecordSummary'),
+    newIncidentRecordSummary,
+
+    -- ** IncidentTemplate
+    IncidentTemplate (IncidentTemplate'),
+    newIncidentTemplate,
+
+    -- ** Integration
+    Integration (Integration'),
+    newIntegration,
+
+    -- ** ItemIdentifier
+    ItemIdentifier (ItemIdentifier'),
+    newItemIdentifier,
+
+    -- ** ItemValue
+    ItemValue (ItemValue'),
+    newItemValue,
+
+    -- ** NotificationTargetItem
+    NotificationTargetItem (NotificationTargetItem'),
+    newNotificationTargetItem,
+
+    -- ** PagerDutyConfiguration
+    PagerDutyConfiguration (PagerDutyConfiguration'),
+    newPagerDutyConfiguration,
+
+    -- ** PagerDutyIncidentConfiguration
+    PagerDutyIncidentConfiguration (PagerDutyIncidentConfiguration'),
+    newPagerDutyIncidentConfiguration,
+
+    -- ** PagerDutyIncidentDetail
+    PagerDutyIncidentDetail (PagerDutyIncidentDetail'),
+    newPagerDutyIncidentDetail,
+
+    -- ** RegionInfo
+    RegionInfo (RegionInfo'),
+    newRegionInfo,
+
+    -- ** RegionMapInputValue
+    RegionMapInputValue (RegionMapInputValue'),
+    newRegionMapInputValue,
+
+    -- ** RelatedItem
+    RelatedItem (RelatedItem'),
+    newRelatedItem,
+
+    -- ** RelatedItemsUpdate
+    RelatedItemsUpdate (RelatedItemsUpdate'),
+    newRelatedItemsUpdate,
+
+    -- ** ReplicationSet
+    ReplicationSet (ReplicationSet'),
+    newReplicationSet,
+
+    -- ** ResourcePolicy
+    ResourcePolicy (ResourcePolicy'),
+    newResourcePolicy,
+
+    -- ** ResponsePlanSummary
+    ResponsePlanSummary (ResponsePlanSummary'),
+    newResponsePlanSummary,
+
+    -- ** SsmAutomation
+    SsmAutomation (SsmAutomation'),
+    newSsmAutomation,
+
+    -- ** TimelineEvent
+    TimelineEvent (TimelineEvent'),
+    newTimelineEvent,
+
+    -- ** TriggerDetails
+    TriggerDetails (TriggerDetails'),
+    newTriggerDetails,
+
+    -- ** UpdateReplicationSetAction
+    UpdateReplicationSetAction (UpdateReplicationSetAction'),
+    newUpdateReplicationSetAction,
+  )
+where
+
+import Amazonka.SSMIncidents.CreateReplicationSet
+import Amazonka.SSMIncidents.CreateResponsePlan
+import Amazonka.SSMIncidents.CreateTimelineEvent
+import Amazonka.SSMIncidents.DeleteIncidentRecord
+import Amazonka.SSMIncidents.DeleteReplicationSet
+import Amazonka.SSMIncidents.DeleteResourcePolicy
+import Amazonka.SSMIncidents.DeleteResponsePlan
+import Amazonka.SSMIncidents.DeleteTimelineEvent
+import Amazonka.SSMIncidents.GetIncidentRecord
+import Amazonka.SSMIncidents.GetReplicationSet
+import Amazonka.SSMIncidents.GetResourcePolicies
+import Amazonka.SSMIncidents.GetResponsePlan
+import Amazonka.SSMIncidents.GetTimelineEvent
+import Amazonka.SSMIncidents.Lens
+import Amazonka.SSMIncidents.ListIncidentRecords
+import Amazonka.SSMIncidents.ListRelatedItems
+import Amazonka.SSMIncidents.ListReplicationSets
+import Amazonka.SSMIncidents.ListResponsePlans
+import Amazonka.SSMIncidents.ListTagsForResource
+import Amazonka.SSMIncidents.ListTimelineEvents
+import Amazonka.SSMIncidents.PutResourcePolicy
+import Amazonka.SSMIncidents.StartIncident
+import Amazonka.SSMIncidents.TagResource
+import Amazonka.SSMIncidents.Types
+import Amazonka.SSMIncidents.UntagResource
+import Amazonka.SSMIncidents.UpdateDeletionProtection
+import Amazonka.SSMIncidents.UpdateIncidentRecord
+import Amazonka.SSMIncidents.UpdateRelatedItems
+import Amazonka.SSMIncidents.UpdateReplicationSet
+import Amazonka.SSMIncidents.UpdateResponsePlan
+import Amazonka.SSMIncidents.UpdateTimelineEvent
+import Amazonka.SSMIncidents.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 'SSMIncidents'.
+
+-- $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/SSMIncidents/CreateReplicationSet.hs b/gen/Amazonka/SSMIncidents/CreateReplicationSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/CreateReplicationSet.hs
@@ -0,0 +1,203 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.CreateReplicationSet
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- A replication set replicates and encrypts your data to the provided
+-- Regions with the provided KMS key.
+module Amazonka.SSMIncidents.CreateReplicationSet
+  ( -- * Creating a Request
+    CreateReplicationSet (..),
+    newCreateReplicationSet,
+
+    -- * Request Lenses
+    createReplicationSet_clientToken,
+    createReplicationSet_tags,
+    createReplicationSet_regions,
+
+    -- * Destructuring the Response
+    CreateReplicationSetResponse (..),
+    newCreateReplicationSetResponse,
+
+    -- * Response Lenses
+    createReplicationSetResponse_httpStatus,
+    createReplicationSetResponse_arn,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SSMIncidents.Types
+
+-- | /See:/ 'newCreateReplicationSet' smart constructor.
+data CreateReplicationSet = CreateReplicationSet'
+  { -- | A token that ensures that the operation is called only once with the
+    -- specified details.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | A list of tags to add to the replication set.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The Regions that Incident Manager replicates your data to. You can have
+    -- up to three Regions in your replication set.
+    regions :: Prelude.HashMap Prelude.Text RegionMapInputValue
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateReplicationSet' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientToken', 'createReplicationSet_clientToken' - A token that ensures that the operation is called only once with the
+-- specified details.
+--
+-- 'tags', 'createReplicationSet_tags' - A list of tags to add to the replication set.
+--
+-- 'regions', 'createReplicationSet_regions' - The Regions that Incident Manager replicates your data to. You can have
+-- up to three Regions in your replication set.
+newCreateReplicationSet ::
+  CreateReplicationSet
+newCreateReplicationSet =
+  CreateReplicationSet'
+    { clientToken =
+        Prelude.Nothing,
+      tags = Prelude.Nothing,
+      regions = Prelude.mempty
+    }
+
+-- | A token that ensures that the operation is called only once with the
+-- specified details.
+createReplicationSet_clientToken :: Lens.Lens' CreateReplicationSet (Prelude.Maybe Prelude.Text)
+createReplicationSet_clientToken = Lens.lens (\CreateReplicationSet' {clientToken} -> clientToken) (\s@CreateReplicationSet' {} a -> s {clientToken = a} :: CreateReplicationSet)
+
+-- | A list of tags to add to the replication set.
+createReplicationSet_tags :: Lens.Lens' CreateReplicationSet (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createReplicationSet_tags = Lens.lens (\CreateReplicationSet' {tags} -> tags) (\s@CreateReplicationSet' {} a -> s {tags = a} :: CreateReplicationSet) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Regions that Incident Manager replicates your data to. You can have
+-- up to three Regions in your replication set.
+createReplicationSet_regions :: Lens.Lens' CreateReplicationSet (Prelude.HashMap Prelude.Text RegionMapInputValue)
+createReplicationSet_regions = Lens.lens (\CreateReplicationSet' {regions} -> regions) (\s@CreateReplicationSet' {} a -> s {regions = a} :: CreateReplicationSet) Prelude.. Lens.coerced
+
+instance Core.AWSRequest CreateReplicationSet where
+  type
+    AWSResponse CreateReplicationSet =
+      CreateReplicationSetResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateReplicationSetResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "arn")
+      )
+
+instance Prelude.Hashable CreateReplicationSet where
+  hashWithSalt _salt CreateReplicationSet' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` regions
+
+instance Prelude.NFData CreateReplicationSet where
+  rnf CreateReplicationSet' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf regions
+
+instance Data.ToHeaders CreateReplicationSet where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateReplicationSet where
+  toJSON CreateReplicationSet' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("clientToken" Data..=) Prelude.<$> clientToken,
+            ("tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("regions" Data..= regions)
+          ]
+      )
+
+instance Data.ToPath CreateReplicationSet where
+  toPath = Prelude.const "/createReplicationSet"
+
+instance Data.ToQuery CreateReplicationSet where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateReplicationSetResponse' smart constructor.
+data CreateReplicationSetResponse = CreateReplicationSetResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the replication set.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateReplicationSetResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'createReplicationSetResponse_httpStatus' - The response's http status code.
+--
+-- 'arn', 'createReplicationSetResponse_arn' - The Amazon Resource Name (ARN) of the replication set.
+newCreateReplicationSetResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'arn'
+  Prelude.Text ->
+  CreateReplicationSetResponse
+newCreateReplicationSetResponse pHttpStatus_ pArn_ =
+  CreateReplicationSetResponse'
+    { httpStatus =
+        pHttpStatus_,
+      arn = pArn_
+    }
+
+-- | The response's http status code.
+createReplicationSetResponse_httpStatus :: Lens.Lens' CreateReplicationSetResponse Prelude.Int
+createReplicationSetResponse_httpStatus = Lens.lens (\CreateReplicationSetResponse' {httpStatus} -> httpStatus) (\s@CreateReplicationSetResponse' {} a -> s {httpStatus = a} :: CreateReplicationSetResponse)
+
+-- | The Amazon Resource Name (ARN) of the replication set.
+createReplicationSetResponse_arn :: Lens.Lens' CreateReplicationSetResponse Prelude.Text
+createReplicationSetResponse_arn = Lens.lens (\CreateReplicationSetResponse' {arn} -> arn) (\s@CreateReplicationSetResponse' {} a -> s {arn = a} :: CreateReplicationSetResponse)
+
+instance Prelude.NFData CreateReplicationSetResponse where
+  rnf CreateReplicationSetResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf arn
diff --git a/gen/Amazonka/SSMIncidents/CreateResponsePlan.hs b/gen/Amazonka/SSMIncidents/CreateResponsePlan.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/CreateResponsePlan.hs
@@ -0,0 +1,295 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.CreateResponsePlan
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a response plan that automates the initial response to
+-- incidents. A response plan engages contacts, starts chat channel
+-- collaboration, and initiates runbooks at the beginning of an incident.
+module Amazonka.SSMIncidents.CreateResponsePlan
+  ( -- * Creating a Request
+    CreateResponsePlan (..),
+    newCreateResponsePlan,
+
+    -- * Request Lenses
+    createResponsePlan_actions,
+    createResponsePlan_chatChannel,
+    createResponsePlan_clientToken,
+    createResponsePlan_displayName,
+    createResponsePlan_engagements,
+    createResponsePlan_integrations,
+    createResponsePlan_tags,
+    createResponsePlan_incidentTemplate,
+    createResponsePlan_name,
+
+    -- * Destructuring the Response
+    CreateResponsePlanResponse (..),
+    newCreateResponsePlanResponse,
+
+    -- * Response Lenses
+    createResponsePlanResponse_httpStatus,
+    createResponsePlanResponse_arn,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SSMIncidents.Types
+
+-- | /See:/ 'newCreateResponsePlan' smart constructor.
+data CreateResponsePlan = CreateResponsePlan'
+  { -- | The actions that the response plan starts at the beginning of an
+    -- incident.
+    actions :: Prelude.Maybe [Action],
+    -- | The Chatbot chat channel used for collaboration during an incident.
+    chatChannel :: Prelude.Maybe ChatChannel,
+    -- | A token ensuring that the operation is called only once with the
+    -- specified details.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | The long format of the response plan name. This field can contain
+    -- spaces.
+    displayName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) for the contacts and escalation plans
+    -- that the response plan engages during an incident.
+    engagements :: Prelude.Maybe [Prelude.Text],
+    -- | Information about third-party services integrated into the response
+    -- plan.
+    integrations :: Prelude.Maybe [Integration],
+    -- | A list of tags that you are adding to the response plan.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | Details used to create an incident when using this response plan.
+    incidentTemplate :: IncidentTemplate,
+    -- | The short format name of the response plan. Can\'t include spaces.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateResponsePlan' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'actions', 'createResponsePlan_actions' - The actions that the response plan starts at the beginning of an
+-- incident.
+--
+-- 'chatChannel', 'createResponsePlan_chatChannel' - The Chatbot chat channel used for collaboration during an incident.
+--
+-- 'clientToken', 'createResponsePlan_clientToken' - A token ensuring that the operation is called only once with the
+-- specified details.
+--
+-- 'displayName', 'createResponsePlan_displayName' - The long format of the response plan name. This field can contain
+-- spaces.
+--
+-- 'engagements', 'createResponsePlan_engagements' - The Amazon Resource Name (ARN) for the contacts and escalation plans
+-- that the response plan engages during an incident.
+--
+-- 'integrations', 'createResponsePlan_integrations' - Information about third-party services integrated into the response
+-- plan.
+--
+-- 'tags', 'createResponsePlan_tags' - A list of tags that you are adding to the response plan.
+--
+-- 'incidentTemplate', 'createResponsePlan_incidentTemplate' - Details used to create an incident when using this response plan.
+--
+-- 'name', 'createResponsePlan_name' - The short format name of the response plan. Can\'t include spaces.
+newCreateResponsePlan ::
+  -- | 'incidentTemplate'
+  IncidentTemplate ->
+  -- | 'name'
+  Prelude.Text ->
+  CreateResponsePlan
+newCreateResponsePlan pIncidentTemplate_ pName_ =
+  CreateResponsePlan'
+    { actions = Prelude.Nothing,
+      chatChannel = Prelude.Nothing,
+      clientToken = Prelude.Nothing,
+      displayName = Prelude.Nothing,
+      engagements = Prelude.Nothing,
+      integrations = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      incidentTemplate = pIncidentTemplate_,
+      name = pName_
+    }
+
+-- | The actions that the response plan starts at the beginning of an
+-- incident.
+createResponsePlan_actions :: Lens.Lens' CreateResponsePlan (Prelude.Maybe [Action])
+createResponsePlan_actions = Lens.lens (\CreateResponsePlan' {actions} -> actions) (\s@CreateResponsePlan' {} a -> s {actions = a} :: CreateResponsePlan) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Chatbot chat channel used for collaboration during an incident.
+createResponsePlan_chatChannel :: Lens.Lens' CreateResponsePlan (Prelude.Maybe ChatChannel)
+createResponsePlan_chatChannel = Lens.lens (\CreateResponsePlan' {chatChannel} -> chatChannel) (\s@CreateResponsePlan' {} a -> s {chatChannel = a} :: CreateResponsePlan)
+
+-- | A token ensuring that the operation is called only once with the
+-- specified details.
+createResponsePlan_clientToken :: Lens.Lens' CreateResponsePlan (Prelude.Maybe Prelude.Text)
+createResponsePlan_clientToken = Lens.lens (\CreateResponsePlan' {clientToken} -> clientToken) (\s@CreateResponsePlan' {} a -> s {clientToken = a} :: CreateResponsePlan)
+
+-- | The long format of the response plan name. This field can contain
+-- spaces.
+createResponsePlan_displayName :: Lens.Lens' CreateResponsePlan (Prelude.Maybe Prelude.Text)
+createResponsePlan_displayName = Lens.lens (\CreateResponsePlan' {displayName} -> displayName) (\s@CreateResponsePlan' {} a -> s {displayName = a} :: CreateResponsePlan)
+
+-- | The Amazon Resource Name (ARN) for the contacts and escalation plans
+-- that the response plan engages during an incident.
+createResponsePlan_engagements :: Lens.Lens' CreateResponsePlan (Prelude.Maybe [Prelude.Text])
+createResponsePlan_engagements = Lens.lens (\CreateResponsePlan' {engagements} -> engagements) (\s@CreateResponsePlan' {} a -> s {engagements = a} :: CreateResponsePlan) Prelude.. Lens.mapping Lens.coerced
+
+-- | Information about third-party services integrated into the response
+-- plan.
+createResponsePlan_integrations :: Lens.Lens' CreateResponsePlan (Prelude.Maybe [Integration])
+createResponsePlan_integrations = Lens.lens (\CreateResponsePlan' {integrations} -> integrations) (\s@CreateResponsePlan' {} a -> s {integrations = a} :: CreateResponsePlan) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of tags that you are adding to the response plan.
+createResponsePlan_tags :: Lens.Lens' CreateResponsePlan (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createResponsePlan_tags = Lens.lens (\CreateResponsePlan' {tags} -> tags) (\s@CreateResponsePlan' {} a -> s {tags = a} :: CreateResponsePlan) Prelude.. Lens.mapping Lens.coerced
+
+-- | Details used to create an incident when using this response plan.
+createResponsePlan_incidentTemplate :: Lens.Lens' CreateResponsePlan IncidentTemplate
+createResponsePlan_incidentTemplate = Lens.lens (\CreateResponsePlan' {incidentTemplate} -> incidentTemplate) (\s@CreateResponsePlan' {} a -> s {incidentTemplate = a} :: CreateResponsePlan)
+
+-- | The short format name of the response plan. Can\'t include spaces.
+createResponsePlan_name :: Lens.Lens' CreateResponsePlan Prelude.Text
+createResponsePlan_name = Lens.lens (\CreateResponsePlan' {name} -> name) (\s@CreateResponsePlan' {} a -> s {name = a} :: CreateResponsePlan)
+
+instance Core.AWSRequest CreateResponsePlan where
+  type
+    AWSResponse CreateResponsePlan =
+      CreateResponsePlanResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateResponsePlanResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "arn")
+      )
+
+instance Prelude.Hashable CreateResponsePlan where
+  hashWithSalt _salt CreateResponsePlan' {..} =
+    _salt
+      `Prelude.hashWithSalt` actions
+      `Prelude.hashWithSalt` chatChannel
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` displayName
+      `Prelude.hashWithSalt` engagements
+      `Prelude.hashWithSalt` integrations
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` incidentTemplate
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData CreateResponsePlan where
+  rnf CreateResponsePlan' {..} =
+    Prelude.rnf actions
+      `Prelude.seq` Prelude.rnf chatChannel
+      `Prelude.seq` Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf displayName
+      `Prelude.seq` Prelude.rnf engagements
+      `Prelude.seq` Prelude.rnf integrations
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf incidentTemplate
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToHeaders CreateResponsePlan where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateResponsePlan where
+  toJSON CreateResponsePlan' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("actions" Data..=) Prelude.<$> actions,
+            ("chatChannel" Data..=) Prelude.<$> chatChannel,
+            ("clientToken" Data..=) Prelude.<$> clientToken,
+            ("displayName" Data..=) Prelude.<$> displayName,
+            ("engagements" Data..=) Prelude.<$> engagements,
+            ("integrations" Data..=) Prelude.<$> integrations,
+            ("tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("incidentTemplate" Data..= incidentTemplate),
+            Prelude.Just ("name" Data..= name)
+          ]
+      )
+
+instance Data.ToPath CreateResponsePlan where
+  toPath = Prelude.const "/createResponsePlan"
+
+instance Data.ToQuery CreateResponsePlan where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateResponsePlanResponse' smart constructor.
+data CreateResponsePlanResponse = CreateResponsePlanResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the response plan.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateResponsePlanResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'createResponsePlanResponse_httpStatus' - The response's http status code.
+--
+-- 'arn', 'createResponsePlanResponse_arn' - The Amazon Resource Name (ARN) of the response plan.
+newCreateResponsePlanResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'arn'
+  Prelude.Text ->
+  CreateResponsePlanResponse
+newCreateResponsePlanResponse pHttpStatus_ pArn_ =
+  CreateResponsePlanResponse'
+    { httpStatus =
+        pHttpStatus_,
+      arn = pArn_
+    }
+
+-- | The response's http status code.
+createResponsePlanResponse_httpStatus :: Lens.Lens' CreateResponsePlanResponse Prelude.Int
+createResponsePlanResponse_httpStatus = Lens.lens (\CreateResponsePlanResponse' {httpStatus} -> httpStatus) (\s@CreateResponsePlanResponse' {} a -> s {httpStatus = a} :: CreateResponsePlanResponse)
+
+-- | The Amazon Resource Name (ARN) of the response plan.
+createResponsePlanResponse_arn :: Lens.Lens' CreateResponsePlanResponse Prelude.Text
+createResponsePlanResponse_arn = Lens.lens (\CreateResponsePlanResponse' {arn} -> arn) (\s@CreateResponsePlanResponse' {} a -> s {arn = a} :: CreateResponsePlanResponse)
+
+instance Prelude.NFData CreateResponsePlanResponse where
+  rnf CreateResponsePlanResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf arn
diff --git a/gen/Amazonka/SSMIncidents/CreateTimelineEvent.hs b/gen/Amazonka/SSMIncidents/CreateTimelineEvent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/CreateTimelineEvent.hs
@@ -0,0 +1,299 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.CreateTimelineEvent
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a custom timeline event on the incident details page of an
+-- incident record. Timeline events are automatically created by Incident
+-- Manager, marking key moment during an incident. You can create custom
+-- timeline events to mark important events that are automatically detected
+-- by Incident Manager.
+module Amazonka.SSMIncidents.CreateTimelineEvent
+  ( -- * Creating a Request
+    CreateTimelineEvent (..),
+    newCreateTimelineEvent,
+
+    -- * Request Lenses
+    createTimelineEvent_clientToken,
+    createTimelineEvent_eventReferences,
+    createTimelineEvent_eventData,
+    createTimelineEvent_eventTime,
+    createTimelineEvent_eventType,
+    createTimelineEvent_incidentRecordArn,
+
+    -- * Destructuring the Response
+    CreateTimelineEventResponse (..),
+    newCreateTimelineEventResponse,
+
+    -- * Response Lenses
+    createTimelineEventResponse_httpStatus,
+    createTimelineEventResponse_eventId,
+    createTimelineEventResponse_incidentRecordArn,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SSMIncidents.Types
+
+-- | /See:/ 'newCreateTimelineEvent' smart constructor.
+data CreateTimelineEvent = CreateTimelineEvent'
+  { -- | A token ensuring that the action is called only once with the specified
+    -- details.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | Adds one or more references to the @TimelineEvent@. A reference can be
+    -- an Amazon Web Services resource involved in the incident or in some way
+    -- associated with it. When you specify a reference, you enter the Amazon
+    -- Resource Name (ARN) of the resource. You can also specify a related
+    -- item. As an example, you could specify the ARN of an Amazon DynamoDB
+    -- (DynamoDB) table. The table for this example is the resource. You could
+    -- also specify a Amazon CloudWatch metric for that table. The metric is
+    -- the related item.
+    eventReferences :: Prelude.Maybe [EventReference],
+    -- | A short description of the event.
+    eventData :: Prelude.Text,
+    -- | The time that the event occurred.
+    eventTime :: Data.POSIX,
+    -- | The type of the event. You can create timeline events of type
+    -- @Custom Event@.
+    eventType :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the incident record to which the event
+    -- will be added.
+    incidentRecordArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateTimelineEvent' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientToken', 'createTimelineEvent_clientToken' - A token ensuring that the action is called only once with the specified
+-- details.
+--
+-- 'eventReferences', 'createTimelineEvent_eventReferences' - Adds one or more references to the @TimelineEvent@. A reference can be
+-- an Amazon Web Services resource involved in the incident or in some way
+-- associated with it. When you specify a reference, you enter the Amazon
+-- Resource Name (ARN) of the resource. You can also specify a related
+-- item. As an example, you could specify the ARN of an Amazon DynamoDB
+-- (DynamoDB) table. The table for this example is the resource. You could
+-- also specify a Amazon CloudWatch metric for that table. The metric is
+-- the related item.
+--
+-- 'eventData', 'createTimelineEvent_eventData' - A short description of the event.
+--
+-- 'eventTime', 'createTimelineEvent_eventTime' - The time that the event occurred.
+--
+-- 'eventType', 'createTimelineEvent_eventType' - The type of the event. You can create timeline events of type
+-- @Custom Event@.
+--
+-- 'incidentRecordArn', 'createTimelineEvent_incidentRecordArn' - The Amazon Resource Name (ARN) of the incident record to which the event
+-- will be added.
+newCreateTimelineEvent ::
+  -- | 'eventData'
+  Prelude.Text ->
+  -- | 'eventTime'
+  Prelude.UTCTime ->
+  -- | 'eventType'
+  Prelude.Text ->
+  -- | 'incidentRecordArn'
+  Prelude.Text ->
+  CreateTimelineEvent
+newCreateTimelineEvent
+  pEventData_
+  pEventTime_
+  pEventType_
+  pIncidentRecordArn_ =
+    CreateTimelineEvent'
+      { clientToken = Prelude.Nothing,
+        eventReferences = Prelude.Nothing,
+        eventData = pEventData_,
+        eventTime = Data._Time Lens.# pEventTime_,
+        eventType = pEventType_,
+        incidentRecordArn = pIncidentRecordArn_
+      }
+
+-- | A token ensuring that the action is called only once with the specified
+-- details.
+createTimelineEvent_clientToken :: Lens.Lens' CreateTimelineEvent (Prelude.Maybe Prelude.Text)
+createTimelineEvent_clientToken = Lens.lens (\CreateTimelineEvent' {clientToken} -> clientToken) (\s@CreateTimelineEvent' {} a -> s {clientToken = a} :: CreateTimelineEvent)
+
+-- | Adds one or more references to the @TimelineEvent@. A reference can be
+-- an Amazon Web Services resource involved in the incident or in some way
+-- associated with it. When you specify a reference, you enter the Amazon
+-- Resource Name (ARN) of the resource. You can also specify a related
+-- item. As an example, you could specify the ARN of an Amazon DynamoDB
+-- (DynamoDB) table. The table for this example is the resource. You could
+-- also specify a Amazon CloudWatch metric for that table. The metric is
+-- the related item.
+createTimelineEvent_eventReferences :: Lens.Lens' CreateTimelineEvent (Prelude.Maybe [EventReference])
+createTimelineEvent_eventReferences = Lens.lens (\CreateTimelineEvent' {eventReferences} -> eventReferences) (\s@CreateTimelineEvent' {} a -> s {eventReferences = a} :: CreateTimelineEvent) Prelude.. Lens.mapping Lens.coerced
+
+-- | A short description of the event.
+createTimelineEvent_eventData :: Lens.Lens' CreateTimelineEvent Prelude.Text
+createTimelineEvent_eventData = Lens.lens (\CreateTimelineEvent' {eventData} -> eventData) (\s@CreateTimelineEvent' {} a -> s {eventData = a} :: CreateTimelineEvent)
+
+-- | The time that the event occurred.
+createTimelineEvent_eventTime :: Lens.Lens' CreateTimelineEvent Prelude.UTCTime
+createTimelineEvent_eventTime = Lens.lens (\CreateTimelineEvent' {eventTime} -> eventTime) (\s@CreateTimelineEvent' {} a -> s {eventTime = a} :: CreateTimelineEvent) Prelude.. Data._Time
+
+-- | The type of the event. You can create timeline events of type
+-- @Custom Event@.
+createTimelineEvent_eventType :: Lens.Lens' CreateTimelineEvent Prelude.Text
+createTimelineEvent_eventType = Lens.lens (\CreateTimelineEvent' {eventType} -> eventType) (\s@CreateTimelineEvent' {} a -> s {eventType = a} :: CreateTimelineEvent)
+
+-- | The Amazon Resource Name (ARN) of the incident record to which the event
+-- will be added.
+createTimelineEvent_incidentRecordArn :: Lens.Lens' CreateTimelineEvent Prelude.Text
+createTimelineEvent_incidentRecordArn = Lens.lens (\CreateTimelineEvent' {incidentRecordArn} -> incidentRecordArn) (\s@CreateTimelineEvent' {} a -> s {incidentRecordArn = a} :: CreateTimelineEvent)
+
+instance Core.AWSRequest CreateTimelineEvent where
+  type
+    AWSResponse CreateTimelineEvent =
+      CreateTimelineEventResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateTimelineEventResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "eventId")
+            Prelude.<*> (x Data..:> "incidentRecordArn")
+      )
+
+instance Prelude.Hashable CreateTimelineEvent where
+  hashWithSalt _salt CreateTimelineEvent' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` eventReferences
+      `Prelude.hashWithSalt` eventData
+      `Prelude.hashWithSalt` eventTime
+      `Prelude.hashWithSalt` eventType
+      `Prelude.hashWithSalt` incidentRecordArn
+
+instance Prelude.NFData CreateTimelineEvent where
+  rnf CreateTimelineEvent' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf eventReferences
+      `Prelude.seq` Prelude.rnf eventData
+      `Prelude.seq` Prelude.rnf eventTime
+      `Prelude.seq` Prelude.rnf eventType
+      `Prelude.seq` Prelude.rnf incidentRecordArn
+
+instance Data.ToHeaders CreateTimelineEvent where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateTimelineEvent where
+  toJSON CreateTimelineEvent' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("clientToken" Data..=) Prelude.<$> clientToken,
+            ("eventReferences" Data..=)
+              Prelude.<$> eventReferences,
+            Prelude.Just ("eventData" Data..= eventData),
+            Prelude.Just ("eventTime" Data..= eventTime),
+            Prelude.Just ("eventType" Data..= eventType),
+            Prelude.Just
+              ("incidentRecordArn" Data..= incidentRecordArn)
+          ]
+      )
+
+instance Data.ToPath CreateTimelineEvent where
+  toPath = Prelude.const "/createTimelineEvent"
+
+instance Data.ToQuery CreateTimelineEvent where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateTimelineEventResponse' smart constructor.
+data CreateTimelineEventResponse = CreateTimelineEventResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The ID of the event for easy reference later.
+    eventId :: Prelude.Text,
+    -- | The ARN of the incident record that you added the event to.
+    incidentRecordArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateTimelineEventResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'createTimelineEventResponse_httpStatus' - The response's http status code.
+--
+-- 'eventId', 'createTimelineEventResponse_eventId' - The ID of the event for easy reference later.
+--
+-- 'incidentRecordArn', 'createTimelineEventResponse_incidentRecordArn' - The ARN of the incident record that you added the event to.
+newCreateTimelineEventResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'eventId'
+  Prelude.Text ->
+  -- | 'incidentRecordArn'
+  Prelude.Text ->
+  CreateTimelineEventResponse
+newCreateTimelineEventResponse
+  pHttpStatus_
+  pEventId_
+  pIncidentRecordArn_ =
+    CreateTimelineEventResponse'
+      { httpStatus =
+          pHttpStatus_,
+        eventId = pEventId_,
+        incidentRecordArn = pIncidentRecordArn_
+      }
+
+-- | The response's http status code.
+createTimelineEventResponse_httpStatus :: Lens.Lens' CreateTimelineEventResponse Prelude.Int
+createTimelineEventResponse_httpStatus = Lens.lens (\CreateTimelineEventResponse' {httpStatus} -> httpStatus) (\s@CreateTimelineEventResponse' {} a -> s {httpStatus = a} :: CreateTimelineEventResponse)
+
+-- | The ID of the event for easy reference later.
+createTimelineEventResponse_eventId :: Lens.Lens' CreateTimelineEventResponse Prelude.Text
+createTimelineEventResponse_eventId = Lens.lens (\CreateTimelineEventResponse' {eventId} -> eventId) (\s@CreateTimelineEventResponse' {} a -> s {eventId = a} :: CreateTimelineEventResponse)
+
+-- | The ARN of the incident record that you added the event to.
+createTimelineEventResponse_incidentRecordArn :: Lens.Lens' CreateTimelineEventResponse Prelude.Text
+createTimelineEventResponse_incidentRecordArn = Lens.lens (\CreateTimelineEventResponse' {incidentRecordArn} -> incidentRecordArn) (\s@CreateTimelineEventResponse' {} a -> s {incidentRecordArn = a} :: CreateTimelineEventResponse)
+
+instance Prelude.NFData CreateTimelineEventResponse where
+  rnf CreateTimelineEventResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf eventId
+      `Prelude.seq` Prelude.rnf incidentRecordArn
diff --git a/gen/Amazonka/SSMIncidents/DeleteIncidentRecord.hs b/gen/Amazonka/SSMIncidents/DeleteIncidentRecord.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/DeleteIncidentRecord.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.SSMIncidents.DeleteIncidentRecord
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Delete an incident record from Incident Manager.
+module Amazonka.SSMIncidents.DeleteIncidentRecord
+  ( -- * Creating a Request
+    DeleteIncidentRecord (..),
+    newDeleteIncidentRecord,
+
+    -- * Request Lenses
+    deleteIncidentRecord_arn,
+
+    -- * Destructuring the Response
+    DeleteIncidentRecordResponse (..),
+    newDeleteIncidentRecordResponse,
+
+    -- * Response Lenses
+    deleteIncidentRecordResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SSMIncidents.Types
+
+-- | /See:/ 'newDeleteIncidentRecord' smart constructor.
+data DeleteIncidentRecord = DeleteIncidentRecord'
+  { -- | The Amazon Resource Name (ARN) of the incident record you are deleting.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteIncidentRecord' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'deleteIncidentRecord_arn' - The Amazon Resource Name (ARN) of the incident record you are deleting.
+newDeleteIncidentRecord ::
+  -- | 'arn'
+  Prelude.Text ->
+  DeleteIncidentRecord
+newDeleteIncidentRecord pArn_ =
+  DeleteIncidentRecord' {arn = pArn_}
+
+-- | The Amazon Resource Name (ARN) of the incident record you are deleting.
+deleteIncidentRecord_arn :: Lens.Lens' DeleteIncidentRecord Prelude.Text
+deleteIncidentRecord_arn = Lens.lens (\DeleteIncidentRecord' {arn} -> arn) (\s@DeleteIncidentRecord' {} a -> s {arn = a} :: DeleteIncidentRecord)
+
+instance Core.AWSRequest DeleteIncidentRecord where
+  type
+    AWSResponse DeleteIncidentRecord =
+      DeleteIncidentRecordResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteIncidentRecordResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteIncidentRecord where
+  hashWithSalt _salt DeleteIncidentRecord' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData DeleteIncidentRecord where
+  rnf DeleteIncidentRecord' {..} = Prelude.rnf arn
+
+instance Data.ToHeaders DeleteIncidentRecord where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteIncidentRecord where
+  toJSON DeleteIncidentRecord' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("arn" Data..= arn)]
+      )
+
+instance Data.ToPath DeleteIncidentRecord where
+  toPath = Prelude.const "/deleteIncidentRecord"
+
+instance Data.ToQuery DeleteIncidentRecord where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteIncidentRecordResponse' smart constructor.
+data DeleteIncidentRecordResponse = DeleteIncidentRecordResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteIncidentRecordResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'deleteIncidentRecordResponse_httpStatus' - The response's http status code.
+newDeleteIncidentRecordResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteIncidentRecordResponse
+newDeleteIncidentRecordResponse pHttpStatus_ =
+  DeleteIncidentRecordResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+deleteIncidentRecordResponse_httpStatus :: Lens.Lens' DeleteIncidentRecordResponse Prelude.Int
+deleteIncidentRecordResponse_httpStatus = Lens.lens (\DeleteIncidentRecordResponse' {httpStatus} -> httpStatus) (\s@DeleteIncidentRecordResponse' {} a -> s {httpStatus = a} :: DeleteIncidentRecordResponse)
+
+instance Prelude.NFData DeleteIncidentRecordResponse where
+  rnf DeleteIncidentRecordResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SSMIncidents/DeleteReplicationSet.hs b/gen/Amazonka/SSMIncidents/DeleteReplicationSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/DeleteReplicationSet.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.SSMIncidents.DeleteReplicationSet
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes all Regions in your replication set. Deleting the replication
+-- set deletes all Incident Manager data.
+module Amazonka.SSMIncidents.DeleteReplicationSet
+  ( -- * Creating a Request
+    DeleteReplicationSet (..),
+    newDeleteReplicationSet,
+
+    -- * Request Lenses
+    deleteReplicationSet_arn,
+
+    -- * Destructuring the Response
+    DeleteReplicationSetResponse (..),
+    newDeleteReplicationSetResponse,
+
+    -- * Response Lenses
+    deleteReplicationSetResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SSMIncidents.Types
+
+-- | /See:/ 'newDeleteReplicationSet' smart constructor.
+data DeleteReplicationSet = DeleteReplicationSet'
+  { -- | The Amazon Resource Name (ARN) of the replication set you\'re deleting.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteReplicationSet' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'deleteReplicationSet_arn' - The Amazon Resource Name (ARN) of the replication set you\'re deleting.
+newDeleteReplicationSet ::
+  -- | 'arn'
+  Prelude.Text ->
+  DeleteReplicationSet
+newDeleteReplicationSet pArn_ =
+  DeleteReplicationSet' {arn = pArn_}
+
+-- | The Amazon Resource Name (ARN) of the replication set you\'re deleting.
+deleteReplicationSet_arn :: Lens.Lens' DeleteReplicationSet Prelude.Text
+deleteReplicationSet_arn = Lens.lens (\DeleteReplicationSet' {arn} -> arn) (\s@DeleteReplicationSet' {} a -> s {arn = a} :: DeleteReplicationSet)
+
+instance Core.AWSRequest DeleteReplicationSet where
+  type
+    AWSResponse DeleteReplicationSet =
+      DeleteReplicationSetResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteReplicationSetResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteReplicationSet where
+  hashWithSalt _salt DeleteReplicationSet' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData DeleteReplicationSet where
+  rnf DeleteReplicationSet' {..} = Prelude.rnf arn
+
+instance Data.ToHeaders DeleteReplicationSet where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteReplicationSet where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath DeleteReplicationSet where
+  toPath = Prelude.const "/deleteReplicationSet"
+
+instance Data.ToQuery DeleteReplicationSet where
+  toQuery DeleteReplicationSet' {..} =
+    Prelude.mconcat ["arn" Data.=: arn]
+
+-- | /See:/ 'newDeleteReplicationSetResponse' smart constructor.
+data DeleteReplicationSetResponse = DeleteReplicationSetResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteReplicationSetResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'deleteReplicationSetResponse_httpStatus' - The response's http status code.
+newDeleteReplicationSetResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteReplicationSetResponse
+newDeleteReplicationSetResponse pHttpStatus_ =
+  DeleteReplicationSetResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+deleteReplicationSetResponse_httpStatus :: Lens.Lens' DeleteReplicationSetResponse Prelude.Int
+deleteReplicationSetResponse_httpStatus = Lens.lens (\DeleteReplicationSetResponse' {httpStatus} -> httpStatus) (\s@DeleteReplicationSetResponse' {} a -> s {httpStatus = a} :: DeleteReplicationSetResponse)
+
+instance Prelude.NFData DeleteReplicationSetResponse where
+  rnf DeleteReplicationSetResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SSMIncidents/DeleteResourcePolicy.hs b/gen/Amazonka/SSMIncidents/DeleteResourcePolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/DeleteResourcePolicy.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.SSMIncidents.DeleteResourcePolicy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the resource policy that Resource Access Manager uses to share
+-- your Incident Manager resource.
+module Amazonka.SSMIncidents.DeleteResourcePolicy
+  ( -- * Creating a Request
+    DeleteResourcePolicy (..),
+    newDeleteResourcePolicy,
+
+    -- * Request Lenses
+    deleteResourcePolicy_policyId,
+    deleteResourcePolicy_resourceArn,
+
+    -- * Destructuring the Response
+    DeleteResourcePolicyResponse (..),
+    newDeleteResourcePolicyResponse,
+
+    -- * Response Lenses
+    deleteResourcePolicyResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SSMIncidents.Types
+
+-- | /See:/ 'newDeleteResourcePolicy' smart constructor.
+data DeleteResourcePolicy = DeleteResourcePolicy'
+  { -- | The ID of the resource policy you\'re deleting.
+    policyId :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the resource you\'re deleting the
+    -- policy from.
+    resourceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteResourcePolicy' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'policyId', 'deleteResourcePolicy_policyId' - The ID of the resource policy you\'re deleting.
+--
+-- 'resourceArn', 'deleteResourcePolicy_resourceArn' - The Amazon Resource Name (ARN) of the resource you\'re deleting the
+-- policy from.
+newDeleteResourcePolicy ::
+  -- | 'policyId'
+  Prelude.Text ->
+  -- | 'resourceArn'
+  Prelude.Text ->
+  DeleteResourcePolicy
+newDeleteResourcePolicy pPolicyId_ pResourceArn_ =
+  DeleteResourcePolicy'
+    { policyId = pPolicyId_,
+      resourceArn = pResourceArn_
+    }
+
+-- | The ID of the resource policy you\'re deleting.
+deleteResourcePolicy_policyId :: Lens.Lens' DeleteResourcePolicy Prelude.Text
+deleteResourcePolicy_policyId = Lens.lens (\DeleteResourcePolicy' {policyId} -> policyId) (\s@DeleteResourcePolicy' {} a -> s {policyId = a} :: DeleteResourcePolicy)
+
+-- | The Amazon Resource Name (ARN) of the resource you\'re deleting the
+-- policy from.
+deleteResourcePolicy_resourceArn :: Lens.Lens' DeleteResourcePolicy Prelude.Text
+deleteResourcePolicy_resourceArn = Lens.lens (\DeleteResourcePolicy' {resourceArn} -> resourceArn) (\s@DeleteResourcePolicy' {} a -> s {resourceArn = a} :: DeleteResourcePolicy)
+
+instance Core.AWSRequest DeleteResourcePolicy where
+  type
+    AWSResponse DeleteResourcePolicy =
+      DeleteResourcePolicyResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteResourcePolicyResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteResourcePolicy where
+  hashWithSalt _salt DeleteResourcePolicy' {..} =
+    _salt
+      `Prelude.hashWithSalt` policyId
+      `Prelude.hashWithSalt` resourceArn
+
+instance Prelude.NFData DeleteResourcePolicy where
+  rnf DeleteResourcePolicy' {..} =
+    Prelude.rnf policyId
+      `Prelude.seq` Prelude.rnf resourceArn
+
+instance Data.ToHeaders DeleteResourcePolicy where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteResourcePolicy where
+  toJSON DeleteResourcePolicy' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("policyId" Data..= policyId),
+            Prelude.Just ("resourceArn" Data..= resourceArn)
+          ]
+      )
+
+instance Data.ToPath DeleteResourcePolicy where
+  toPath = Prelude.const "/deleteResourcePolicy"
+
+instance Data.ToQuery DeleteResourcePolicy where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteResourcePolicyResponse' smart constructor.
+data DeleteResourcePolicyResponse = DeleteResourcePolicyResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteResourcePolicyResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'deleteResourcePolicyResponse_httpStatus' - The response's http status code.
+newDeleteResourcePolicyResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteResourcePolicyResponse
+newDeleteResourcePolicyResponse pHttpStatus_ =
+  DeleteResourcePolicyResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+deleteResourcePolicyResponse_httpStatus :: Lens.Lens' DeleteResourcePolicyResponse Prelude.Int
+deleteResourcePolicyResponse_httpStatus = Lens.lens (\DeleteResourcePolicyResponse' {httpStatus} -> httpStatus) (\s@DeleteResourcePolicyResponse' {} a -> s {httpStatus = a} :: DeleteResourcePolicyResponse)
+
+instance Prelude.NFData DeleteResourcePolicyResponse where
+  rnf DeleteResourcePolicyResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SSMIncidents/DeleteResponsePlan.hs b/gen/Amazonka/SSMIncidents/DeleteResponsePlan.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/DeleteResponsePlan.hs
@@ -0,0 +1,154 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.DeleteResponsePlan
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the specified response plan. Deleting a response plan stops all
+-- linked CloudWatch alarms and EventBridge events from creating an
+-- incident with this response plan.
+module Amazonka.SSMIncidents.DeleteResponsePlan
+  ( -- * Creating a Request
+    DeleteResponsePlan (..),
+    newDeleteResponsePlan,
+
+    -- * Request Lenses
+    deleteResponsePlan_arn,
+
+    -- * Destructuring the Response
+    DeleteResponsePlanResponse (..),
+    newDeleteResponsePlanResponse,
+
+    -- * Response Lenses
+    deleteResponsePlanResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SSMIncidents.Types
+
+-- | /See:/ 'newDeleteResponsePlan' smart constructor.
+data DeleteResponsePlan = DeleteResponsePlan'
+  { -- | The Amazon Resource Name (ARN) of the response plan.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteResponsePlan' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'deleteResponsePlan_arn' - The Amazon Resource Name (ARN) of the response plan.
+newDeleteResponsePlan ::
+  -- | 'arn'
+  Prelude.Text ->
+  DeleteResponsePlan
+newDeleteResponsePlan pArn_ =
+  DeleteResponsePlan' {arn = pArn_}
+
+-- | The Amazon Resource Name (ARN) of the response plan.
+deleteResponsePlan_arn :: Lens.Lens' DeleteResponsePlan Prelude.Text
+deleteResponsePlan_arn = Lens.lens (\DeleteResponsePlan' {arn} -> arn) (\s@DeleteResponsePlan' {} a -> s {arn = a} :: DeleteResponsePlan)
+
+instance Core.AWSRequest DeleteResponsePlan where
+  type
+    AWSResponse DeleteResponsePlan =
+      DeleteResponsePlanResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteResponsePlanResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteResponsePlan where
+  hashWithSalt _salt DeleteResponsePlan' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData DeleteResponsePlan where
+  rnf DeleteResponsePlan' {..} = Prelude.rnf arn
+
+instance Data.ToHeaders DeleteResponsePlan where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteResponsePlan where
+  toJSON DeleteResponsePlan' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("arn" Data..= arn)]
+      )
+
+instance Data.ToPath DeleteResponsePlan where
+  toPath = Prelude.const "/deleteResponsePlan"
+
+instance Data.ToQuery DeleteResponsePlan where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteResponsePlanResponse' smart constructor.
+data DeleteResponsePlanResponse = DeleteResponsePlanResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteResponsePlanResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'deleteResponsePlanResponse_httpStatus' - The response's http status code.
+newDeleteResponsePlanResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteResponsePlanResponse
+newDeleteResponsePlanResponse pHttpStatus_ =
+  DeleteResponsePlanResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+deleteResponsePlanResponse_httpStatus :: Lens.Lens' DeleteResponsePlanResponse Prelude.Int
+deleteResponsePlanResponse_httpStatus = Lens.lens (\DeleteResponsePlanResponse' {httpStatus} -> httpStatus) (\s@DeleteResponsePlanResponse' {} a -> s {httpStatus = a} :: DeleteResponsePlanResponse)
+
+instance Prelude.NFData DeleteResponsePlanResponse where
+  rnf DeleteResponsePlanResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SSMIncidents/DeleteTimelineEvent.hs b/gen/Amazonka/SSMIncidents/DeleteTimelineEvent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/DeleteTimelineEvent.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.SSMIncidents.DeleteTimelineEvent
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a timeline event from an incident.
+module Amazonka.SSMIncidents.DeleteTimelineEvent
+  ( -- * Creating a Request
+    DeleteTimelineEvent (..),
+    newDeleteTimelineEvent,
+
+    -- * Request Lenses
+    deleteTimelineEvent_eventId,
+    deleteTimelineEvent_incidentRecordArn,
+
+    -- * Destructuring the Response
+    DeleteTimelineEventResponse (..),
+    newDeleteTimelineEventResponse,
+
+    -- * Response Lenses
+    deleteTimelineEventResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SSMIncidents.Types
+
+-- | /See:/ 'newDeleteTimelineEvent' smart constructor.
+data DeleteTimelineEvent = DeleteTimelineEvent'
+  { -- | The ID of the event you are updating. You can find this by using
+    -- @ListTimelineEvents@.
+    eventId :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the incident that includes the
+    -- timeline event.
+    incidentRecordArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteTimelineEvent' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'eventId', 'deleteTimelineEvent_eventId' - The ID of the event you are updating. You can find this by using
+-- @ListTimelineEvents@.
+--
+-- 'incidentRecordArn', 'deleteTimelineEvent_incidentRecordArn' - The Amazon Resource Name (ARN) of the incident that includes the
+-- timeline event.
+newDeleteTimelineEvent ::
+  -- | 'eventId'
+  Prelude.Text ->
+  -- | 'incidentRecordArn'
+  Prelude.Text ->
+  DeleteTimelineEvent
+newDeleteTimelineEvent pEventId_ pIncidentRecordArn_ =
+  DeleteTimelineEvent'
+    { eventId = pEventId_,
+      incidentRecordArn = pIncidentRecordArn_
+    }
+
+-- | The ID of the event you are updating. You can find this by using
+-- @ListTimelineEvents@.
+deleteTimelineEvent_eventId :: Lens.Lens' DeleteTimelineEvent Prelude.Text
+deleteTimelineEvent_eventId = Lens.lens (\DeleteTimelineEvent' {eventId} -> eventId) (\s@DeleteTimelineEvent' {} a -> s {eventId = a} :: DeleteTimelineEvent)
+
+-- | The Amazon Resource Name (ARN) of the incident that includes the
+-- timeline event.
+deleteTimelineEvent_incidentRecordArn :: Lens.Lens' DeleteTimelineEvent Prelude.Text
+deleteTimelineEvent_incidentRecordArn = Lens.lens (\DeleteTimelineEvent' {incidentRecordArn} -> incidentRecordArn) (\s@DeleteTimelineEvent' {} a -> s {incidentRecordArn = a} :: DeleteTimelineEvent)
+
+instance Core.AWSRequest DeleteTimelineEvent where
+  type
+    AWSResponse DeleteTimelineEvent =
+      DeleteTimelineEventResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteTimelineEventResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteTimelineEvent where
+  hashWithSalt _salt DeleteTimelineEvent' {..} =
+    _salt
+      `Prelude.hashWithSalt` eventId
+      `Prelude.hashWithSalt` incidentRecordArn
+
+instance Prelude.NFData DeleteTimelineEvent where
+  rnf DeleteTimelineEvent' {..} =
+    Prelude.rnf eventId
+      `Prelude.seq` Prelude.rnf incidentRecordArn
+
+instance Data.ToHeaders DeleteTimelineEvent where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteTimelineEvent where
+  toJSON DeleteTimelineEvent' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("eventId" Data..= eventId),
+            Prelude.Just
+              ("incidentRecordArn" Data..= incidentRecordArn)
+          ]
+      )
+
+instance Data.ToPath DeleteTimelineEvent where
+  toPath = Prelude.const "/deleteTimelineEvent"
+
+instance Data.ToQuery DeleteTimelineEvent where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteTimelineEventResponse' smart constructor.
+data DeleteTimelineEventResponse = DeleteTimelineEventResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteTimelineEventResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'deleteTimelineEventResponse_httpStatus' - The response's http status code.
+newDeleteTimelineEventResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteTimelineEventResponse
+newDeleteTimelineEventResponse pHttpStatus_ =
+  DeleteTimelineEventResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+deleteTimelineEventResponse_httpStatus :: Lens.Lens' DeleteTimelineEventResponse Prelude.Int
+deleteTimelineEventResponse_httpStatus = Lens.lens (\DeleteTimelineEventResponse' {httpStatus} -> httpStatus) (\s@DeleteTimelineEventResponse' {} a -> s {httpStatus = a} :: DeleteTimelineEventResponse)
+
+instance Prelude.NFData DeleteTimelineEventResponse where
+  rnf DeleteTimelineEventResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SSMIncidents/GetIncidentRecord.hs b/gen/Amazonka/SSMIncidents/GetIncidentRecord.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/GetIncidentRecord.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.SSMIncidents.GetIncidentRecord
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the details for the specified incident record.
+module Amazonka.SSMIncidents.GetIncidentRecord
+  ( -- * Creating a Request
+    GetIncidentRecord (..),
+    newGetIncidentRecord,
+
+    -- * Request Lenses
+    getIncidentRecord_arn,
+
+    -- * Destructuring the Response
+    GetIncidentRecordResponse (..),
+    newGetIncidentRecordResponse,
+
+    -- * Response Lenses
+    getIncidentRecordResponse_httpStatus,
+    getIncidentRecordResponse_incidentRecord,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SSMIncidents.Types
+
+-- | /See:/ 'newGetIncidentRecord' smart constructor.
+data GetIncidentRecord = GetIncidentRecord'
+  { -- | The Amazon Resource Name (ARN) of the incident record.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetIncidentRecord' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'getIncidentRecord_arn' - The Amazon Resource Name (ARN) of the incident record.
+newGetIncidentRecord ::
+  -- | 'arn'
+  Prelude.Text ->
+  GetIncidentRecord
+newGetIncidentRecord pArn_ =
+  GetIncidentRecord' {arn = pArn_}
+
+-- | The Amazon Resource Name (ARN) of the incident record.
+getIncidentRecord_arn :: Lens.Lens' GetIncidentRecord Prelude.Text
+getIncidentRecord_arn = Lens.lens (\GetIncidentRecord' {arn} -> arn) (\s@GetIncidentRecord' {} a -> s {arn = a} :: GetIncidentRecord)
+
+instance Core.AWSRequest GetIncidentRecord where
+  type
+    AWSResponse GetIncidentRecord =
+      GetIncidentRecordResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetIncidentRecordResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "incidentRecord")
+      )
+
+instance Prelude.Hashable GetIncidentRecord where
+  hashWithSalt _salt GetIncidentRecord' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData GetIncidentRecord where
+  rnf GetIncidentRecord' {..} = Prelude.rnf arn
+
+instance Data.ToHeaders GetIncidentRecord where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetIncidentRecord where
+  toPath = Prelude.const "/getIncidentRecord"
+
+instance Data.ToQuery GetIncidentRecord where
+  toQuery GetIncidentRecord' {..} =
+    Prelude.mconcat ["arn" Data.=: arn]
+
+-- | /See:/ 'newGetIncidentRecordResponse' smart constructor.
+data GetIncidentRecordResponse = GetIncidentRecordResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Details the structure of the incident record.
+    incidentRecord :: IncidentRecord
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetIncidentRecordResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'getIncidentRecordResponse_httpStatus' - The response's http status code.
+--
+-- 'incidentRecord', 'getIncidentRecordResponse_incidentRecord' - Details the structure of the incident record.
+newGetIncidentRecordResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'incidentRecord'
+  IncidentRecord ->
+  GetIncidentRecordResponse
+newGetIncidentRecordResponse
+  pHttpStatus_
+  pIncidentRecord_ =
+    GetIncidentRecordResponse'
+      { httpStatus =
+          pHttpStatus_,
+        incidentRecord = pIncidentRecord_
+      }
+
+-- | The response's http status code.
+getIncidentRecordResponse_httpStatus :: Lens.Lens' GetIncidentRecordResponse Prelude.Int
+getIncidentRecordResponse_httpStatus = Lens.lens (\GetIncidentRecordResponse' {httpStatus} -> httpStatus) (\s@GetIncidentRecordResponse' {} a -> s {httpStatus = a} :: GetIncidentRecordResponse)
+
+-- | Details the structure of the incident record.
+getIncidentRecordResponse_incidentRecord :: Lens.Lens' GetIncidentRecordResponse IncidentRecord
+getIncidentRecordResponse_incidentRecord = Lens.lens (\GetIncidentRecordResponse' {incidentRecord} -> incidentRecord) (\s@GetIncidentRecordResponse' {} a -> s {incidentRecord = a} :: GetIncidentRecordResponse)
+
+instance Prelude.NFData GetIncidentRecordResponse where
+  rnf GetIncidentRecordResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf incidentRecord
diff --git a/gen/Amazonka/SSMIncidents/GetReplicationSet.hs b/gen/Amazonka/SSMIncidents/GetReplicationSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/GetReplicationSet.hs
@@ -0,0 +1,165 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.GetReplicationSet
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieve your Incident Manager replication set.
+module Amazonka.SSMIncidents.GetReplicationSet
+  ( -- * Creating a Request
+    GetReplicationSet (..),
+    newGetReplicationSet,
+
+    -- * Request Lenses
+    getReplicationSet_arn,
+
+    -- * Destructuring the Response
+    GetReplicationSetResponse (..),
+    newGetReplicationSetResponse,
+
+    -- * Response Lenses
+    getReplicationSetResponse_httpStatus,
+    getReplicationSetResponse_replicationSet,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SSMIncidents.Types
+
+-- | /See:/ 'newGetReplicationSet' smart constructor.
+data GetReplicationSet = GetReplicationSet'
+  { -- | The Amazon Resource Name (ARN) of the replication set you want to
+    -- retrieve.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetReplicationSet' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'getReplicationSet_arn' - The Amazon Resource Name (ARN) of the replication set you want to
+-- retrieve.
+newGetReplicationSet ::
+  -- | 'arn'
+  Prelude.Text ->
+  GetReplicationSet
+newGetReplicationSet pArn_ =
+  GetReplicationSet' {arn = pArn_}
+
+-- | The Amazon Resource Name (ARN) of the replication set you want to
+-- retrieve.
+getReplicationSet_arn :: Lens.Lens' GetReplicationSet Prelude.Text
+getReplicationSet_arn = Lens.lens (\GetReplicationSet' {arn} -> arn) (\s@GetReplicationSet' {} a -> s {arn = a} :: GetReplicationSet)
+
+instance Core.AWSRequest GetReplicationSet where
+  type
+    AWSResponse GetReplicationSet =
+      GetReplicationSetResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetReplicationSetResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "replicationSet")
+      )
+
+instance Prelude.Hashable GetReplicationSet where
+  hashWithSalt _salt GetReplicationSet' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData GetReplicationSet where
+  rnf GetReplicationSet' {..} = Prelude.rnf arn
+
+instance Data.ToHeaders GetReplicationSet where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetReplicationSet where
+  toPath = Prelude.const "/getReplicationSet"
+
+instance Data.ToQuery GetReplicationSet where
+  toQuery GetReplicationSet' {..} =
+    Prelude.mconcat ["arn" Data.=: arn]
+
+-- | /See:/ 'newGetReplicationSetResponse' smart constructor.
+data GetReplicationSetResponse = GetReplicationSetResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Details of the replication set.
+    replicationSet :: ReplicationSet
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetReplicationSetResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'getReplicationSetResponse_httpStatus' - The response's http status code.
+--
+-- 'replicationSet', 'getReplicationSetResponse_replicationSet' - Details of the replication set.
+newGetReplicationSetResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'replicationSet'
+  ReplicationSet ->
+  GetReplicationSetResponse
+newGetReplicationSetResponse
+  pHttpStatus_
+  pReplicationSet_ =
+    GetReplicationSetResponse'
+      { httpStatus =
+          pHttpStatus_,
+        replicationSet = pReplicationSet_
+      }
+
+-- | The response's http status code.
+getReplicationSetResponse_httpStatus :: Lens.Lens' GetReplicationSetResponse Prelude.Int
+getReplicationSetResponse_httpStatus = Lens.lens (\GetReplicationSetResponse' {httpStatus} -> httpStatus) (\s@GetReplicationSetResponse' {} a -> s {httpStatus = a} :: GetReplicationSetResponse)
+
+-- | Details of the replication set.
+getReplicationSetResponse_replicationSet :: Lens.Lens' GetReplicationSetResponse ReplicationSet
+getReplicationSetResponse_replicationSet = Lens.lens (\GetReplicationSetResponse' {replicationSet} -> replicationSet) (\s@GetReplicationSetResponse' {} a -> s {replicationSet = a} :: GetReplicationSetResponse)
+
+instance Prelude.NFData GetReplicationSetResponse where
+  rnf GetReplicationSetResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf replicationSet
diff --git a/gen/Amazonka/SSMIncidents/GetResourcePolicies.hs b/gen/Amazonka/SSMIncidents/GetResourcePolicies.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/GetResourcePolicies.hs
@@ -0,0 +1,239 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.GetResourcePolicies
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves the resource policies attached to the specified response plan.
+--
+-- This operation returns paginated results.
+module Amazonka.SSMIncidents.GetResourcePolicies
+  ( -- * Creating a Request
+    GetResourcePolicies (..),
+    newGetResourcePolicies,
+
+    -- * Request Lenses
+    getResourcePolicies_maxResults,
+    getResourcePolicies_nextToken,
+    getResourcePolicies_resourceArn,
+
+    -- * Destructuring the Response
+    GetResourcePoliciesResponse (..),
+    newGetResourcePoliciesResponse,
+
+    -- * Response Lenses
+    getResourcePoliciesResponse_nextToken,
+    getResourcePoliciesResponse_httpStatus,
+    getResourcePoliciesResponse_resourcePolicies,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SSMIncidents.Types
+
+-- | /See:/ 'newGetResourcePolicies' smart constructor.
+data GetResourcePolicies = GetResourcePolicies'
+  { -- | The maximum number of resource policies to display for each page of
+    -- results.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The pagination token to continue to the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the response plan with the attached
+    -- resource policy.
+    resourceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetResourcePolicies' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getResourcePolicies_maxResults' - The maximum number of resource policies to display for each page of
+-- results.
+--
+-- 'nextToken', 'getResourcePolicies_nextToken' - The pagination token to continue to the next page of results.
+--
+-- 'resourceArn', 'getResourcePolicies_resourceArn' - The Amazon Resource Name (ARN) of the response plan with the attached
+-- resource policy.
+newGetResourcePolicies ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  GetResourcePolicies
+newGetResourcePolicies pResourceArn_ =
+  GetResourcePolicies'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      resourceArn = pResourceArn_
+    }
+
+-- | The maximum number of resource policies to display for each page of
+-- results.
+getResourcePolicies_maxResults :: Lens.Lens' GetResourcePolicies (Prelude.Maybe Prelude.Natural)
+getResourcePolicies_maxResults = Lens.lens (\GetResourcePolicies' {maxResults} -> maxResults) (\s@GetResourcePolicies' {} a -> s {maxResults = a} :: GetResourcePolicies)
+
+-- | The pagination token to continue to the next page of results.
+getResourcePolicies_nextToken :: Lens.Lens' GetResourcePolicies (Prelude.Maybe Prelude.Text)
+getResourcePolicies_nextToken = Lens.lens (\GetResourcePolicies' {nextToken} -> nextToken) (\s@GetResourcePolicies' {} a -> s {nextToken = a} :: GetResourcePolicies)
+
+-- | The Amazon Resource Name (ARN) of the response plan with the attached
+-- resource policy.
+getResourcePolicies_resourceArn :: Lens.Lens' GetResourcePolicies Prelude.Text
+getResourcePolicies_resourceArn = Lens.lens (\GetResourcePolicies' {resourceArn} -> resourceArn) (\s@GetResourcePolicies' {} a -> s {resourceArn = a} :: GetResourcePolicies)
+
+instance Core.AWSPager GetResourcePolicies where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? getResourcePoliciesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. getResourcePoliciesResponse_resourcePolicies
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& getResourcePolicies_nextToken
+          Lens..~ rs
+          Lens.^? getResourcePoliciesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest GetResourcePolicies where
+  type
+    AWSResponse GetResourcePolicies =
+      GetResourcePoliciesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetResourcePoliciesResponse'
+            Prelude.<$> (x Data..?> "nextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "resourcePolicies"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable GetResourcePolicies where
+  hashWithSalt _salt GetResourcePolicies' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` resourceArn
+
+instance Prelude.NFData GetResourcePolicies where
+  rnf GetResourcePolicies' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf resourceArn
+
+instance Data.ToHeaders GetResourcePolicies where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON GetResourcePolicies where
+  toJSON GetResourcePolicies' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("maxResults" Data..=) Prelude.<$> maxResults,
+            ("nextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath GetResourcePolicies where
+  toPath = Prelude.const "/getResourcePolicies"
+
+instance Data.ToQuery GetResourcePolicies where
+  toQuery GetResourcePolicies' {..} =
+    Prelude.mconcat ["resourceArn" Data.=: resourceArn]
+
+-- | /See:/ 'newGetResourcePoliciesResponse' smart constructor.
+data GetResourcePoliciesResponse = GetResourcePoliciesResponse'
+  { -- | The pagination token to continue to the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Details about the resource policy attached to the response plan.
+    resourcePolicies :: [ResourcePolicy]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetResourcePoliciesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getResourcePoliciesResponse_nextToken' - The pagination token to continue to the next page of results.
+--
+-- 'httpStatus', 'getResourcePoliciesResponse_httpStatus' - The response's http status code.
+--
+-- 'resourcePolicies', 'getResourcePoliciesResponse_resourcePolicies' - Details about the resource policy attached to the response plan.
+newGetResourcePoliciesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetResourcePoliciesResponse
+newGetResourcePoliciesResponse pHttpStatus_ =
+  GetResourcePoliciesResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      resourcePolicies = Prelude.mempty
+    }
+
+-- | The pagination token to continue to the next page of results.
+getResourcePoliciesResponse_nextToken :: Lens.Lens' GetResourcePoliciesResponse (Prelude.Maybe Prelude.Text)
+getResourcePoliciesResponse_nextToken = Lens.lens (\GetResourcePoliciesResponse' {nextToken} -> nextToken) (\s@GetResourcePoliciesResponse' {} a -> s {nextToken = a} :: GetResourcePoliciesResponse)
+
+-- | The response's http status code.
+getResourcePoliciesResponse_httpStatus :: Lens.Lens' GetResourcePoliciesResponse Prelude.Int
+getResourcePoliciesResponse_httpStatus = Lens.lens (\GetResourcePoliciesResponse' {httpStatus} -> httpStatus) (\s@GetResourcePoliciesResponse' {} a -> s {httpStatus = a} :: GetResourcePoliciesResponse)
+
+-- | Details about the resource policy attached to the response plan.
+getResourcePoliciesResponse_resourcePolicies :: Lens.Lens' GetResourcePoliciesResponse [ResourcePolicy]
+getResourcePoliciesResponse_resourcePolicies = Lens.lens (\GetResourcePoliciesResponse' {resourcePolicies} -> resourcePolicies) (\s@GetResourcePoliciesResponse' {} a -> s {resourcePolicies = a} :: GetResourcePoliciesResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData GetResourcePoliciesResponse where
+  rnf GetResourcePoliciesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf resourcePolicies
diff --git a/gen/Amazonka/SSMIncidents/GetResponsePlan.hs b/gen/Amazonka/SSMIncidents/GetResponsePlan.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/GetResponsePlan.hs
@@ -0,0 +1,263 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.GetResponsePlan
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves the details of the specified response plan.
+module Amazonka.SSMIncidents.GetResponsePlan
+  ( -- * Creating a Request
+    GetResponsePlan (..),
+    newGetResponsePlan,
+
+    -- * Request Lenses
+    getResponsePlan_arn,
+
+    -- * Destructuring the Response
+    GetResponsePlanResponse (..),
+    newGetResponsePlanResponse,
+
+    -- * Response Lenses
+    getResponsePlanResponse_actions,
+    getResponsePlanResponse_chatChannel,
+    getResponsePlanResponse_displayName,
+    getResponsePlanResponse_engagements,
+    getResponsePlanResponse_integrations,
+    getResponsePlanResponse_httpStatus,
+    getResponsePlanResponse_arn,
+    getResponsePlanResponse_incidentTemplate,
+    getResponsePlanResponse_name,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SSMIncidents.Types
+
+-- | /See:/ 'newGetResponsePlan' smart constructor.
+data GetResponsePlan = GetResponsePlan'
+  { -- | The Amazon Resource Name (ARN) of the response plan.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetResponsePlan' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'getResponsePlan_arn' - The Amazon Resource Name (ARN) of the response plan.
+newGetResponsePlan ::
+  -- | 'arn'
+  Prelude.Text ->
+  GetResponsePlan
+newGetResponsePlan pArn_ =
+  GetResponsePlan' {arn = pArn_}
+
+-- | The Amazon Resource Name (ARN) of the response plan.
+getResponsePlan_arn :: Lens.Lens' GetResponsePlan Prelude.Text
+getResponsePlan_arn = Lens.lens (\GetResponsePlan' {arn} -> arn) (\s@GetResponsePlan' {} a -> s {arn = a} :: GetResponsePlan)
+
+instance Core.AWSRequest GetResponsePlan where
+  type
+    AWSResponse GetResponsePlan =
+      GetResponsePlanResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetResponsePlanResponse'
+            Prelude.<$> (x Data..?> "actions" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "chatChannel")
+            Prelude.<*> (x Data..?> "displayName")
+            Prelude.<*> (x Data..?> "engagements" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "integrations" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "arn")
+            Prelude.<*> (x Data..:> "incidentTemplate")
+            Prelude.<*> (x Data..:> "name")
+      )
+
+instance Prelude.Hashable GetResponsePlan where
+  hashWithSalt _salt GetResponsePlan' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData GetResponsePlan where
+  rnf GetResponsePlan' {..} = Prelude.rnf arn
+
+instance Data.ToHeaders GetResponsePlan where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetResponsePlan where
+  toPath = Prelude.const "/getResponsePlan"
+
+instance Data.ToQuery GetResponsePlan where
+  toQuery GetResponsePlan' {..} =
+    Prelude.mconcat ["arn" Data.=: arn]
+
+-- | /See:/ 'newGetResponsePlanResponse' smart constructor.
+data GetResponsePlanResponse = GetResponsePlanResponse'
+  { -- | The actions that this response plan takes at the beginning of the
+    -- incident.
+    actions :: Prelude.Maybe [Action],
+    -- | The Chatbot chat channel used for collaboration during an incident.
+    chatChannel :: Prelude.Maybe ChatChannel,
+    -- | The long format name of the response plan. Can contain spaces.
+    displayName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) for the contacts and escalation plans
+    -- that the response plan engages during an incident.
+    engagements :: Prelude.Maybe [Prelude.Text],
+    -- | Information about third-party services integrated into the Incident
+    -- Manager response plan.
+    integrations :: Prelude.Maybe [Integration],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The ARN of the response plan.
+    arn :: Prelude.Text,
+    -- | Details used to create the incident when using this response plan.
+    incidentTemplate :: IncidentTemplate,
+    -- | The short format name of the response plan. The name can\'t contain
+    -- spaces.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetResponsePlanResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'actions', 'getResponsePlanResponse_actions' - The actions that this response plan takes at the beginning of the
+-- incident.
+--
+-- 'chatChannel', 'getResponsePlanResponse_chatChannel' - The Chatbot chat channel used for collaboration during an incident.
+--
+-- 'displayName', 'getResponsePlanResponse_displayName' - The long format name of the response plan. Can contain spaces.
+--
+-- 'engagements', 'getResponsePlanResponse_engagements' - The Amazon Resource Name (ARN) for the contacts and escalation plans
+-- that the response plan engages during an incident.
+--
+-- 'integrations', 'getResponsePlanResponse_integrations' - Information about third-party services integrated into the Incident
+-- Manager response plan.
+--
+-- 'httpStatus', 'getResponsePlanResponse_httpStatus' - The response's http status code.
+--
+-- 'arn', 'getResponsePlanResponse_arn' - The ARN of the response plan.
+--
+-- 'incidentTemplate', 'getResponsePlanResponse_incidentTemplate' - Details used to create the incident when using this response plan.
+--
+-- 'name', 'getResponsePlanResponse_name' - The short format name of the response plan. The name can\'t contain
+-- spaces.
+newGetResponsePlanResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'arn'
+  Prelude.Text ->
+  -- | 'incidentTemplate'
+  IncidentTemplate ->
+  -- | 'name'
+  Prelude.Text ->
+  GetResponsePlanResponse
+newGetResponsePlanResponse
+  pHttpStatus_
+  pArn_
+  pIncidentTemplate_
+  pName_ =
+    GetResponsePlanResponse'
+      { actions = Prelude.Nothing,
+        chatChannel = Prelude.Nothing,
+        displayName = Prelude.Nothing,
+        engagements = Prelude.Nothing,
+        integrations = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        arn = pArn_,
+        incidentTemplate = pIncidentTemplate_,
+        name = pName_
+      }
+
+-- | The actions that this response plan takes at the beginning of the
+-- incident.
+getResponsePlanResponse_actions :: Lens.Lens' GetResponsePlanResponse (Prelude.Maybe [Action])
+getResponsePlanResponse_actions = Lens.lens (\GetResponsePlanResponse' {actions} -> actions) (\s@GetResponsePlanResponse' {} a -> s {actions = a} :: GetResponsePlanResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Chatbot chat channel used for collaboration during an incident.
+getResponsePlanResponse_chatChannel :: Lens.Lens' GetResponsePlanResponse (Prelude.Maybe ChatChannel)
+getResponsePlanResponse_chatChannel = Lens.lens (\GetResponsePlanResponse' {chatChannel} -> chatChannel) (\s@GetResponsePlanResponse' {} a -> s {chatChannel = a} :: GetResponsePlanResponse)
+
+-- | The long format name of the response plan. Can contain spaces.
+getResponsePlanResponse_displayName :: Lens.Lens' GetResponsePlanResponse (Prelude.Maybe Prelude.Text)
+getResponsePlanResponse_displayName = Lens.lens (\GetResponsePlanResponse' {displayName} -> displayName) (\s@GetResponsePlanResponse' {} a -> s {displayName = a} :: GetResponsePlanResponse)
+
+-- | The Amazon Resource Name (ARN) for the contacts and escalation plans
+-- that the response plan engages during an incident.
+getResponsePlanResponse_engagements :: Lens.Lens' GetResponsePlanResponse (Prelude.Maybe [Prelude.Text])
+getResponsePlanResponse_engagements = Lens.lens (\GetResponsePlanResponse' {engagements} -> engagements) (\s@GetResponsePlanResponse' {} a -> s {engagements = a} :: GetResponsePlanResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Information about third-party services integrated into the Incident
+-- Manager response plan.
+getResponsePlanResponse_integrations :: Lens.Lens' GetResponsePlanResponse (Prelude.Maybe [Integration])
+getResponsePlanResponse_integrations = Lens.lens (\GetResponsePlanResponse' {integrations} -> integrations) (\s@GetResponsePlanResponse' {} a -> s {integrations = a} :: GetResponsePlanResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+getResponsePlanResponse_httpStatus :: Lens.Lens' GetResponsePlanResponse Prelude.Int
+getResponsePlanResponse_httpStatus = Lens.lens (\GetResponsePlanResponse' {httpStatus} -> httpStatus) (\s@GetResponsePlanResponse' {} a -> s {httpStatus = a} :: GetResponsePlanResponse)
+
+-- | The ARN of the response plan.
+getResponsePlanResponse_arn :: Lens.Lens' GetResponsePlanResponse Prelude.Text
+getResponsePlanResponse_arn = Lens.lens (\GetResponsePlanResponse' {arn} -> arn) (\s@GetResponsePlanResponse' {} a -> s {arn = a} :: GetResponsePlanResponse)
+
+-- | Details used to create the incident when using this response plan.
+getResponsePlanResponse_incidentTemplate :: Lens.Lens' GetResponsePlanResponse IncidentTemplate
+getResponsePlanResponse_incidentTemplate = Lens.lens (\GetResponsePlanResponse' {incidentTemplate} -> incidentTemplate) (\s@GetResponsePlanResponse' {} a -> s {incidentTemplate = a} :: GetResponsePlanResponse)
+
+-- | The short format name of the response plan. The name can\'t contain
+-- spaces.
+getResponsePlanResponse_name :: Lens.Lens' GetResponsePlanResponse Prelude.Text
+getResponsePlanResponse_name = Lens.lens (\GetResponsePlanResponse' {name} -> name) (\s@GetResponsePlanResponse' {} a -> s {name = a} :: GetResponsePlanResponse)
+
+instance Prelude.NFData GetResponsePlanResponse where
+  rnf GetResponsePlanResponse' {..} =
+    Prelude.rnf actions
+      `Prelude.seq` Prelude.rnf chatChannel
+      `Prelude.seq` Prelude.rnf displayName
+      `Prelude.seq` Prelude.rnf engagements
+      `Prelude.seq` Prelude.rnf integrations
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf incidentTemplate
+      `Prelude.seq` Prelude.rnf name
diff --git a/gen/Amazonka/SSMIncidents/GetTimelineEvent.hs b/gen/Amazonka/SSMIncidents/GetTimelineEvent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/GetTimelineEvent.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.SSMIncidents.GetTimelineEvent
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves a timeline event based on its ID and incident record.
+module Amazonka.SSMIncidents.GetTimelineEvent
+  ( -- * Creating a Request
+    GetTimelineEvent (..),
+    newGetTimelineEvent,
+
+    -- * Request Lenses
+    getTimelineEvent_eventId,
+    getTimelineEvent_incidentRecordArn,
+
+    -- * Destructuring the Response
+    GetTimelineEventResponse (..),
+    newGetTimelineEventResponse,
+
+    -- * Response Lenses
+    getTimelineEventResponse_httpStatus,
+    getTimelineEventResponse_event,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SSMIncidents.Types
+
+-- | /See:/ 'newGetTimelineEvent' smart constructor.
+data GetTimelineEvent = GetTimelineEvent'
+  { -- | The ID of the event. You can get an event\'s ID when you create it, or
+    -- by using @ListTimelineEvents@.
+    eventId :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the incident that includes the
+    -- timeline event.
+    incidentRecordArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetTimelineEvent' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'eventId', 'getTimelineEvent_eventId' - The ID of the event. You can get an event\'s ID when you create it, or
+-- by using @ListTimelineEvents@.
+--
+-- 'incidentRecordArn', 'getTimelineEvent_incidentRecordArn' - The Amazon Resource Name (ARN) of the incident that includes the
+-- timeline event.
+newGetTimelineEvent ::
+  -- | 'eventId'
+  Prelude.Text ->
+  -- | 'incidentRecordArn'
+  Prelude.Text ->
+  GetTimelineEvent
+newGetTimelineEvent pEventId_ pIncidentRecordArn_ =
+  GetTimelineEvent'
+    { eventId = pEventId_,
+      incidentRecordArn = pIncidentRecordArn_
+    }
+
+-- | The ID of the event. You can get an event\'s ID when you create it, or
+-- by using @ListTimelineEvents@.
+getTimelineEvent_eventId :: Lens.Lens' GetTimelineEvent Prelude.Text
+getTimelineEvent_eventId = Lens.lens (\GetTimelineEvent' {eventId} -> eventId) (\s@GetTimelineEvent' {} a -> s {eventId = a} :: GetTimelineEvent)
+
+-- | The Amazon Resource Name (ARN) of the incident that includes the
+-- timeline event.
+getTimelineEvent_incidentRecordArn :: Lens.Lens' GetTimelineEvent Prelude.Text
+getTimelineEvent_incidentRecordArn = Lens.lens (\GetTimelineEvent' {incidentRecordArn} -> incidentRecordArn) (\s@GetTimelineEvent' {} a -> s {incidentRecordArn = a} :: GetTimelineEvent)
+
+instance Core.AWSRequest GetTimelineEvent where
+  type
+    AWSResponse GetTimelineEvent =
+      GetTimelineEventResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetTimelineEventResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "event")
+      )
+
+instance Prelude.Hashable GetTimelineEvent where
+  hashWithSalt _salt GetTimelineEvent' {..} =
+    _salt
+      `Prelude.hashWithSalt` eventId
+      `Prelude.hashWithSalt` incidentRecordArn
+
+instance Prelude.NFData GetTimelineEvent where
+  rnf GetTimelineEvent' {..} =
+    Prelude.rnf eventId
+      `Prelude.seq` Prelude.rnf incidentRecordArn
+
+instance Data.ToHeaders GetTimelineEvent where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetTimelineEvent where
+  toPath = Prelude.const "/getTimelineEvent"
+
+instance Data.ToQuery GetTimelineEvent where
+  toQuery GetTimelineEvent' {..} =
+    Prelude.mconcat
+      [ "eventId" Data.=: eventId,
+        "incidentRecordArn" Data.=: incidentRecordArn
+      ]
+
+-- | /See:/ 'newGetTimelineEventResponse' smart constructor.
+data GetTimelineEventResponse = GetTimelineEventResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Details about the timeline event.
+    event :: TimelineEvent
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetTimelineEventResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'getTimelineEventResponse_httpStatus' - The response's http status code.
+--
+-- 'event', 'getTimelineEventResponse_event' - Details about the timeline event.
+newGetTimelineEventResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'event'
+  TimelineEvent ->
+  GetTimelineEventResponse
+newGetTimelineEventResponse pHttpStatus_ pEvent_ =
+  GetTimelineEventResponse'
+    { httpStatus =
+        pHttpStatus_,
+      event = pEvent_
+    }
+
+-- | The response's http status code.
+getTimelineEventResponse_httpStatus :: Lens.Lens' GetTimelineEventResponse Prelude.Int
+getTimelineEventResponse_httpStatus = Lens.lens (\GetTimelineEventResponse' {httpStatus} -> httpStatus) (\s@GetTimelineEventResponse' {} a -> s {httpStatus = a} :: GetTimelineEventResponse)
+
+-- | Details about the timeline event.
+getTimelineEventResponse_event :: Lens.Lens' GetTimelineEventResponse TimelineEvent
+getTimelineEventResponse_event = Lens.lens (\GetTimelineEventResponse' {event} -> event) (\s@GetTimelineEventResponse' {} a -> s {event = a} :: GetTimelineEventResponse)
+
+instance Prelude.NFData GetTimelineEventResponse where
+  rnf GetTimelineEventResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf event
diff --git a/gen/Amazonka/SSMIncidents/Lens.hs b/gen/Amazonka/SSMIncidents/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Lens.hs
@@ -0,0 +1,479 @@
+{-# 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.SSMIncidents.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.SSMIncidents.Lens
+  ( -- * Operations
+
+    -- ** CreateReplicationSet
+    createReplicationSet_clientToken,
+    createReplicationSet_tags,
+    createReplicationSet_regions,
+    createReplicationSetResponse_httpStatus,
+    createReplicationSetResponse_arn,
+
+    -- ** CreateResponsePlan
+    createResponsePlan_actions,
+    createResponsePlan_chatChannel,
+    createResponsePlan_clientToken,
+    createResponsePlan_displayName,
+    createResponsePlan_engagements,
+    createResponsePlan_integrations,
+    createResponsePlan_tags,
+    createResponsePlan_incidentTemplate,
+    createResponsePlan_name,
+    createResponsePlanResponse_httpStatus,
+    createResponsePlanResponse_arn,
+
+    -- ** CreateTimelineEvent
+    createTimelineEvent_clientToken,
+    createTimelineEvent_eventReferences,
+    createTimelineEvent_eventData,
+    createTimelineEvent_eventTime,
+    createTimelineEvent_eventType,
+    createTimelineEvent_incidentRecordArn,
+    createTimelineEventResponse_httpStatus,
+    createTimelineEventResponse_eventId,
+    createTimelineEventResponse_incidentRecordArn,
+
+    -- ** DeleteIncidentRecord
+    deleteIncidentRecord_arn,
+    deleteIncidentRecordResponse_httpStatus,
+
+    -- ** DeleteReplicationSet
+    deleteReplicationSet_arn,
+    deleteReplicationSetResponse_httpStatus,
+
+    -- ** DeleteResourcePolicy
+    deleteResourcePolicy_policyId,
+    deleteResourcePolicy_resourceArn,
+    deleteResourcePolicyResponse_httpStatus,
+
+    -- ** DeleteResponsePlan
+    deleteResponsePlan_arn,
+    deleteResponsePlanResponse_httpStatus,
+
+    -- ** DeleteTimelineEvent
+    deleteTimelineEvent_eventId,
+    deleteTimelineEvent_incidentRecordArn,
+    deleteTimelineEventResponse_httpStatus,
+
+    -- ** GetIncidentRecord
+    getIncidentRecord_arn,
+    getIncidentRecordResponse_httpStatus,
+    getIncidentRecordResponse_incidentRecord,
+
+    -- ** GetReplicationSet
+    getReplicationSet_arn,
+    getReplicationSetResponse_httpStatus,
+    getReplicationSetResponse_replicationSet,
+
+    -- ** GetResourcePolicies
+    getResourcePolicies_maxResults,
+    getResourcePolicies_nextToken,
+    getResourcePolicies_resourceArn,
+    getResourcePoliciesResponse_nextToken,
+    getResourcePoliciesResponse_httpStatus,
+    getResourcePoliciesResponse_resourcePolicies,
+
+    -- ** GetResponsePlan
+    getResponsePlan_arn,
+    getResponsePlanResponse_actions,
+    getResponsePlanResponse_chatChannel,
+    getResponsePlanResponse_displayName,
+    getResponsePlanResponse_engagements,
+    getResponsePlanResponse_integrations,
+    getResponsePlanResponse_httpStatus,
+    getResponsePlanResponse_arn,
+    getResponsePlanResponse_incidentTemplate,
+    getResponsePlanResponse_name,
+
+    -- ** GetTimelineEvent
+    getTimelineEvent_eventId,
+    getTimelineEvent_incidentRecordArn,
+    getTimelineEventResponse_httpStatus,
+    getTimelineEventResponse_event,
+
+    -- ** ListIncidentRecords
+    listIncidentRecords_filters,
+    listIncidentRecords_maxResults,
+    listIncidentRecords_nextToken,
+    listIncidentRecordsResponse_nextToken,
+    listIncidentRecordsResponse_httpStatus,
+    listIncidentRecordsResponse_incidentRecordSummaries,
+
+    -- ** ListRelatedItems
+    listRelatedItems_maxResults,
+    listRelatedItems_nextToken,
+    listRelatedItems_incidentRecordArn,
+    listRelatedItemsResponse_nextToken,
+    listRelatedItemsResponse_httpStatus,
+    listRelatedItemsResponse_relatedItems,
+
+    -- ** ListReplicationSets
+    listReplicationSets_maxResults,
+    listReplicationSets_nextToken,
+    listReplicationSetsResponse_nextToken,
+    listReplicationSetsResponse_httpStatus,
+    listReplicationSetsResponse_replicationSetArns,
+
+    -- ** ListResponsePlans
+    listResponsePlans_maxResults,
+    listResponsePlans_nextToken,
+    listResponsePlansResponse_nextToken,
+    listResponsePlansResponse_httpStatus,
+    listResponsePlansResponse_responsePlanSummaries,
+
+    -- ** ListTagsForResource
+    listTagsForResource_resourceArn,
+    listTagsForResourceResponse_httpStatus,
+    listTagsForResourceResponse_tags,
+
+    -- ** ListTimelineEvents
+    listTimelineEvents_filters,
+    listTimelineEvents_maxResults,
+    listTimelineEvents_nextToken,
+    listTimelineEvents_sortBy,
+    listTimelineEvents_sortOrder,
+    listTimelineEvents_incidentRecordArn,
+    listTimelineEventsResponse_nextToken,
+    listTimelineEventsResponse_httpStatus,
+    listTimelineEventsResponse_eventSummaries,
+
+    -- ** PutResourcePolicy
+    putResourcePolicy_policy,
+    putResourcePolicy_resourceArn,
+    putResourcePolicyResponse_httpStatus,
+    putResourcePolicyResponse_policyId,
+
+    -- ** StartIncident
+    startIncident_clientToken,
+    startIncident_impact,
+    startIncident_relatedItems,
+    startIncident_title,
+    startIncident_triggerDetails,
+    startIncident_responsePlanArn,
+    startIncidentResponse_httpStatus,
+    startIncidentResponse_incidentRecordArn,
+
+    -- ** TagResource
+    tagResource_resourceArn,
+    tagResource_tags,
+    tagResourceResponse_httpStatus,
+
+    -- ** UntagResource
+    untagResource_resourceArn,
+    untagResource_tagKeys,
+    untagResourceResponse_httpStatus,
+
+    -- ** UpdateDeletionProtection
+    updateDeletionProtection_clientToken,
+    updateDeletionProtection_arn,
+    updateDeletionProtection_deletionProtected,
+    updateDeletionProtectionResponse_httpStatus,
+
+    -- ** UpdateIncidentRecord
+    updateIncidentRecord_chatChannel,
+    updateIncidentRecord_clientToken,
+    updateIncidentRecord_impact,
+    updateIncidentRecord_notificationTargets,
+    updateIncidentRecord_status,
+    updateIncidentRecord_summary,
+    updateIncidentRecord_title,
+    updateIncidentRecord_arn,
+    updateIncidentRecordResponse_httpStatus,
+
+    -- ** UpdateRelatedItems
+    updateRelatedItems_clientToken,
+    updateRelatedItems_incidentRecordArn,
+    updateRelatedItems_relatedItemsUpdate,
+    updateRelatedItemsResponse_httpStatus,
+
+    -- ** UpdateReplicationSet
+    updateReplicationSet_clientToken,
+    updateReplicationSet_actions,
+    updateReplicationSet_arn,
+    updateReplicationSetResponse_httpStatus,
+
+    -- ** UpdateResponsePlan
+    updateResponsePlan_actions,
+    updateResponsePlan_chatChannel,
+    updateResponsePlan_clientToken,
+    updateResponsePlan_displayName,
+    updateResponsePlan_engagements,
+    updateResponsePlan_incidentTemplateDedupeString,
+    updateResponsePlan_incidentTemplateImpact,
+    updateResponsePlan_incidentTemplateNotificationTargets,
+    updateResponsePlan_incidentTemplateSummary,
+    updateResponsePlan_incidentTemplateTags,
+    updateResponsePlan_incidentTemplateTitle,
+    updateResponsePlan_integrations,
+    updateResponsePlan_arn,
+    updateResponsePlanResponse_httpStatus,
+
+    -- ** UpdateTimelineEvent
+    updateTimelineEvent_clientToken,
+    updateTimelineEvent_eventData,
+    updateTimelineEvent_eventReferences,
+    updateTimelineEvent_eventTime,
+    updateTimelineEvent_eventType,
+    updateTimelineEvent_eventId,
+    updateTimelineEvent_incidentRecordArn,
+    updateTimelineEventResponse_httpStatus,
+
+    -- * Types
+
+    -- ** Action
+    action_ssmAutomation,
+
+    -- ** AddRegionAction
+    addRegionAction_sseKmsKeyId,
+    addRegionAction_regionName,
+
+    -- ** AttributeValueList
+    attributeValueList_integerValues,
+    attributeValueList_stringValues,
+
+    -- ** AutomationExecution
+    automationExecution_ssmExecutionArn,
+
+    -- ** ChatChannel
+    chatChannel_chatbotSns,
+    chatChannel_empty,
+
+    -- ** Condition
+    condition_after,
+    condition_before,
+    condition_equals,
+
+    -- ** DeleteRegionAction
+    deleteRegionAction_regionName,
+
+    -- ** DynamicSsmParameterValue
+    dynamicSsmParameterValue_variable,
+
+    -- ** EmptyChatChannel
+
+    -- ** EventReference
+    eventReference_relatedItemId,
+    eventReference_resource,
+
+    -- ** EventSummary
+    eventSummary_eventReferences,
+    eventSummary_eventId,
+    eventSummary_eventTime,
+    eventSummary_eventType,
+    eventSummary_eventUpdatedTime,
+    eventSummary_incidentRecordArn,
+
+    -- ** Filter
+    filter_condition,
+    filter_key,
+
+    -- ** IncidentRecord
+    incidentRecord_automationExecutions,
+    incidentRecord_chatChannel,
+    incidentRecord_notificationTargets,
+    incidentRecord_resolvedTime,
+    incidentRecord_summary,
+    incidentRecord_arn,
+    incidentRecord_creationTime,
+    incidentRecord_dedupeString,
+    incidentRecord_impact,
+    incidentRecord_incidentRecordSource,
+    incidentRecord_lastModifiedBy,
+    incidentRecord_lastModifiedTime,
+    incidentRecord_status,
+    incidentRecord_title,
+
+    -- ** IncidentRecordSource
+    incidentRecordSource_invokedBy,
+    incidentRecordSource_resourceArn,
+    incidentRecordSource_createdBy,
+    incidentRecordSource_source,
+
+    -- ** IncidentRecordSummary
+    incidentRecordSummary_resolvedTime,
+    incidentRecordSummary_arn,
+    incidentRecordSummary_creationTime,
+    incidentRecordSummary_impact,
+    incidentRecordSummary_incidentRecordSource,
+    incidentRecordSummary_status,
+    incidentRecordSummary_title,
+
+    -- ** IncidentTemplate
+    incidentTemplate_dedupeString,
+    incidentTemplate_incidentTags,
+    incidentTemplate_notificationTargets,
+    incidentTemplate_summary,
+    incidentTemplate_impact,
+    incidentTemplate_title,
+
+    -- ** Integration
+    integration_pagerDutyConfiguration,
+
+    -- ** ItemIdentifier
+    itemIdentifier_type,
+    itemIdentifier_value,
+
+    -- ** ItemValue
+    itemValue_arn,
+    itemValue_metricDefinition,
+    itemValue_pagerDutyIncidentDetail,
+    itemValue_url,
+
+    -- ** NotificationTargetItem
+    notificationTargetItem_snsTopicArn,
+
+    -- ** PagerDutyConfiguration
+    pagerDutyConfiguration_name,
+    pagerDutyConfiguration_pagerDutyIncidentConfiguration,
+    pagerDutyConfiguration_secretId,
+
+    -- ** PagerDutyIncidentConfiguration
+    pagerDutyIncidentConfiguration_serviceId,
+
+    -- ** PagerDutyIncidentDetail
+    pagerDutyIncidentDetail_autoResolve,
+    pagerDutyIncidentDetail_secretId,
+    pagerDutyIncidentDetail_id,
+
+    -- ** RegionInfo
+    regionInfo_sseKmsKeyId,
+    regionInfo_statusMessage,
+    regionInfo_status,
+    regionInfo_statusUpdateDateTime,
+
+    -- ** RegionMapInputValue
+    regionMapInputValue_sseKmsKeyId,
+
+    -- ** RelatedItem
+    relatedItem_generatedId,
+    relatedItem_title,
+    relatedItem_identifier,
+
+    -- ** RelatedItemsUpdate
+    relatedItemsUpdate_itemToAdd,
+    relatedItemsUpdate_itemToRemove,
+
+    -- ** ReplicationSet
+    replicationSet_arn,
+    replicationSet_createdBy,
+    replicationSet_createdTime,
+    replicationSet_deletionProtected,
+    replicationSet_lastModifiedBy,
+    replicationSet_lastModifiedTime,
+    replicationSet_regionMap,
+    replicationSet_status,
+
+    -- ** ResourcePolicy
+    resourcePolicy_policyDocument,
+    resourcePolicy_policyId,
+    resourcePolicy_ramResourceShareRegion,
+
+    -- ** ResponsePlanSummary
+    responsePlanSummary_displayName,
+    responsePlanSummary_arn,
+    responsePlanSummary_name,
+
+    -- ** SsmAutomation
+    ssmAutomation_documentVersion,
+    ssmAutomation_dynamicParameters,
+    ssmAutomation_parameters,
+    ssmAutomation_targetAccount,
+    ssmAutomation_documentName,
+    ssmAutomation_roleArn,
+
+    -- ** TimelineEvent
+    timelineEvent_eventReferences,
+    timelineEvent_eventData,
+    timelineEvent_eventId,
+    timelineEvent_eventTime,
+    timelineEvent_eventType,
+    timelineEvent_eventUpdatedTime,
+    timelineEvent_incidentRecordArn,
+
+    -- ** TriggerDetails
+    triggerDetails_rawData,
+    triggerDetails_triggerArn,
+    triggerDetails_source,
+    triggerDetails_timestamp,
+
+    -- ** UpdateReplicationSetAction
+    updateReplicationSetAction_addRegionAction,
+    updateReplicationSetAction_deleteRegionAction,
+  )
+where
+
+import Amazonka.SSMIncidents.CreateReplicationSet
+import Amazonka.SSMIncidents.CreateResponsePlan
+import Amazonka.SSMIncidents.CreateTimelineEvent
+import Amazonka.SSMIncidents.DeleteIncidentRecord
+import Amazonka.SSMIncidents.DeleteReplicationSet
+import Amazonka.SSMIncidents.DeleteResourcePolicy
+import Amazonka.SSMIncidents.DeleteResponsePlan
+import Amazonka.SSMIncidents.DeleteTimelineEvent
+import Amazonka.SSMIncidents.GetIncidentRecord
+import Amazonka.SSMIncidents.GetReplicationSet
+import Amazonka.SSMIncidents.GetResourcePolicies
+import Amazonka.SSMIncidents.GetResponsePlan
+import Amazonka.SSMIncidents.GetTimelineEvent
+import Amazonka.SSMIncidents.ListIncidentRecords
+import Amazonka.SSMIncidents.ListRelatedItems
+import Amazonka.SSMIncidents.ListReplicationSets
+import Amazonka.SSMIncidents.ListResponsePlans
+import Amazonka.SSMIncidents.ListTagsForResource
+import Amazonka.SSMIncidents.ListTimelineEvents
+import Amazonka.SSMIncidents.PutResourcePolicy
+import Amazonka.SSMIncidents.StartIncident
+import Amazonka.SSMIncidents.TagResource
+import Amazonka.SSMIncidents.Types.Action
+import Amazonka.SSMIncidents.Types.AddRegionAction
+import Amazonka.SSMIncidents.Types.AttributeValueList
+import Amazonka.SSMIncidents.Types.AutomationExecution
+import Amazonka.SSMIncidents.Types.ChatChannel
+import Amazonka.SSMIncidents.Types.Condition
+import Amazonka.SSMIncidents.Types.DeleteRegionAction
+import Amazonka.SSMIncidents.Types.DynamicSsmParameterValue
+import Amazonka.SSMIncidents.Types.EmptyChatChannel
+import Amazonka.SSMIncidents.Types.EventReference
+import Amazonka.SSMIncidents.Types.EventSummary
+import Amazonka.SSMIncidents.Types.Filter
+import Amazonka.SSMIncidents.Types.IncidentRecord
+import Amazonka.SSMIncidents.Types.IncidentRecordSource
+import Amazonka.SSMIncidents.Types.IncidentRecordSummary
+import Amazonka.SSMIncidents.Types.IncidentTemplate
+import Amazonka.SSMIncidents.Types.Integration
+import Amazonka.SSMIncidents.Types.ItemIdentifier
+import Amazonka.SSMIncidents.Types.ItemValue
+import Amazonka.SSMIncidents.Types.NotificationTargetItem
+import Amazonka.SSMIncidents.Types.PagerDutyConfiguration
+import Amazonka.SSMIncidents.Types.PagerDutyIncidentConfiguration
+import Amazonka.SSMIncidents.Types.PagerDutyIncidentDetail
+import Amazonka.SSMIncidents.Types.RegionInfo
+import Amazonka.SSMIncidents.Types.RegionMapInputValue
+import Amazonka.SSMIncidents.Types.RelatedItem
+import Amazonka.SSMIncidents.Types.RelatedItemsUpdate
+import Amazonka.SSMIncidents.Types.ReplicationSet
+import Amazonka.SSMIncidents.Types.ResourcePolicy
+import Amazonka.SSMIncidents.Types.ResponsePlanSummary
+import Amazonka.SSMIncidents.Types.SsmAutomation
+import Amazonka.SSMIncidents.Types.TimelineEvent
+import Amazonka.SSMIncidents.Types.TriggerDetails
+import Amazonka.SSMIncidents.Types.UpdateReplicationSetAction
+import Amazonka.SSMIncidents.UntagResource
+import Amazonka.SSMIncidents.UpdateDeletionProtection
+import Amazonka.SSMIncidents.UpdateIncidentRecord
+import Amazonka.SSMIncidents.UpdateRelatedItems
+import Amazonka.SSMIncidents.UpdateReplicationSet
+import Amazonka.SSMIncidents.UpdateResponsePlan
+import Amazonka.SSMIncidents.UpdateTimelineEvent
diff --git a/gen/Amazonka/SSMIncidents/ListIncidentRecords.hs b/gen/Amazonka/SSMIncidents/ListIncidentRecords.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/ListIncidentRecords.hs
@@ -0,0 +1,293 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.ListIncidentRecords
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all incident records in your account. Use this command to retrieve
+-- the Amazon Resource Name (ARN) of the incident record you want to
+-- update.
+--
+-- This operation returns paginated results.
+module Amazonka.SSMIncidents.ListIncidentRecords
+  ( -- * Creating a Request
+    ListIncidentRecords (..),
+    newListIncidentRecords,
+
+    -- * Request Lenses
+    listIncidentRecords_filters,
+    listIncidentRecords_maxResults,
+    listIncidentRecords_nextToken,
+
+    -- * Destructuring the Response
+    ListIncidentRecordsResponse (..),
+    newListIncidentRecordsResponse,
+
+    -- * Response Lenses
+    listIncidentRecordsResponse_nextToken,
+    listIncidentRecordsResponse_httpStatus,
+    listIncidentRecordsResponse_incidentRecordSummaries,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SSMIncidents.Types
+
+-- | /See:/ 'newListIncidentRecords' smart constructor.
+data ListIncidentRecords = ListIncidentRecords'
+  { -- | Filters the list of incident records through which you are searching.
+    -- You can filter on the following keys:
+    --
+    -- -   @creationTime@
+    --
+    -- -   @impact@
+    --
+    -- -   @status@
+    --
+    -- -   @createdBy@
+    --
+    -- Note the following when deciding how to use Filters:
+    --
+    -- -   If you don\'t specify a Filter, the response includes all incident
+    --     records.
+    --
+    -- -   If you specify more than one filter in a single request, the
+    --     response returns incident records that match all filters.
+    --
+    -- -   If you specify a filter with more than one value, the response
+    --     returns incident records that match any of the values provided.
+    filters :: Prelude.Maybe [Filter],
+    -- | The maximum number of results per page.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The pagination token to continue to the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListIncidentRecords' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'filters', 'listIncidentRecords_filters' - Filters the list of incident records through which you are searching.
+-- You can filter on the following keys:
+--
+-- -   @creationTime@
+--
+-- -   @impact@
+--
+-- -   @status@
+--
+-- -   @createdBy@
+--
+-- Note the following when deciding how to use Filters:
+--
+-- -   If you don\'t specify a Filter, the response includes all incident
+--     records.
+--
+-- -   If you specify more than one filter in a single request, the
+--     response returns incident records that match all filters.
+--
+-- -   If you specify a filter with more than one value, the response
+--     returns incident records that match any of the values provided.
+--
+-- 'maxResults', 'listIncidentRecords_maxResults' - The maximum number of results per page.
+--
+-- 'nextToken', 'listIncidentRecords_nextToken' - The pagination token to continue to the next page of results.
+newListIncidentRecords ::
+  ListIncidentRecords
+newListIncidentRecords =
+  ListIncidentRecords'
+    { filters = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | Filters the list of incident records through which you are searching.
+-- You can filter on the following keys:
+--
+-- -   @creationTime@
+--
+-- -   @impact@
+--
+-- -   @status@
+--
+-- -   @createdBy@
+--
+-- Note the following when deciding how to use Filters:
+--
+-- -   If you don\'t specify a Filter, the response includes all incident
+--     records.
+--
+-- -   If you specify more than one filter in a single request, the
+--     response returns incident records that match all filters.
+--
+-- -   If you specify a filter with more than one value, the response
+--     returns incident records that match any of the values provided.
+listIncidentRecords_filters :: Lens.Lens' ListIncidentRecords (Prelude.Maybe [Filter])
+listIncidentRecords_filters = Lens.lens (\ListIncidentRecords' {filters} -> filters) (\s@ListIncidentRecords' {} a -> s {filters = a} :: ListIncidentRecords) Prelude.. Lens.mapping Lens.coerced
+
+-- | The maximum number of results per page.
+listIncidentRecords_maxResults :: Lens.Lens' ListIncidentRecords (Prelude.Maybe Prelude.Natural)
+listIncidentRecords_maxResults = Lens.lens (\ListIncidentRecords' {maxResults} -> maxResults) (\s@ListIncidentRecords' {} a -> s {maxResults = a} :: ListIncidentRecords)
+
+-- | The pagination token to continue to the next page of results.
+listIncidentRecords_nextToken :: Lens.Lens' ListIncidentRecords (Prelude.Maybe Prelude.Text)
+listIncidentRecords_nextToken = Lens.lens (\ListIncidentRecords' {nextToken} -> nextToken) (\s@ListIncidentRecords' {} a -> s {nextToken = a} :: ListIncidentRecords)
+
+instance Core.AWSPager ListIncidentRecords where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listIncidentRecordsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listIncidentRecordsResponse_incidentRecordSummaries
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listIncidentRecords_nextToken
+          Lens..~ rs
+          Lens.^? listIncidentRecordsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListIncidentRecords where
+  type
+    AWSResponse ListIncidentRecords =
+      ListIncidentRecordsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListIncidentRecordsResponse'
+            Prelude.<$> (x Data..?> "nextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "incidentRecordSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListIncidentRecords where
+  hashWithSalt _salt ListIncidentRecords' {..} =
+    _salt
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListIncidentRecords where
+  rnf ListIncidentRecords' {..} =
+    Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListIncidentRecords where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListIncidentRecords where
+  toJSON ListIncidentRecords' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("filters" Data..=) Prelude.<$> filters,
+            ("maxResults" Data..=) Prelude.<$> maxResults,
+            ("nextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath ListIncidentRecords where
+  toPath = Prelude.const "/listIncidentRecords"
+
+instance Data.ToQuery ListIncidentRecords where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListIncidentRecordsResponse' smart constructor.
+data ListIncidentRecordsResponse = ListIncidentRecordsResponse'
+  { -- | The pagination token to continue to the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The details of each listed incident record.
+    incidentRecordSummaries :: [IncidentRecordSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListIncidentRecordsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listIncidentRecordsResponse_nextToken' - The pagination token to continue to the next page of results.
+--
+-- 'httpStatus', 'listIncidentRecordsResponse_httpStatus' - The response's http status code.
+--
+-- 'incidentRecordSummaries', 'listIncidentRecordsResponse_incidentRecordSummaries' - The details of each listed incident record.
+newListIncidentRecordsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListIncidentRecordsResponse
+newListIncidentRecordsResponse pHttpStatus_ =
+  ListIncidentRecordsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      incidentRecordSummaries = Prelude.mempty
+    }
+
+-- | The pagination token to continue to the next page of results.
+listIncidentRecordsResponse_nextToken :: Lens.Lens' ListIncidentRecordsResponse (Prelude.Maybe Prelude.Text)
+listIncidentRecordsResponse_nextToken = Lens.lens (\ListIncidentRecordsResponse' {nextToken} -> nextToken) (\s@ListIncidentRecordsResponse' {} a -> s {nextToken = a} :: ListIncidentRecordsResponse)
+
+-- | The response's http status code.
+listIncidentRecordsResponse_httpStatus :: Lens.Lens' ListIncidentRecordsResponse Prelude.Int
+listIncidentRecordsResponse_httpStatus = Lens.lens (\ListIncidentRecordsResponse' {httpStatus} -> httpStatus) (\s@ListIncidentRecordsResponse' {} a -> s {httpStatus = a} :: ListIncidentRecordsResponse)
+
+-- | The details of each listed incident record.
+listIncidentRecordsResponse_incidentRecordSummaries :: Lens.Lens' ListIncidentRecordsResponse [IncidentRecordSummary]
+listIncidentRecordsResponse_incidentRecordSummaries = Lens.lens (\ListIncidentRecordsResponse' {incidentRecordSummaries} -> incidentRecordSummaries) (\s@ListIncidentRecordsResponse' {} a -> s {incidentRecordSummaries = a} :: ListIncidentRecordsResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListIncidentRecordsResponse where
+  rnf ListIncidentRecordsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf incidentRecordSummaries
diff --git a/gen/Amazonka/SSMIncidents/ListRelatedItems.hs b/gen/Amazonka/SSMIncidents/ListRelatedItems.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/ListRelatedItems.hs
@@ -0,0 +1,232 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.ListRelatedItems
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List all related items for an incident record.
+--
+-- This operation returns paginated results.
+module Amazonka.SSMIncidents.ListRelatedItems
+  ( -- * Creating a Request
+    ListRelatedItems (..),
+    newListRelatedItems,
+
+    -- * Request Lenses
+    listRelatedItems_maxResults,
+    listRelatedItems_nextToken,
+    listRelatedItems_incidentRecordArn,
+
+    -- * Destructuring the Response
+    ListRelatedItemsResponse (..),
+    newListRelatedItemsResponse,
+
+    -- * Response Lenses
+    listRelatedItemsResponse_nextToken,
+    listRelatedItemsResponse_httpStatus,
+    listRelatedItemsResponse_relatedItems,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SSMIncidents.Types
+
+-- | /See:/ 'newListRelatedItems' smart constructor.
+data ListRelatedItems = ListRelatedItems'
+  { -- | The maximum number of related items per page.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The pagination token to continue to the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the incident record containing the
+    -- listed related items.
+    incidentRecordArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListRelatedItems' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listRelatedItems_maxResults' - The maximum number of related items per page.
+--
+-- 'nextToken', 'listRelatedItems_nextToken' - The pagination token to continue to the next page of results.
+--
+-- 'incidentRecordArn', 'listRelatedItems_incidentRecordArn' - The Amazon Resource Name (ARN) of the incident record containing the
+-- listed related items.
+newListRelatedItems ::
+  -- | 'incidentRecordArn'
+  Prelude.Text ->
+  ListRelatedItems
+newListRelatedItems pIncidentRecordArn_ =
+  ListRelatedItems'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      incidentRecordArn = pIncidentRecordArn_
+    }
+
+-- | The maximum number of related items per page.
+listRelatedItems_maxResults :: Lens.Lens' ListRelatedItems (Prelude.Maybe Prelude.Natural)
+listRelatedItems_maxResults = Lens.lens (\ListRelatedItems' {maxResults} -> maxResults) (\s@ListRelatedItems' {} a -> s {maxResults = a} :: ListRelatedItems)
+
+-- | The pagination token to continue to the next page of results.
+listRelatedItems_nextToken :: Lens.Lens' ListRelatedItems (Prelude.Maybe Prelude.Text)
+listRelatedItems_nextToken = Lens.lens (\ListRelatedItems' {nextToken} -> nextToken) (\s@ListRelatedItems' {} a -> s {nextToken = a} :: ListRelatedItems)
+
+-- | The Amazon Resource Name (ARN) of the incident record containing the
+-- listed related items.
+listRelatedItems_incidentRecordArn :: Lens.Lens' ListRelatedItems Prelude.Text
+listRelatedItems_incidentRecordArn = Lens.lens (\ListRelatedItems' {incidentRecordArn} -> incidentRecordArn) (\s@ListRelatedItems' {} a -> s {incidentRecordArn = a} :: ListRelatedItems)
+
+instance Core.AWSPager ListRelatedItems where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listRelatedItemsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        (rs Lens.^. listRelatedItemsResponse_relatedItems) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listRelatedItems_nextToken
+          Lens..~ rs
+          Lens.^? listRelatedItemsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListRelatedItems where
+  type
+    AWSResponse ListRelatedItems =
+      ListRelatedItemsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListRelatedItemsResponse'
+            Prelude.<$> (x Data..?> "nextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..?> "relatedItems" Core..!@ Prelude.mempty)
+      )
+
+instance Prelude.Hashable ListRelatedItems where
+  hashWithSalt _salt ListRelatedItems' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` incidentRecordArn
+
+instance Prelude.NFData ListRelatedItems where
+  rnf ListRelatedItems' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf incidentRecordArn
+
+instance Data.ToHeaders ListRelatedItems where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListRelatedItems where
+  toJSON ListRelatedItems' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("maxResults" Data..=) Prelude.<$> maxResults,
+            ("nextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just
+              ("incidentRecordArn" Data..= incidentRecordArn)
+          ]
+      )
+
+instance Data.ToPath ListRelatedItems where
+  toPath = Prelude.const "/listRelatedItems"
+
+instance Data.ToQuery ListRelatedItems where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListRelatedItemsResponse' smart constructor.
+data ListRelatedItemsResponse = ListRelatedItemsResponse'
+  { -- | The pagination token to continue to the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Details about each related item.
+    relatedItems :: [RelatedItem]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListRelatedItemsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listRelatedItemsResponse_nextToken' - The pagination token to continue to the next page of results.
+--
+-- 'httpStatus', 'listRelatedItemsResponse_httpStatus' - The response's http status code.
+--
+-- 'relatedItems', 'listRelatedItemsResponse_relatedItems' - Details about each related item.
+newListRelatedItemsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListRelatedItemsResponse
+newListRelatedItemsResponse pHttpStatus_ =
+  ListRelatedItemsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      relatedItems = Prelude.mempty
+    }
+
+-- | The pagination token to continue to the next page of results.
+listRelatedItemsResponse_nextToken :: Lens.Lens' ListRelatedItemsResponse (Prelude.Maybe Prelude.Text)
+listRelatedItemsResponse_nextToken = Lens.lens (\ListRelatedItemsResponse' {nextToken} -> nextToken) (\s@ListRelatedItemsResponse' {} a -> s {nextToken = a} :: ListRelatedItemsResponse)
+
+-- | The response's http status code.
+listRelatedItemsResponse_httpStatus :: Lens.Lens' ListRelatedItemsResponse Prelude.Int
+listRelatedItemsResponse_httpStatus = Lens.lens (\ListRelatedItemsResponse' {httpStatus} -> httpStatus) (\s@ListRelatedItemsResponse' {} a -> s {httpStatus = a} :: ListRelatedItemsResponse)
+
+-- | Details about each related item.
+listRelatedItemsResponse_relatedItems :: Lens.Lens' ListRelatedItemsResponse [RelatedItem]
+listRelatedItemsResponse_relatedItems = Lens.lens (\ListRelatedItemsResponse' {relatedItems} -> relatedItems) (\s@ListRelatedItemsResponse' {} a -> s {relatedItems = a} :: ListRelatedItemsResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListRelatedItemsResponse where
+  rnf ListRelatedItemsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf relatedItems
diff --git a/gen/Amazonka/SSMIncidents/ListReplicationSets.hs b/gen/Amazonka/SSMIncidents/ListReplicationSets.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/ListReplicationSets.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.SSMIncidents.ListReplicationSets
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists details about the replication set configured in your account.
+--
+-- This operation returns paginated results.
+module Amazonka.SSMIncidents.ListReplicationSets
+  ( -- * Creating a Request
+    ListReplicationSets (..),
+    newListReplicationSets,
+
+    -- * Request Lenses
+    listReplicationSets_maxResults,
+    listReplicationSets_nextToken,
+
+    -- * Destructuring the Response
+    ListReplicationSetsResponse (..),
+    newListReplicationSetsResponse,
+
+    -- * Response Lenses
+    listReplicationSetsResponse_nextToken,
+    listReplicationSetsResponse_httpStatus,
+    listReplicationSetsResponse_replicationSetArns,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SSMIncidents.Types
+
+-- | /See:/ 'newListReplicationSets' smart constructor.
+data ListReplicationSets = ListReplicationSets'
+  { -- | The maximum number of results per page.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The pagination token to continue to the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListReplicationSets' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listReplicationSets_maxResults' - The maximum number of results per page.
+--
+-- 'nextToken', 'listReplicationSets_nextToken' - The pagination token to continue to the next page of results.
+newListReplicationSets ::
+  ListReplicationSets
+newListReplicationSets =
+  ListReplicationSets'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The maximum number of results per page.
+listReplicationSets_maxResults :: Lens.Lens' ListReplicationSets (Prelude.Maybe Prelude.Natural)
+listReplicationSets_maxResults = Lens.lens (\ListReplicationSets' {maxResults} -> maxResults) (\s@ListReplicationSets' {} a -> s {maxResults = a} :: ListReplicationSets)
+
+-- | The pagination token to continue to the next page of results.
+listReplicationSets_nextToken :: Lens.Lens' ListReplicationSets (Prelude.Maybe Prelude.Text)
+listReplicationSets_nextToken = Lens.lens (\ListReplicationSets' {nextToken} -> nextToken) (\s@ListReplicationSets' {} a -> s {nextToken = a} :: ListReplicationSets)
+
+instance Core.AWSPager ListReplicationSets where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listReplicationSetsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listReplicationSetsResponse_replicationSetArns
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listReplicationSets_nextToken
+          Lens..~ rs
+          Lens.^? listReplicationSetsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListReplicationSets where
+  type
+    AWSResponse ListReplicationSets =
+      ListReplicationSetsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListReplicationSetsResponse'
+            Prelude.<$> (x Data..?> "nextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "replicationSetArns"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListReplicationSets where
+  hashWithSalt _salt ListReplicationSets' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListReplicationSets where
+  rnf ListReplicationSets' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListReplicationSets where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListReplicationSets where
+  toJSON ListReplicationSets' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("maxResults" Data..=) Prelude.<$> maxResults,
+            ("nextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath ListReplicationSets where
+  toPath = Prelude.const "/listReplicationSets"
+
+instance Data.ToQuery ListReplicationSets where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListReplicationSetsResponse' smart constructor.
+data ListReplicationSetsResponse = ListReplicationSetsResponse'
+  { -- | The pagination token to continue to the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the list replication set.
+    replicationSetArns :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListReplicationSetsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listReplicationSetsResponse_nextToken' - The pagination token to continue to the next page of results.
+--
+-- 'httpStatus', 'listReplicationSetsResponse_httpStatus' - The response's http status code.
+--
+-- 'replicationSetArns', 'listReplicationSetsResponse_replicationSetArns' - The Amazon Resource Name (ARN) of the list replication set.
+newListReplicationSetsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListReplicationSetsResponse
+newListReplicationSetsResponse pHttpStatus_ =
+  ListReplicationSetsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      replicationSetArns = Prelude.mempty
+    }
+
+-- | The pagination token to continue to the next page of results.
+listReplicationSetsResponse_nextToken :: Lens.Lens' ListReplicationSetsResponse (Prelude.Maybe Prelude.Text)
+listReplicationSetsResponse_nextToken = Lens.lens (\ListReplicationSetsResponse' {nextToken} -> nextToken) (\s@ListReplicationSetsResponse' {} a -> s {nextToken = a} :: ListReplicationSetsResponse)
+
+-- | The response's http status code.
+listReplicationSetsResponse_httpStatus :: Lens.Lens' ListReplicationSetsResponse Prelude.Int
+listReplicationSetsResponse_httpStatus = Lens.lens (\ListReplicationSetsResponse' {httpStatus} -> httpStatus) (\s@ListReplicationSetsResponse' {} a -> s {httpStatus = a} :: ListReplicationSetsResponse)
+
+-- | The Amazon Resource Name (ARN) of the list replication set.
+listReplicationSetsResponse_replicationSetArns :: Lens.Lens' ListReplicationSetsResponse [Prelude.Text]
+listReplicationSetsResponse_replicationSetArns = Lens.lens (\ListReplicationSetsResponse' {replicationSetArns} -> replicationSetArns) (\s@ListReplicationSetsResponse' {} a -> s {replicationSetArns = a} :: ListReplicationSetsResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListReplicationSetsResponse where
+  rnf ListReplicationSetsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf replicationSetArns
diff --git a/gen/Amazonka/SSMIncidents/ListResponsePlans.hs b/gen/Amazonka/SSMIncidents/ListResponsePlans.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/ListResponsePlans.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.SSMIncidents.ListResponsePlans
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all response plans in your account.
+--
+-- This operation returns paginated results.
+module Amazonka.SSMIncidents.ListResponsePlans
+  ( -- * Creating a Request
+    ListResponsePlans (..),
+    newListResponsePlans,
+
+    -- * Request Lenses
+    listResponsePlans_maxResults,
+    listResponsePlans_nextToken,
+
+    -- * Destructuring the Response
+    ListResponsePlansResponse (..),
+    newListResponsePlansResponse,
+
+    -- * Response Lenses
+    listResponsePlansResponse_nextToken,
+    listResponsePlansResponse_httpStatus,
+    listResponsePlansResponse_responsePlanSummaries,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SSMIncidents.Types
+
+-- | /See:/ 'newListResponsePlans' smart constructor.
+data ListResponsePlans = ListResponsePlans'
+  { -- | The maximum number of response plans per page.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The pagination token to continue to the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListResponsePlans' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listResponsePlans_maxResults' - The maximum number of response plans per page.
+--
+-- 'nextToken', 'listResponsePlans_nextToken' - The pagination token to continue to the next page of results.
+newListResponsePlans ::
+  ListResponsePlans
+newListResponsePlans =
+  ListResponsePlans'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The maximum number of response plans per page.
+listResponsePlans_maxResults :: Lens.Lens' ListResponsePlans (Prelude.Maybe Prelude.Natural)
+listResponsePlans_maxResults = Lens.lens (\ListResponsePlans' {maxResults} -> maxResults) (\s@ListResponsePlans' {} a -> s {maxResults = a} :: ListResponsePlans)
+
+-- | The pagination token to continue to the next page of results.
+listResponsePlans_nextToken :: Lens.Lens' ListResponsePlans (Prelude.Maybe Prelude.Text)
+listResponsePlans_nextToken = Lens.lens (\ListResponsePlans' {nextToken} -> nextToken) (\s@ListResponsePlans' {} a -> s {nextToken = a} :: ListResponsePlans)
+
+instance Core.AWSPager ListResponsePlans where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listResponsePlansResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listResponsePlansResponse_responsePlanSummaries
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listResponsePlans_nextToken
+          Lens..~ rs
+          Lens.^? listResponsePlansResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListResponsePlans where
+  type
+    AWSResponse ListResponsePlans =
+      ListResponsePlansResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListResponsePlansResponse'
+            Prelude.<$> (x Data..?> "nextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "responsePlanSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListResponsePlans where
+  hashWithSalt _salt ListResponsePlans' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListResponsePlans where
+  rnf ListResponsePlans' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListResponsePlans where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListResponsePlans where
+  toJSON ListResponsePlans' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("maxResults" Data..=) Prelude.<$> maxResults,
+            ("nextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath ListResponsePlans where
+  toPath = Prelude.const "/listResponsePlans"
+
+instance Data.ToQuery ListResponsePlans where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListResponsePlansResponse' smart constructor.
+data ListResponsePlansResponse = ListResponsePlansResponse'
+  { -- | The pagination token to continue to the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Details of each response plan.
+    responsePlanSummaries :: [ResponsePlanSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListResponsePlansResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listResponsePlansResponse_nextToken' - The pagination token to continue to the next page of results.
+--
+-- 'httpStatus', 'listResponsePlansResponse_httpStatus' - The response's http status code.
+--
+-- 'responsePlanSummaries', 'listResponsePlansResponse_responsePlanSummaries' - Details of each response plan.
+newListResponsePlansResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListResponsePlansResponse
+newListResponsePlansResponse pHttpStatus_ =
+  ListResponsePlansResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      responsePlanSummaries = Prelude.mempty
+    }
+
+-- | The pagination token to continue to the next page of results.
+listResponsePlansResponse_nextToken :: Lens.Lens' ListResponsePlansResponse (Prelude.Maybe Prelude.Text)
+listResponsePlansResponse_nextToken = Lens.lens (\ListResponsePlansResponse' {nextToken} -> nextToken) (\s@ListResponsePlansResponse' {} a -> s {nextToken = a} :: ListResponsePlansResponse)
+
+-- | The response's http status code.
+listResponsePlansResponse_httpStatus :: Lens.Lens' ListResponsePlansResponse Prelude.Int
+listResponsePlansResponse_httpStatus = Lens.lens (\ListResponsePlansResponse' {httpStatus} -> httpStatus) (\s@ListResponsePlansResponse' {} a -> s {httpStatus = a} :: ListResponsePlansResponse)
+
+-- | Details of each response plan.
+listResponsePlansResponse_responsePlanSummaries :: Lens.Lens' ListResponsePlansResponse [ResponsePlanSummary]
+listResponsePlansResponse_responsePlanSummaries = Lens.lens (\ListResponsePlansResponse' {responsePlanSummaries} -> responsePlanSummaries) (\s@ListResponsePlansResponse' {} a -> s {responsePlanSummaries = a} :: ListResponsePlansResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListResponsePlansResponse where
+  rnf ListResponsePlansResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf responsePlanSummaries
diff --git a/gen/Amazonka/SSMIncidents/ListTagsForResource.hs b/gen/Amazonka/SSMIncidents/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/ListTagsForResource.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.SSMIncidents.ListTagsForResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the tags that are attached to the specified response plan.
+module Amazonka.SSMIncidents.ListTagsForResource
+  ( -- * Creating a Request
+    ListTagsForResource (..),
+    newListTagsForResource,
+
+    -- * Request Lenses
+    listTagsForResource_resourceArn,
+
+    -- * Destructuring the Response
+    ListTagsForResourceResponse (..),
+    newListTagsForResourceResponse,
+
+    -- * Response Lenses
+    listTagsForResourceResponse_httpStatus,
+    listTagsForResourceResponse_tags,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SSMIncidents.Types
+
+-- | /See:/ 'newListTagsForResource' smart constructor.
+data ListTagsForResource = ListTagsForResource'
+  { -- | The Amazon Resource Name (ARN) of the response plan.
+    resourceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'listTagsForResource_resourceArn' - The Amazon Resource Name (ARN) of the response plan.
+newListTagsForResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  ListTagsForResource
+newListTagsForResource pResourceArn_ =
+  ListTagsForResource' {resourceArn = pResourceArn_}
+
+-- | The Amazon Resource Name (ARN) of the response plan.
+listTagsForResource_resourceArn :: Lens.Lens' ListTagsForResource Prelude.Text
+listTagsForResource_resourceArn = Lens.lens (\ListTagsForResource' {resourceArn} -> resourceArn) (\s@ListTagsForResource' {} a -> s {resourceArn = a} :: ListTagsForResource)
+
+instance Core.AWSRequest ListTagsForResource where
+  type
+    AWSResponse ListTagsForResource =
+      ListTagsForResourceResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListTagsForResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..?> "tags" Core..!@ Prelude.mempty)
+      )
+
+instance Prelude.Hashable ListTagsForResource where
+  hashWithSalt _salt ListTagsForResource' {..} =
+    _salt `Prelude.hashWithSalt` resourceArn
+
+instance Prelude.NFData ListTagsForResource where
+  rnf ListTagsForResource' {..} =
+    Prelude.rnf resourceArn
+
+instance Data.ToHeaders ListTagsForResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListTagsForResource where
+  toPath ListTagsForResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery ListTagsForResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListTagsForResourceResponse' smart constructor.
+data ListTagsForResourceResponse = ListTagsForResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | A list of tags for the response plan.
+    tags :: Prelude.HashMap Prelude.Text Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.
+--
+-- 'tags', 'listTagsForResourceResponse_tags' - A list of tags for the response plan.
+newListTagsForResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTagsForResourceResponse
+newListTagsForResourceResponse pHttpStatus_ =
+  ListTagsForResourceResponse'
+    { httpStatus =
+        pHttpStatus_,
+      tags = Prelude.mempty
+    }
+
+-- | The response's http status code.
+listTagsForResourceResponse_httpStatus :: Lens.Lens' ListTagsForResourceResponse Prelude.Int
+listTagsForResourceResponse_httpStatus = Lens.lens (\ListTagsForResourceResponse' {httpStatus} -> httpStatus) (\s@ListTagsForResourceResponse' {} a -> s {httpStatus = a} :: ListTagsForResourceResponse)
+
+-- | A list of tags for the response plan.
+listTagsForResourceResponse_tags :: Lens.Lens' ListTagsForResourceResponse (Prelude.HashMap Prelude.Text Prelude.Text)
+listTagsForResourceResponse_tags = Lens.lens (\ListTagsForResourceResponse' {tags} -> tags) (\s@ListTagsForResourceResponse' {} a -> s {tags = a} :: ListTagsForResourceResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListTagsForResourceResponse where
+  rnf ListTagsForResourceResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf tags
diff --git a/gen/Amazonka/SSMIncidents/ListTimelineEvents.hs b/gen/Amazonka/SSMIncidents/ListTimelineEvents.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/ListTimelineEvents.hs
@@ -0,0 +1,327 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.ListTimelineEvents
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists timeline events for the specified incident record.
+--
+-- This operation returns paginated results.
+module Amazonka.SSMIncidents.ListTimelineEvents
+  ( -- * Creating a Request
+    ListTimelineEvents (..),
+    newListTimelineEvents,
+
+    -- * Request Lenses
+    listTimelineEvents_filters,
+    listTimelineEvents_maxResults,
+    listTimelineEvents_nextToken,
+    listTimelineEvents_sortBy,
+    listTimelineEvents_sortOrder,
+    listTimelineEvents_incidentRecordArn,
+
+    -- * Destructuring the Response
+    ListTimelineEventsResponse (..),
+    newListTimelineEventsResponse,
+
+    -- * Response Lenses
+    listTimelineEventsResponse_nextToken,
+    listTimelineEventsResponse_httpStatus,
+    listTimelineEventsResponse_eventSummaries,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SSMIncidents.Types
+
+-- | /See:/ 'newListTimelineEvents' smart constructor.
+data ListTimelineEvents = ListTimelineEvents'
+  { -- | Filters the timeline events based on the provided conditional values.
+    -- You can filter timeline events using the following keys:
+    --
+    -- -   @eventTime@
+    --
+    -- -   @eventType@
+    --
+    -- Note the following when deciding how to use Filters:
+    --
+    -- -   If you don\'t specify a Filter, the response includes all timeline
+    --     events.
+    --
+    -- -   If you specify more than one filter in a single request, the
+    --     response returns timeline events that match all filters.
+    --
+    -- -   If you specify a filter with more than one value, the response
+    --     returns timeline events that match any of the values provided.
+    filters :: Prelude.Maybe [Filter],
+    -- | The maximum number of results per page.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The pagination token to continue to the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Sort by the specified key value pair.
+    sortBy :: Prelude.Maybe TimelineEventSort,
+    -- | Sorts the order of timeline events by the value specified in the
+    -- @sortBy@ field.
+    sortOrder :: Prelude.Maybe SortOrder,
+    -- | The Amazon Resource Name (ARN) of the incident that includes the
+    -- timeline event.
+    incidentRecordArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTimelineEvents' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'filters', 'listTimelineEvents_filters' - Filters the timeline events based on the provided conditional values.
+-- You can filter timeline events using the following keys:
+--
+-- -   @eventTime@
+--
+-- -   @eventType@
+--
+-- Note the following when deciding how to use Filters:
+--
+-- -   If you don\'t specify a Filter, the response includes all timeline
+--     events.
+--
+-- -   If you specify more than one filter in a single request, the
+--     response returns timeline events that match all filters.
+--
+-- -   If you specify a filter with more than one value, the response
+--     returns timeline events that match any of the values provided.
+--
+-- 'maxResults', 'listTimelineEvents_maxResults' - The maximum number of results per page.
+--
+-- 'nextToken', 'listTimelineEvents_nextToken' - The pagination token to continue to the next page of results.
+--
+-- 'sortBy', 'listTimelineEvents_sortBy' - Sort by the specified key value pair.
+--
+-- 'sortOrder', 'listTimelineEvents_sortOrder' - Sorts the order of timeline events by the value specified in the
+-- @sortBy@ field.
+--
+-- 'incidentRecordArn', 'listTimelineEvents_incidentRecordArn' - The Amazon Resource Name (ARN) of the incident that includes the
+-- timeline event.
+newListTimelineEvents ::
+  -- | 'incidentRecordArn'
+  Prelude.Text ->
+  ListTimelineEvents
+newListTimelineEvents pIncidentRecordArn_ =
+  ListTimelineEvents'
+    { filters = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      incidentRecordArn = pIncidentRecordArn_
+    }
+
+-- | Filters the timeline events based on the provided conditional values.
+-- You can filter timeline events using the following keys:
+--
+-- -   @eventTime@
+--
+-- -   @eventType@
+--
+-- Note the following when deciding how to use Filters:
+--
+-- -   If you don\'t specify a Filter, the response includes all timeline
+--     events.
+--
+-- -   If you specify more than one filter in a single request, the
+--     response returns timeline events that match all filters.
+--
+-- -   If you specify a filter with more than one value, the response
+--     returns timeline events that match any of the values provided.
+listTimelineEvents_filters :: Lens.Lens' ListTimelineEvents (Prelude.Maybe [Filter])
+listTimelineEvents_filters = Lens.lens (\ListTimelineEvents' {filters} -> filters) (\s@ListTimelineEvents' {} a -> s {filters = a} :: ListTimelineEvents) Prelude.. Lens.mapping Lens.coerced
+
+-- | The maximum number of results per page.
+listTimelineEvents_maxResults :: Lens.Lens' ListTimelineEvents (Prelude.Maybe Prelude.Natural)
+listTimelineEvents_maxResults = Lens.lens (\ListTimelineEvents' {maxResults} -> maxResults) (\s@ListTimelineEvents' {} a -> s {maxResults = a} :: ListTimelineEvents)
+
+-- | The pagination token to continue to the next page of results.
+listTimelineEvents_nextToken :: Lens.Lens' ListTimelineEvents (Prelude.Maybe Prelude.Text)
+listTimelineEvents_nextToken = Lens.lens (\ListTimelineEvents' {nextToken} -> nextToken) (\s@ListTimelineEvents' {} a -> s {nextToken = a} :: ListTimelineEvents)
+
+-- | Sort by the specified key value pair.
+listTimelineEvents_sortBy :: Lens.Lens' ListTimelineEvents (Prelude.Maybe TimelineEventSort)
+listTimelineEvents_sortBy = Lens.lens (\ListTimelineEvents' {sortBy} -> sortBy) (\s@ListTimelineEvents' {} a -> s {sortBy = a} :: ListTimelineEvents)
+
+-- | Sorts the order of timeline events by the value specified in the
+-- @sortBy@ field.
+listTimelineEvents_sortOrder :: Lens.Lens' ListTimelineEvents (Prelude.Maybe SortOrder)
+listTimelineEvents_sortOrder = Lens.lens (\ListTimelineEvents' {sortOrder} -> sortOrder) (\s@ListTimelineEvents' {} a -> s {sortOrder = a} :: ListTimelineEvents)
+
+-- | The Amazon Resource Name (ARN) of the incident that includes the
+-- timeline event.
+listTimelineEvents_incidentRecordArn :: Lens.Lens' ListTimelineEvents Prelude.Text
+listTimelineEvents_incidentRecordArn = Lens.lens (\ListTimelineEvents' {incidentRecordArn} -> incidentRecordArn) (\s@ListTimelineEvents' {} a -> s {incidentRecordArn = a} :: ListTimelineEvents)
+
+instance Core.AWSPager ListTimelineEvents where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listTimelineEventsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listTimelineEventsResponse_eventSummaries
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listTimelineEvents_nextToken
+          Lens..~ rs
+          Lens.^? listTimelineEventsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListTimelineEvents where
+  type
+    AWSResponse ListTimelineEvents =
+      ListTimelineEventsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListTimelineEventsResponse'
+            Prelude.<$> (x Data..?> "nextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "eventSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListTimelineEvents where
+  hashWithSalt _salt ListTimelineEvents' {..} =
+    _salt
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` incidentRecordArn
+
+instance Prelude.NFData ListTimelineEvents where
+  rnf ListTimelineEvents' {..} =
+    Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf incidentRecordArn
+
+instance Data.ToHeaders ListTimelineEvents where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListTimelineEvents where
+  toJSON ListTimelineEvents' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("filters" Data..=) Prelude.<$> filters,
+            ("maxResults" Data..=) Prelude.<$> maxResults,
+            ("nextToken" Data..=) Prelude.<$> nextToken,
+            ("sortBy" Data..=) Prelude.<$> sortBy,
+            ("sortOrder" Data..=) Prelude.<$> sortOrder,
+            Prelude.Just
+              ("incidentRecordArn" Data..= incidentRecordArn)
+          ]
+      )
+
+instance Data.ToPath ListTimelineEvents where
+  toPath = Prelude.const "/listTimelineEvents"
+
+instance Data.ToQuery ListTimelineEvents where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListTimelineEventsResponse' smart constructor.
+data ListTimelineEventsResponse = ListTimelineEventsResponse'
+  { -- | The pagination token to continue to the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Details about each event that occurred during the incident.
+    eventSummaries :: [EventSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTimelineEventsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listTimelineEventsResponse_nextToken' - The pagination token to continue to the next page of results.
+--
+-- 'httpStatus', 'listTimelineEventsResponse_httpStatus' - The response's http status code.
+--
+-- 'eventSummaries', 'listTimelineEventsResponse_eventSummaries' - Details about each event that occurred during the incident.
+newListTimelineEventsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTimelineEventsResponse
+newListTimelineEventsResponse pHttpStatus_ =
+  ListTimelineEventsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      eventSummaries = Prelude.mempty
+    }
+
+-- | The pagination token to continue to the next page of results.
+listTimelineEventsResponse_nextToken :: Lens.Lens' ListTimelineEventsResponse (Prelude.Maybe Prelude.Text)
+listTimelineEventsResponse_nextToken = Lens.lens (\ListTimelineEventsResponse' {nextToken} -> nextToken) (\s@ListTimelineEventsResponse' {} a -> s {nextToken = a} :: ListTimelineEventsResponse)
+
+-- | The response's http status code.
+listTimelineEventsResponse_httpStatus :: Lens.Lens' ListTimelineEventsResponse Prelude.Int
+listTimelineEventsResponse_httpStatus = Lens.lens (\ListTimelineEventsResponse' {httpStatus} -> httpStatus) (\s@ListTimelineEventsResponse' {} a -> s {httpStatus = a} :: ListTimelineEventsResponse)
+
+-- | Details about each event that occurred during the incident.
+listTimelineEventsResponse_eventSummaries :: Lens.Lens' ListTimelineEventsResponse [EventSummary]
+listTimelineEventsResponse_eventSummaries = Lens.lens (\ListTimelineEventsResponse' {eventSummaries} -> eventSummaries) (\s@ListTimelineEventsResponse' {} a -> s {eventSummaries = a} :: ListTimelineEventsResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListTimelineEventsResponse where
+  rnf ListTimelineEventsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf eventSummaries
diff --git a/gen/Amazonka/SSMIncidents/PutResourcePolicy.hs b/gen/Amazonka/SSMIncidents/PutResourcePolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/PutResourcePolicy.hs
@@ -0,0 +1,192 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.PutResourcePolicy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds a resource policy to the specified response plan. The resource
+-- policy is used to share the response plan using Resource Access Manager
+-- (RAM). For more information about cross-account sharing, see
+-- <https://docs.aws.amazon.com/incident-manager/latest/userguide/incident-manager-cross-account-cross-region.html Cross-Region and cross-account incident management>.
+module Amazonka.SSMIncidents.PutResourcePolicy
+  ( -- * Creating a Request
+    PutResourcePolicy (..),
+    newPutResourcePolicy,
+
+    -- * Request Lenses
+    putResourcePolicy_policy,
+    putResourcePolicy_resourceArn,
+
+    -- * Destructuring the Response
+    PutResourcePolicyResponse (..),
+    newPutResourcePolicyResponse,
+
+    -- * Response Lenses
+    putResourcePolicyResponse_httpStatus,
+    putResourcePolicyResponse_policyId,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SSMIncidents.Types
+
+-- | /See:/ 'newPutResourcePolicy' smart constructor.
+data PutResourcePolicy = PutResourcePolicy'
+  { -- | Details of the resource policy.
+    policy :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the response plan to add the resource
+    -- policy to.
+    resourceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutResourcePolicy' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'policy', 'putResourcePolicy_policy' - Details of the resource policy.
+--
+-- 'resourceArn', 'putResourcePolicy_resourceArn' - The Amazon Resource Name (ARN) of the response plan to add the resource
+-- policy to.
+newPutResourcePolicy ::
+  -- | 'policy'
+  Prelude.Text ->
+  -- | 'resourceArn'
+  Prelude.Text ->
+  PutResourcePolicy
+newPutResourcePolicy pPolicy_ pResourceArn_ =
+  PutResourcePolicy'
+    { policy = pPolicy_,
+      resourceArn = pResourceArn_
+    }
+
+-- | Details of the resource policy.
+putResourcePolicy_policy :: Lens.Lens' PutResourcePolicy Prelude.Text
+putResourcePolicy_policy = Lens.lens (\PutResourcePolicy' {policy} -> policy) (\s@PutResourcePolicy' {} a -> s {policy = a} :: PutResourcePolicy)
+
+-- | The Amazon Resource Name (ARN) of the response plan to add the resource
+-- policy to.
+putResourcePolicy_resourceArn :: Lens.Lens' PutResourcePolicy Prelude.Text
+putResourcePolicy_resourceArn = Lens.lens (\PutResourcePolicy' {resourceArn} -> resourceArn) (\s@PutResourcePolicy' {} a -> s {resourceArn = a} :: PutResourcePolicy)
+
+instance Core.AWSRequest PutResourcePolicy where
+  type
+    AWSResponse PutResourcePolicy =
+      PutResourcePolicyResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          PutResourcePolicyResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "policyId")
+      )
+
+instance Prelude.Hashable PutResourcePolicy where
+  hashWithSalt _salt PutResourcePolicy' {..} =
+    _salt
+      `Prelude.hashWithSalt` policy
+      `Prelude.hashWithSalt` resourceArn
+
+instance Prelude.NFData PutResourcePolicy where
+  rnf PutResourcePolicy' {..} =
+    Prelude.rnf policy
+      `Prelude.seq` Prelude.rnf resourceArn
+
+instance Data.ToHeaders PutResourcePolicy where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON PutResourcePolicy where
+  toJSON PutResourcePolicy' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("policy" Data..= policy),
+            Prelude.Just ("resourceArn" Data..= resourceArn)
+          ]
+      )
+
+instance Data.ToPath PutResourcePolicy where
+  toPath = Prelude.const "/putResourcePolicy"
+
+instance Data.ToQuery PutResourcePolicy where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newPutResourcePolicyResponse' smart constructor.
+data PutResourcePolicyResponse = PutResourcePolicyResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The ID of the resource policy.
+    policyId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutResourcePolicyResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'putResourcePolicyResponse_httpStatus' - The response's http status code.
+--
+-- 'policyId', 'putResourcePolicyResponse_policyId' - The ID of the resource policy.
+newPutResourcePolicyResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'policyId'
+  Prelude.Text ->
+  PutResourcePolicyResponse
+newPutResourcePolicyResponse pHttpStatus_ pPolicyId_ =
+  PutResourcePolicyResponse'
+    { httpStatus =
+        pHttpStatus_,
+      policyId = pPolicyId_
+    }
+
+-- | The response's http status code.
+putResourcePolicyResponse_httpStatus :: Lens.Lens' PutResourcePolicyResponse Prelude.Int
+putResourcePolicyResponse_httpStatus = Lens.lens (\PutResourcePolicyResponse' {httpStatus} -> httpStatus) (\s@PutResourcePolicyResponse' {} a -> s {httpStatus = a} :: PutResourcePolicyResponse)
+
+-- | The ID of the resource policy.
+putResourcePolicyResponse_policyId :: Lens.Lens' PutResourcePolicyResponse Prelude.Text
+putResourcePolicyResponse_policyId = Lens.lens (\PutResourcePolicyResponse' {policyId} -> policyId) (\s@PutResourcePolicyResponse' {} a -> s {policyId = a} :: PutResourcePolicyResponse)
+
+instance Prelude.NFData PutResourcePolicyResponse where
+  rnf PutResourcePolicyResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf policyId
diff --git a/gen/Amazonka/SSMIncidents/StartIncident.hs b/gen/Amazonka/SSMIncidents/StartIncident.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/StartIncident.hs
@@ -0,0 +1,312 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.StartIncident
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Used to start an incident from CloudWatch alarms, EventBridge events, or
+-- manually.
+module Amazonka.SSMIncidents.StartIncident
+  ( -- * Creating a Request
+    StartIncident (..),
+    newStartIncident,
+
+    -- * Request Lenses
+    startIncident_clientToken,
+    startIncident_impact,
+    startIncident_relatedItems,
+    startIncident_title,
+    startIncident_triggerDetails,
+    startIncident_responsePlanArn,
+
+    -- * Destructuring the Response
+    StartIncidentResponse (..),
+    newStartIncidentResponse,
+
+    -- * Response Lenses
+    startIncidentResponse_httpStatus,
+    startIncidentResponse_incidentRecordArn,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SSMIncidents.Types
+
+-- | /See:/ 'newStartIncident' smart constructor.
+data StartIncident = StartIncident'
+  { -- | A token ensuring that the operation is called only once with the
+    -- specified details.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | Defines the impact to the customers. Providing an impact overwrites the
+    -- impact provided by a response plan.
+    --
+    -- __Possible impacts:__
+    --
+    -- -   @1@ - Critical impact, this typically relates to full application
+    --     failure that impacts many to all customers.
+    --
+    -- -   @2@ - High impact, partial application failure with impact to many
+    --     customers.
+    --
+    -- -   @3@ - Medium impact, the application is providing reduced service to
+    --     customers.
+    --
+    -- -   @4@ - Low impact, customer might aren\'t impacted by the problem
+    --     yet.
+    --
+    -- -   @5@ - No impact, customers aren\'t currently impacted but urgent
+    --     action is needed to avoid impact.
+    impact :: Prelude.Maybe Prelude.Natural,
+    -- | Add related items to the incident for other responders to use. Related
+    -- items are AWS resources, external links, or files uploaded to an Amazon
+    -- S3 bucket.
+    relatedItems :: Prelude.Maybe [RelatedItem],
+    -- | Provide a title for the incident. Providing a title overwrites the title
+    -- provided by the response plan.
+    title :: Prelude.Maybe Prelude.Text,
+    -- | Details of what created the incident record in Incident Manager.
+    triggerDetails :: Prelude.Maybe TriggerDetails,
+    -- | The Amazon Resource Name (ARN) of the response plan that pre-defines
+    -- summary, chat channels, Amazon SNS topics, runbooks, title, and impact
+    -- of the incident.
+    responsePlanArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartIncident' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientToken', 'startIncident_clientToken' - A token ensuring that the operation is called only once with the
+-- specified details.
+--
+-- 'impact', 'startIncident_impact' - Defines the impact to the customers. Providing an impact overwrites the
+-- impact provided by a response plan.
+--
+-- __Possible impacts:__
+--
+-- -   @1@ - Critical impact, this typically relates to full application
+--     failure that impacts many to all customers.
+--
+-- -   @2@ - High impact, partial application failure with impact to many
+--     customers.
+--
+-- -   @3@ - Medium impact, the application is providing reduced service to
+--     customers.
+--
+-- -   @4@ - Low impact, customer might aren\'t impacted by the problem
+--     yet.
+--
+-- -   @5@ - No impact, customers aren\'t currently impacted but urgent
+--     action is needed to avoid impact.
+--
+-- 'relatedItems', 'startIncident_relatedItems' - Add related items to the incident for other responders to use. Related
+-- items are AWS resources, external links, or files uploaded to an Amazon
+-- S3 bucket.
+--
+-- 'title', 'startIncident_title' - Provide a title for the incident. Providing a title overwrites the title
+-- provided by the response plan.
+--
+-- 'triggerDetails', 'startIncident_triggerDetails' - Details of what created the incident record in Incident Manager.
+--
+-- 'responsePlanArn', 'startIncident_responsePlanArn' - The Amazon Resource Name (ARN) of the response plan that pre-defines
+-- summary, chat channels, Amazon SNS topics, runbooks, title, and impact
+-- of the incident.
+newStartIncident ::
+  -- | 'responsePlanArn'
+  Prelude.Text ->
+  StartIncident
+newStartIncident pResponsePlanArn_ =
+  StartIncident'
+    { clientToken = Prelude.Nothing,
+      impact = Prelude.Nothing,
+      relatedItems = Prelude.Nothing,
+      title = Prelude.Nothing,
+      triggerDetails = Prelude.Nothing,
+      responsePlanArn = pResponsePlanArn_
+    }
+
+-- | A token ensuring that the operation is called only once with the
+-- specified details.
+startIncident_clientToken :: Lens.Lens' StartIncident (Prelude.Maybe Prelude.Text)
+startIncident_clientToken = Lens.lens (\StartIncident' {clientToken} -> clientToken) (\s@StartIncident' {} a -> s {clientToken = a} :: StartIncident)
+
+-- | Defines the impact to the customers. Providing an impact overwrites the
+-- impact provided by a response plan.
+--
+-- __Possible impacts:__
+--
+-- -   @1@ - Critical impact, this typically relates to full application
+--     failure that impacts many to all customers.
+--
+-- -   @2@ - High impact, partial application failure with impact to many
+--     customers.
+--
+-- -   @3@ - Medium impact, the application is providing reduced service to
+--     customers.
+--
+-- -   @4@ - Low impact, customer might aren\'t impacted by the problem
+--     yet.
+--
+-- -   @5@ - No impact, customers aren\'t currently impacted but urgent
+--     action is needed to avoid impact.
+startIncident_impact :: Lens.Lens' StartIncident (Prelude.Maybe Prelude.Natural)
+startIncident_impact = Lens.lens (\StartIncident' {impact} -> impact) (\s@StartIncident' {} a -> s {impact = a} :: StartIncident)
+
+-- | Add related items to the incident for other responders to use. Related
+-- items are AWS resources, external links, or files uploaded to an Amazon
+-- S3 bucket.
+startIncident_relatedItems :: Lens.Lens' StartIncident (Prelude.Maybe [RelatedItem])
+startIncident_relatedItems = Lens.lens (\StartIncident' {relatedItems} -> relatedItems) (\s@StartIncident' {} a -> s {relatedItems = a} :: StartIncident) Prelude.. Lens.mapping Lens.coerced
+
+-- | Provide a title for the incident. Providing a title overwrites the title
+-- provided by the response plan.
+startIncident_title :: Lens.Lens' StartIncident (Prelude.Maybe Prelude.Text)
+startIncident_title = Lens.lens (\StartIncident' {title} -> title) (\s@StartIncident' {} a -> s {title = a} :: StartIncident)
+
+-- | Details of what created the incident record in Incident Manager.
+startIncident_triggerDetails :: Lens.Lens' StartIncident (Prelude.Maybe TriggerDetails)
+startIncident_triggerDetails = Lens.lens (\StartIncident' {triggerDetails} -> triggerDetails) (\s@StartIncident' {} a -> s {triggerDetails = a} :: StartIncident)
+
+-- | The Amazon Resource Name (ARN) of the response plan that pre-defines
+-- summary, chat channels, Amazon SNS topics, runbooks, title, and impact
+-- of the incident.
+startIncident_responsePlanArn :: Lens.Lens' StartIncident Prelude.Text
+startIncident_responsePlanArn = Lens.lens (\StartIncident' {responsePlanArn} -> responsePlanArn) (\s@StartIncident' {} a -> s {responsePlanArn = a} :: StartIncident)
+
+instance Core.AWSRequest StartIncident where
+  type
+    AWSResponse StartIncident =
+      StartIncidentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          StartIncidentResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "incidentRecordArn")
+      )
+
+instance Prelude.Hashable StartIncident where
+  hashWithSalt _salt StartIncident' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` impact
+      `Prelude.hashWithSalt` relatedItems
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` triggerDetails
+      `Prelude.hashWithSalt` responsePlanArn
+
+instance Prelude.NFData StartIncident where
+  rnf StartIncident' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf impact
+      `Prelude.seq` Prelude.rnf relatedItems
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf triggerDetails
+      `Prelude.seq` Prelude.rnf responsePlanArn
+
+instance Data.ToHeaders StartIncident where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StartIncident where
+  toJSON StartIncident' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("clientToken" Data..=) Prelude.<$> clientToken,
+            ("impact" Data..=) Prelude.<$> impact,
+            ("relatedItems" Data..=) Prelude.<$> relatedItems,
+            ("title" Data..=) Prelude.<$> title,
+            ("triggerDetails" Data..=)
+              Prelude.<$> triggerDetails,
+            Prelude.Just
+              ("responsePlanArn" Data..= responsePlanArn)
+          ]
+      )
+
+instance Data.ToPath StartIncident where
+  toPath = Prelude.const "/startIncident"
+
+instance Data.ToQuery StartIncident where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStartIncidentResponse' smart constructor.
+data StartIncidentResponse = StartIncidentResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The ARN of the newly created incident record.
+    incidentRecordArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartIncidentResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'startIncidentResponse_httpStatus' - The response's http status code.
+--
+-- 'incidentRecordArn', 'startIncidentResponse_incidentRecordArn' - The ARN of the newly created incident record.
+newStartIncidentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'incidentRecordArn'
+  Prelude.Text ->
+  StartIncidentResponse
+newStartIncidentResponse
+  pHttpStatus_
+  pIncidentRecordArn_ =
+    StartIncidentResponse'
+      { httpStatus = pHttpStatus_,
+        incidentRecordArn = pIncidentRecordArn_
+      }
+
+-- | The response's http status code.
+startIncidentResponse_httpStatus :: Lens.Lens' StartIncidentResponse Prelude.Int
+startIncidentResponse_httpStatus = Lens.lens (\StartIncidentResponse' {httpStatus} -> httpStatus) (\s@StartIncidentResponse' {} a -> s {httpStatus = a} :: StartIncidentResponse)
+
+-- | The ARN of the newly created incident record.
+startIncidentResponse_incidentRecordArn :: Lens.Lens' StartIncidentResponse Prelude.Text
+startIncidentResponse_incidentRecordArn = Lens.lens (\StartIncidentResponse' {incidentRecordArn} -> incidentRecordArn) (\s@StartIncidentResponse' {} a -> s {incidentRecordArn = a} :: StartIncidentResponse)
+
+instance Prelude.NFData StartIncidentResponse where
+  rnf StartIncidentResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf incidentRecordArn
diff --git a/gen/Amazonka/SSMIncidents/TagResource.hs b/gen/Amazonka/SSMIncidents/TagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/TagResource.hs
@@ -0,0 +1,166 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.TagResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds a tag to a response plan.
+module Amazonka.SSMIncidents.TagResource
+  ( -- * Creating a Request
+    TagResource (..),
+    newTagResource,
+
+    -- * Request Lenses
+    tagResource_resourceArn,
+    tagResource_tags,
+
+    -- * Destructuring the Response
+    TagResourceResponse (..),
+    newTagResourceResponse,
+
+    -- * Response Lenses
+    tagResourceResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SSMIncidents.Types
+
+-- | /See:/ 'newTagResource' smart constructor.
+data TagResource = TagResource'
+  { -- | The Amazon Resource Name (ARN) of the response plan you\'re adding the
+    -- tags to.
+    resourceArn :: Prelude.Text,
+    -- | A list of tags to add to the response plan.
+    tags :: Prelude.HashMap Prelude.Text Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'tagResource_resourceArn' - The Amazon Resource Name (ARN) of the response plan you\'re adding the
+-- tags to.
+--
+-- 'tags', 'tagResource_tags' - A list of tags to add to the response plan.
+newTagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  TagResource
+newTagResource pResourceArn_ =
+  TagResource'
+    { resourceArn = pResourceArn_,
+      tags = Prelude.mempty
+    }
+
+-- | The Amazon Resource Name (ARN) of the response plan you\'re adding the
+-- tags to.
+tagResource_resourceArn :: Lens.Lens' TagResource Prelude.Text
+tagResource_resourceArn = Lens.lens (\TagResource' {resourceArn} -> resourceArn) (\s@TagResource' {} a -> s {resourceArn = a} :: TagResource)
+
+-- | A list of tags to add to the response plan.
+tagResource_tags :: Lens.Lens' TagResource (Prelude.HashMap Prelude.Text Prelude.Text)
+tagResource_tags = Lens.lens (\TagResource' {tags} -> tags) (\s@TagResource' {} a -> s {tags = a} :: TagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest TagResource where
+  type AWSResponse TagResource = TagResourceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          TagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable TagResource where
+  hashWithSalt _salt TagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData TagResource where
+  rnf TagResource' {..} =
+    Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf tags
+
+instance Data.ToHeaders TagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON TagResource where
+  toJSON TagResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("tags" Data..= tags)]
+      )
+
+instance Data.ToPath TagResource where
+  toPath TagResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery TagResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newTagResourceResponse' smart constructor.
+data TagResourceResponse = TagResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'tagResourceResponse_httpStatus' - The response's http status code.
+newTagResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  TagResourceResponse
+newTagResourceResponse pHttpStatus_ =
+  TagResourceResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+tagResourceResponse_httpStatus :: Lens.Lens' TagResourceResponse Prelude.Int
+tagResourceResponse_httpStatus = Lens.lens (\TagResourceResponse' {httpStatus} -> httpStatus) (\s@TagResourceResponse' {} a -> s {httpStatus = a} :: TagResourceResponse)
+
+instance Prelude.NFData TagResourceResponse where
+  rnf TagResourceResponse' {..} = Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SSMIncidents/Types.hs b/gen/Amazonka/SSMIncidents/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types.hs
@@ -0,0 +1,476 @@
+{-# 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.SSMIncidents.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.SSMIncidents.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _AccessDeniedException,
+    _ConflictException,
+    _InternalServerException,
+    _ResourceNotFoundException,
+    _ServiceQuotaExceededException,
+    _ThrottlingException,
+    _ValidationException,
+
+    -- * IncidentRecordStatus
+    IncidentRecordStatus (..),
+
+    -- * ItemType
+    ItemType (..),
+
+    -- * RegionStatus
+    RegionStatus (..),
+
+    -- * ReplicationSetStatus
+    ReplicationSetStatus (..),
+
+    -- * SortOrder
+    SortOrder (..),
+
+    -- * SsmTargetAccount
+    SsmTargetAccount (..),
+
+    -- * TimelineEventSort
+    TimelineEventSort (..),
+
+    -- * VariableType
+    VariableType (..),
+
+    -- * Action
+    Action (..),
+    newAction,
+    action_ssmAutomation,
+
+    -- * AddRegionAction
+    AddRegionAction (..),
+    newAddRegionAction,
+    addRegionAction_sseKmsKeyId,
+    addRegionAction_regionName,
+
+    -- * AttributeValueList
+    AttributeValueList (..),
+    newAttributeValueList,
+    attributeValueList_integerValues,
+    attributeValueList_stringValues,
+
+    -- * AutomationExecution
+    AutomationExecution (..),
+    newAutomationExecution,
+    automationExecution_ssmExecutionArn,
+
+    -- * ChatChannel
+    ChatChannel (..),
+    newChatChannel,
+    chatChannel_chatbotSns,
+    chatChannel_empty,
+
+    -- * Condition
+    Condition (..),
+    newCondition,
+    condition_after,
+    condition_before,
+    condition_equals,
+
+    -- * DeleteRegionAction
+    DeleteRegionAction (..),
+    newDeleteRegionAction,
+    deleteRegionAction_regionName,
+
+    -- * DynamicSsmParameterValue
+    DynamicSsmParameterValue (..),
+    newDynamicSsmParameterValue,
+    dynamicSsmParameterValue_variable,
+
+    -- * EmptyChatChannel
+    EmptyChatChannel (..),
+    newEmptyChatChannel,
+
+    -- * EventReference
+    EventReference (..),
+    newEventReference,
+    eventReference_relatedItemId,
+    eventReference_resource,
+
+    -- * EventSummary
+    EventSummary (..),
+    newEventSummary,
+    eventSummary_eventReferences,
+    eventSummary_eventId,
+    eventSummary_eventTime,
+    eventSummary_eventType,
+    eventSummary_eventUpdatedTime,
+    eventSummary_incidentRecordArn,
+
+    -- * Filter
+    Filter (..),
+    newFilter,
+    filter_condition,
+    filter_key,
+
+    -- * IncidentRecord
+    IncidentRecord (..),
+    newIncidentRecord,
+    incidentRecord_automationExecutions,
+    incidentRecord_chatChannel,
+    incidentRecord_notificationTargets,
+    incidentRecord_resolvedTime,
+    incidentRecord_summary,
+    incidentRecord_arn,
+    incidentRecord_creationTime,
+    incidentRecord_dedupeString,
+    incidentRecord_impact,
+    incidentRecord_incidentRecordSource,
+    incidentRecord_lastModifiedBy,
+    incidentRecord_lastModifiedTime,
+    incidentRecord_status,
+    incidentRecord_title,
+
+    -- * IncidentRecordSource
+    IncidentRecordSource (..),
+    newIncidentRecordSource,
+    incidentRecordSource_invokedBy,
+    incidentRecordSource_resourceArn,
+    incidentRecordSource_createdBy,
+    incidentRecordSource_source,
+
+    -- * IncidentRecordSummary
+    IncidentRecordSummary (..),
+    newIncidentRecordSummary,
+    incidentRecordSummary_resolvedTime,
+    incidentRecordSummary_arn,
+    incidentRecordSummary_creationTime,
+    incidentRecordSummary_impact,
+    incidentRecordSummary_incidentRecordSource,
+    incidentRecordSummary_status,
+    incidentRecordSummary_title,
+
+    -- * IncidentTemplate
+    IncidentTemplate (..),
+    newIncidentTemplate,
+    incidentTemplate_dedupeString,
+    incidentTemplate_incidentTags,
+    incidentTemplate_notificationTargets,
+    incidentTemplate_summary,
+    incidentTemplate_impact,
+    incidentTemplate_title,
+
+    -- * Integration
+    Integration (..),
+    newIntegration,
+    integration_pagerDutyConfiguration,
+
+    -- * ItemIdentifier
+    ItemIdentifier (..),
+    newItemIdentifier,
+    itemIdentifier_type,
+    itemIdentifier_value,
+
+    -- * ItemValue
+    ItemValue (..),
+    newItemValue,
+    itemValue_arn,
+    itemValue_metricDefinition,
+    itemValue_pagerDutyIncidentDetail,
+    itemValue_url,
+
+    -- * NotificationTargetItem
+    NotificationTargetItem (..),
+    newNotificationTargetItem,
+    notificationTargetItem_snsTopicArn,
+
+    -- * PagerDutyConfiguration
+    PagerDutyConfiguration (..),
+    newPagerDutyConfiguration,
+    pagerDutyConfiguration_name,
+    pagerDutyConfiguration_pagerDutyIncidentConfiguration,
+    pagerDutyConfiguration_secretId,
+
+    -- * PagerDutyIncidentConfiguration
+    PagerDutyIncidentConfiguration (..),
+    newPagerDutyIncidentConfiguration,
+    pagerDutyIncidentConfiguration_serviceId,
+
+    -- * PagerDutyIncidentDetail
+    PagerDutyIncidentDetail (..),
+    newPagerDutyIncidentDetail,
+    pagerDutyIncidentDetail_autoResolve,
+    pagerDutyIncidentDetail_secretId,
+    pagerDutyIncidentDetail_id,
+
+    -- * RegionInfo
+    RegionInfo (..),
+    newRegionInfo,
+    regionInfo_sseKmsKeyId,
+    regionInfo_statusMessage,
+    regionInfo_status,
+    regionInfo_statusUpdateDateTime,
+
+    -- * RegionMapInputValue
+    RegionMapInputValue (..),
+    newRegionMapInputValue,
+    regionMapInputValue_sseKmsKeyId,
+
+    -- * RelatedItem
+    RelatedItem (..),
+    newRelatedItem,
+    relatedItem_generatedId,
+    relatedItem_title,
+    relatedItem_identifier,
+
+    -- * RelatedItemsUpdate
+    RelatedItemsUpdate (..),
+    newRelatedItemsUpdate,
+    relatedItemsUpdate_itemToAdd,
+    relatedItemsUpdate_itemToRemove,
+
+    -- * ReplicationSet
+    ReplicationSet (..),
+    newReplicationSet,
+    replicationSet_arn,
+    replicationSet_createdBy,
+    replicationSet_createdTime,
+    replicationSet_deletionProtected,
+    replicationSet_lastModifiedBy,
+    replicationSet_lastModifiedTime,
+    replicationSet_regionMap,
+    replicationSet_status,
+
+    -- * ResourcePolicy
+    ResourcePolicy (..),
+    newResourcePolicy,
+    resourcePolicy_policyDocument,
+    resourcePolicy_policyId,
+    resourcePolicy_ramResourceShareRegion,
+
+    -- * ResponsePlanSummary
+    ResponsePlanSummary (..),
+    newResponsePlanSummary,
+    responsePlanSummary_displayName,
+    responsePlanSummary_arn,
+    responsePlanSummary_name,
+
+    -- * SsmAutomation
+    SsmAutomation (..),
+    newSsmAutomation,
+    ssmAutomation_documentVersion,
+    ssmAutomation_dynamicParameters,
+    ssmAutomation_parameters,
+    ssmAutomation_targetAccount,
+    ssmAutomation_documentName,
+    ssmAutomation_roleArn,
+
+    -- * TimelineEvent
+    TimelineEvent (..),
+    newTimelineEvent,
+    timelineEvent_eventReferences,
+    timelineEvent_eventData,
+    timelineEvent_eventId,
+    timelineEvent_eventTime,
+    timelineEvent_eventType,
+    timelineEvent_eventUpdatedTime,
+    timelineEvent_incidentRecordArn,
+
+    -- * TriggerDetails
+    TriggerDetails (..),
+    newTriggerDetails,
+    triggerDetails_rawData,
+    triggerDetails_triggerArn,
+    triggerDetails_source,
+    triggerDetails_timestamp,
+
+    -- * UpdateReplicationSetAction
+    UpdateReplicationSetAction (..),
+    newUpdateReplicationSetAction,
+    updateReplicationSetAction_addRegionAction,
+    updateReplicationSetAction_deleteRegionAction,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SSMIncidents.Types.Action
+import Amazonka.SSMIncidents.Types.AddRegionAction
+import Amazonka.SSMIncidents.Types.AttributeValueList
+import Amazonka.SSMIncidents.Types.AutomationExecution
+import Amazonka.SSMIncidents.Types.ChatChannel
+import Amazonka.SSMIncidents.Types.Condition
+import Amazonka.SSMIncidents.Types.DeleteRegionAction
+import Amazonka.SSMIncidents.Types.DynamicSsmParameterValue
+import Amazonka.SSMIncidents.Types.EmptyChatChannel
+import Amazonka.SSMIncidents.Types.EventReference
+import Amazonka.SSMIncidents.Types.EventSummary
+import Amazonka.SSMIncidents.Types.Filter
+import Amazonka.SSMIncidents.Types.IncidentRecord
+import Amazonka.SSMIncidents.Types.IncidentRecordSource
+import Amazonka.SSMIncidents.Types.IncidentRecordStatus
+import Amazonka.SSMIncidents.Types.IncidentRecordSummary
+import Amazonka.SSMIncidents.Types.IncidentTemplate
+import Amazonka.SSMIncidents.Types.Integration
+import Amazonka.SSMIncidents.Types.ItemIdentifier
+import Amazonka.SSMIncidents.Types.ItemType
+import Amazonka.SSMIncidents.Types.ItemValue
+import Amazonka.SSMIncidents.Types.NotificationTargetItem
+import Amazonka.SSMIncidents.Types.PagerDutyConfiguration
+import Amazonka.SSMIncidents.Types.PagerDutyIncidentConfiguration
+import Amazonka.SSMIncidents.Types.PagerDutyIncidentDetail
+import Amazonka.SSMIncidents.Types.RegionInfo
+import Amazonka.SSMIncidents.Types.RegionMapInputValue
+import Amazonka.SSMIncidents.Types.RegionStatus
+import Amazonka.SSMIncidents.Types.RelatedItem
+import Amazonka.SSMIncidents.Types.RelatedItemsUpdate
+import Amazonka.SSMIncidents.Types.ReplicationSet
+import Amazonka.SSMIncidents.Types.ReplicationSetStatus
+import Amazonka.SSMIncidents.Types.ResourcePolicy
+import Amazonka.SSMIncidents.Types.ResponsePlanSummary
+import Amazonka.SSMIncidents.Types.SortOrder
+import Amazonka.SSMIncidents.Types.SsmAutomation
+import Amazonka.SSMIncidents.Types.SsmTargetAccount
+import Amazonka.SSMIncidents.Types.TimelineEvent
+import Amazonka.SSMIncidents.Types.TimelineEventSort
+import Amazonka.SSMIncidents.Types.TriggerDetails
+import Amazonka.SSMIncidents.Types.UpdateReplicationSetAction
+import Amazonka.SSMIncidents.Types.VariableType
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2018-05-10@ of the Amazon Systems Manager Incident Manager SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "SSMIncidents",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "ssm-incidents",
+      Core.signingName = "ssm-incidents",
+      Core.version = "2018-05-10",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error = Core.parseJSONError "SSMIncidents",
+      Core.retry = retry
+    }
+  where
+    retry =
+      Core.Exponential
+        { Core.base = 5.0e-2,
+          Core.growth = 2,
+          Core.attempts = 5,
+          Core.check = check
+        }
+    check e
+      | Lens.has (Core.hasStatus 502) e =
+          Prelude.Just "bad_gateway"
+      | Lens.has (Core.hasStatus 504) e =
+          Prelude.Just "gateway_timeout"
+      | Lens.has (Core.hasStatus 500) e =
+          Prelude.Just "general_server_error"
+      | Lens.has (Core.hasStatus 509) e =
+          Prelude.Just "limit_exceeded"
+      | Lens.has
+          ( Core.hasCode "RequestThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "request_throttled_exception"
+      | Lens.has (Core.hasStatus 503) e =
+          Prelude.Just "service_unavailable"
+      | Lens.has
+          ( Core.hasCode "ThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttled_exception"
+      | Lens.has
+          ( Core.hasCode "Throttling"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling"
+      | Lens.has
+          ( Core.hasCode "ThrottlingException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling_exception"
+      | Lens.has
+          ( Core.hasCode
+              "ProvisionedThroughputExceededException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throughput_exceeded"
+      | Lens.has (Core.hasStatus 429) e =
+          Prelude.Just "too_many_requests"
+      | Prelude.otherwise = Prelude.Nothing
+
+-- | You don\'t have sufficient access to perform this operation.
+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_AccessDeniedException =
+  Core._MatchServiceError
+    defaultService
+    "AccessDeniedException"
+    Prelude.. Core.hasStatus 403
+
+-- | Updating or deleting a resource causes an inconsistent state.
+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConflictException =
+  Core._MatchServiceError
+    defaultService
+    "ConflictException"
+    Prelude.. Core.hasStatus 409
+
+-- | The request processing has failed because of an unknown error, exception
+-- or failure.
+_InternalServerException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InternalServerException =
+  Core._MatchServiceError
+    defaultService
+    "InternalServerException"
+    Prelude.. Core.hasStatus 500
+
+-- | Request references a resource which doesn\'t exist.
+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceNotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceNotFoundException"
+    Prelude.. Core.hasStatus 404
+
+-- | Request would cause a service quota to be exceeded.
+_ServiceQuotaExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ServiceQuotaExceededException =
+  Core._MatchServiceError
+    defaultService
+    "ServiceQuotaExceededException"
+    Prelude.. Core.hasStatus 402
+
+-- | The request was denied due to request throttling.
+_ThrottlingException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ThrottlingException =
+  Core._MatchServiceError
+    defaultService
+    "ThrottlingException"
+    Prelude.. Core.hasStatus 429
+
+-- | The input fails to satisfy the constraints specified by an Amazon Web
+-- Services service.
+_ValidationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ValidationException =
+  Core._MatchServiceError
+    defaultService
+    "ValidationException"
+    Prelude.. Core.hasStatus 400
diff --git a/gen/Amazonka/SSMIncidents/Types/Action.hs b/gen/Amazonka/SSMIncidents/Types/Action.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/Action.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.SSMIncidents.Types.Action
+-- 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.SSMIncidents.Types.Action 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
+import Amazonka.SSMIncidents.Types.SsmAutomation
+
+-- | The action that starts at the beginning of an incident. The response
+-- plan defines the action.
+--
+-- /See:/ 'newAction' smart constructor.
+data Action = Action'
+  { -- | The Systems Manager automation document to start as the runbook at the
+    -- beginning of the incident.
+    ssmAutomation :: Prelude.Maybe SsmAutomation
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Action' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'ssmAutomation', 'action_ssmAutomation' - The Systems Manager automation document to start as the runbook at the
+-- beginning of the incident.
+newAction ::
+  Action
+newAction = Action' {ssmAutomation = Prelude.Nothing}
+
+-- | The Systems Manager automation document to start as the runbook at the
+-- beginning of the incident.
+action_ssmAutomation :: Lens.Lens' Action (Prelude.Maybe SsmAutomation)
+action_ssmAutomation = Lens.lens (\Action' {ssmAutomation} -> ssmAutomation) (\s@Action' {} a -> s {ssmAutomation = a} :: Action)
+
+instance Data.FromJSON Action where
+  parseJSON =
+    Data.withObject
+      "Action"
+      ( \x ->
+          Action' Prelude.<$> (x Data..:? "ssmAutomation")
+      )
+
+instance Prelude.Hashable Action where
+  hashWithSalt _salt Action' {..} =
+    _salt `Prelude.hashWithSalt` ssmAutomation
+
+instance Prelude.NFData Action where
+  rnf Action' {..} = Prelude.rnf ssmAutomation
+
+instance Data.ToJSON Action where
+  toJSON Action' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ssmAutomation" Data..=)
+              Prelude.<$> ssmAutomation
+          ]
+      )
diff --git a/gen/Amazonka/SSMIncidents/Types/AddRegionAction.hs b/gen/Amazonka/SSMIncidents/Types/AddRegionAction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/AddRegionAction.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.Types.AddRegionAction
+-- 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.SSMIncidents.Types.AddRegionAction 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
+
+-- | Defines the Amazon Web Services Region and KMS key to add to the
+-- replication set.
+--
+-- /See:/ 'newAddRegionAction' smart constructor.
+data AddRegionAction = AddRegionAction'
+  { -- | The KMS key ID to use to encrypt your replication set.
+    sseKmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services Region name to add to the replication set.
+    regionName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AddRegionAction' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sseKmsKeyId', 'addRegionAction_sseKmsKeyId' - The KMS key ID to use to encrypt your replication set.
+--
+-- 'regionName', 'addRegionAction_regionName' - The Amazon Web Services Region name to add to the replication set.
+newAddRegionAction ::
+  -- | 'regionName'
+  Prelude.Text ->
+  AddRegionAction
+newAddRegionAction pRegionName_ =
+  AddRegionAction'
+    { sseKmsKeyId = Prelude.Nothing,
+      regionName = pRegionName_
+    }
+
+-- | The KMS key ID to use to encrypt your replication set.
+addRegionAction_sseKmsKeyId :: Lens.Lens' AddRegionAction (Prelude.Maybe Prelude.Text)
+addRegionAction_sseKmsKeyId = Lens.lens (\AddRegionAction' {sseKmsKeyId} -> sseKmsKeyId) (\s@AddRegionAction' {} a -> s {sseKmsKeyId = a} :: AddRegionAction)
+
+-- | The Amazon Web Services Region name to add to the replication set.
+addRegionAction_regionName :: Lens.Lens' AddRegionAction Prelude.Text
+addRegionAction_regionName = Lens.lens (\AddRegionAction' {regionName} -> regionName) (\s@AddRegionAction' {} a -> s {regionName = a} :: AddRegionAction)
+
+instance Prelude.Hashable AddRegionAction where
+  hashWithSalt _salt AddRegionAction' {..} =
+    _salt
+      `Prelude.hashWithSalt` sseKmsKeyId
+      `Prelude.hashWithSalt` regionName
+
+instance Prelude.NFData AddRegionAction where
+  rnf AddRegionAction' {..} =
+    Prelude.rnf sseKmsKeyId
+      `Prelude.seq` Prelude.rnf regionName
+
+instance Data.ToJSON AddRegionAction where
+  toJSON AddRegionAction' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("sseKmsKeyId" Data..=) Prelude.<$> sseKmsKeyId,
+            Prelude.Just ("regionName" Data..= regionName)
+          ]
+      )
diff --git a/gen/Amazonka/SSMIncidents/Types/AttributeValueList.hs b/gen/Amazonka/SSMIncidents/Types/AttributeValueList.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/AttributeValueList.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.SSMIncidents.Types.AttributeValueList
+-- 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.SSMIncidents.Types.AttributeValueList 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
+
+-- | Use the AttributeValueList to filter by string or integer values.
+--
+-- /See:/ 'newAttributeValueList' smart constructor.
+data AttributeValueList = AttributeValueList'
+  { -- | The list of integer values that the filter matches.
+    integerValues :: Prelude.Maybe [Prelude.Int],
+    -- | The list of string values that the filter matches.
+    stringValues :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AttributeValueList' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'integerValues', 'attributeValueList_integerValues' - The list of integer values that the filter matches.
+--
+-- 'stringValues', 'attributeValueList_stringValues' - The list of string values that the filter matches.
+newAttributeValueList ::
+  AttributeValueList
+newAttributeValueList =
+  AttributeValueList'
+    { integerValues =
+        Prelude.Nothing,
+      stringValues = Prelude.Nothing
+    }
+
+-- | The list of integer values that the filter matches.
+attributeValueList_integerValues :: Lens.Lens' AttributeValueList (Prelude.Maybe [Prelude.Int])
+attributeValueList_integerValues = Lens.lens (\AttributeValueList' {integerValues} -> integerValues) (\s@AttributeValueList' {} a -> s {integerValues = a} :: AttributeValueList) Prelude.. Lens.mapping Lens.coerced
+
+-- | The list of string values that the filter matches.
+attributeValueList_stringValues :: Lens.Lens' AttributeValueList (Prelude.Maybe [Prelude.Text])
+attributeValueList_stringValues = Lens.lens (\AttributeValueList' {stringValues} -> stringValues) (\s@AttributeValueList' {} a -> s {stringValues = a} :: AttributeValueList) Prelude.. Lens.mapping Lens.coerced
+
+instance Prelude.Hashable AttributeValueList where
+  hashWithSalt _salt AttributeValueList' {..} =
+    _salt
+      `Prelude.hashWithSalt` integerValues
+      `Prelude.hashWithSalt` stringValues
+
+instance Prelude.NFData AttributeValueList where
+  rnf AttributeValueList' {..} =
+    Prelude.rnf integerValues
+      `Prelude.seq` Prelude.rnf stringValues
+
+instance Data.ToJSON AttributeValueList where
+  toJSON AttributeValueList' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("integerValues" Data..=) Prelude.<$> integerValues,
+            ("stringValues" Data..=) Prelude.<$> stringValues
+          ]
+      )
diff --git a/gen/Amazonka/SSMIncidents/Types/AutomationExecution.hs b/gen/Amazonka/SSMIncidents/Types/AutomationExecution.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/AutomationExecution.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.Types.AutomationExecution
+-- 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.SSMIncidents.Types.AutomationExecution where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The Systems Manager automation document process to start as the runbook
+-- at the beginning of the incident.
+--
+-- /See:/ 'newAutomationExecution' smart constructor.
+data AutomationExecution = AutomationExecution'
+  { -- | The Amazon Resource Name (ARN) of the automation process.
+    ssmExecutionArn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AutomationExecution' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'ssmExecutionArn', 'automationExecution_ssmExecutionArn' - The Amazon Resource Name (ARN) of the automation process.
+newAutomationExecution ::
+  AutomationExecution
+newAutomationExecution =
+  AutomationExecution'
+    { ssmExecutionArn =
+        Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the automation process.
+automationExecution_ssmExecutionArn :: Lens.Lens' AutomationExecution (Prelude.Maybe Prelude.Text)
+automationExecution_ssmExecutionArn = Lens.lens (\AutomationExecution' {ssmExecutionArn} -> ssmExecutionArn) (\s@AutomationExecution' {} a -> s {ssmExecutionArn = a} :: AutomationExecution)
+
+instance Data.FromJSON AutomationExecution where
+  parseJSON =
+    Data.withObject
+      "AutomationExecution"
+      ( \x ->
+          AutomationExecution'
+            Prelude.<$> (x Data..:? "ssmExecutionArn")
+      )
+
+instance Prelude.Hashable AutomationExecution where
+  hashWithSalt _salt AutomationExecution' {..} =
+    _salt `Prelude.hashWithSalt` ssmExecutionArn
+
+instance Prelude.NFData AutomationExecution where
+  rnf AutomationExecution' {..} =
+    Prelude.rnf ssmExecutionArn
diff --git a/gen/Amazonka/SSMIncidents/Types/ChatChannel.hs b/gen/Amazonka/SSMIncidents/Types/ChatChannel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/ChatChannel.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.SSMIncidents.Types.ChatChannel
+-- 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.SSMIncidents.Types.ChatChannel 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
+import Amazonka.SSMIncidents.Types.EmptyChatChannel
+
+-- | The Chatbot chat channel used for collaboration during an incident.
+--
+-- /See:/ 'newChatChannel' smart constructor.
+data ChatChannel = ChatChannel'
+  { -- | The Amazon SNS targets that Chatbot uses to notify the chat channel of
+    -- updates to an incident. You can also make updates to the incident
+    -- through the chat channel by using the Amazon SNS topics.
+    chatbotSns :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | Used to remove the chat channel from an incident record or response
+    -- plan.
+    empty :: Prelude.Maybe EmptyChatChannel
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ChatChannel' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chatbotSns', 'chatChannel_chatbotSns' - The Amazon SNS targets that Chatbot uses to notify the chat channel of
+-- updates to an incident. You can also make updates to the incident
+-- through the chat channel by using the Amazon SNS topics.
+--
+-- 'empty', 'chatChannel_empty' - Used to remove the chat channel from an incident record or response
+-- plan.
+newChatChannel ::
+  ChatChannel
+newChatChannel =
+  ChatChannel'
+    { chatbotSns = Prelude.Nothing,
+      empty = Prelude.Nothing
+    }
+
+-- | The Amazon SNS targets that Chatbot uses to notify the chat channel of
+-- updates to an incident. You can also make updates to the incident
+-- through the chat channel by using the Amazon SNS topics.
+chatChannel_chatbotSns :: Lens.Lens' ChatChannel (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+chatChannel_chatbotSns = Lens.lens (\ChatChannel' {chatbotSns} -> chatbotSns) (\s@ChatChannel' {} a -> s {chatbotSns = a} :: ChatChannel) Prelude.. Lens.mapping Lens.coerced
+
+-- | Used to remove the chat channel from an incident record or response
+-- plan.
+chatChannel_empty :: Lens.Lens' ChatChannel (Prelude.Maybe EmptyChatChannel)
+chatChannel_empty = Lens.lens (\ChatChannel' {empty} -> empty) (\s@ChatChannel' {} a -> s {empty = a} :: ChatChannel)
+
+instance Data.FromJSON ChatChannel where
+  parseJSON =
+    Data.withObject
+      "ChatChannel"
+      ( \x ->
+          ChatChannel'
+            Prelude.<$> (x Data..:? "chatbotSns")
+            Prelude.<*> (x Data..:? "empty")
+      )
+
+instance Prelude.Hashable ChatChannel where
+  hashWithSalt _salt ChatChannel' {..} =
+    _salt
+      `Prelude.hashWithSalt` chatbotSns
+      `Prelude.hashWithSalt` empty
+
+instance Prelude.NFData ChatChannel where
+  rnf ChatChannel' {..} =
+    Prelude.rnf chatbotSns
+      `Prelude.seq` Prelude.rnf empty
+
+instance Data.ToJSON ChatChannel where
+  toJSON ChatChannel' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("chatbotSns" Data..=) Prelude.<$> chatbotSns,
+            ("empty" Data..=) Prelude.<$> empty
+          ]
+      )
diff --git a/gen/Amazonka/SSMIncidents/Types/Condition.hs b/gen/Amazonka/SSMIncidents/Types/Condition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/Condition.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.Types.Condition
+-- 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.SSMIncidents.Types.Condition 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
+import Amazonka.SSMIncidents.Types.AttributeValueList
+
+-- | A conditional statement with which to compare a value, after a
+-- timestamp, before a timestamp, or equal to a string or integer. If
+-- multiple conditions are specified, the conditionals become an @AND@ed
+-- statement. If multiple values are specified for a conditional, the
+-- values are @OR@d.
+--
+-- /See:/ 'newCondition' smart constructor.
+data Condition = Condition'
+  { -- | After the specified timestamp.
+    after :: Prelude.Maybe Data.POSIX,
+    -- | Before the specified timestamp
+    before :: Prelude.Maybe Data.POSIX,
+    -- | The value is equal to the provided string or integer.
+    equals :: Prelude.Maybe AttributeValueList
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Condition' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'after', 'condition_after' - After the specified timestamp.
+--
+-- 'before', 'condition_before' - Before the specified timestamp
+--
+-- 'equals', 'condition_equals' - The value is equal to the provided string or integer.
+newCondition ::
+  Condition
+newCondition =
+  Condition'
+    { after = Prelude.Nothing,
+      before = Prelude.Nothing,
+      equals = Prelude.Nothing
+    }
+
+-- | After the specified timestamp.
+condition_after :: Lens.Lens' Condition (Prelude.Maybe Prelude.UTCTime)
+condition_after = Lens.lens (\Condition' {after} -> after) (\s@Condition' {} a -> s {after = a} :: Condition) Prelude.. Lens.mapping Data._Time
+
+-- | Before the specified timestamp
+condition_before :: Lens.Lens' Condition (Prelude.Maybe Prelude.UTCTime)
+condition_before = Lens.lens (\Condition' {before} -> before) (\s@Condition' {} a -> s {before = a} :: Condition) Prelude.. Lens.mapping Data._Time
+
+-- | The value is equal to the provided string or integer.
+condition_equals :: Lens.Lens' Condition (Prelude.Maybe AttributeValueList)
+condition_equals = Lens.lens (\Condition' {equals} -> equals) (\s@Condition' {} a -> s {equals = a} :: Condition)
+
+instance Prelude.Hashable Condition where
+  hashWithSalt _salt Condition' {..} =
+    _salt
+      `Prelude.hashWithSalt` after
+      `Prelude.hashWithSalt` before
+      `Prelude.hashWithSalt` equals
+
+instance Prelude.NFData Condition where
+  rnf Condition' {..} =
+    Prelude.rnf after
+      `Prelude.seq` Prelude.rnf before
+      `Prelude.seq` Prelude.rnf equals
+
+instance Data.ToJSON Condition where
+  toJSON Condition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("after" Data..=) Prelude.<$> after,
+            ("before" Data..=) Prelude.<$> before,
+            ("equals" Data..=) Prelude.<$> equals
+          ]
+      )
diff --git a/gen/Amazonka/SSMIncidents/Types/DeleteRegionAction.hs b/gen/Amazonka/SSMIncidents/Types/DeleteRegionAction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/DeleteRegionAction.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.Types.DeleteRegionAction
+-- 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.SSMIncidents.Types.DeleteRegionAction 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
+
+-- | Defines the information about the Amazon Web Services Region you\'re
+-- deleting from your replication set.
+--
+-- /See:/ 'newDeleteRegionAction' smart constructor.
+data DeleteRegionAction = DeleteRegionAction'
+  { -- | The name of the Amazon Web Services Region you\'re deleting from the
+    -- replication set.
+    regionName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteRegionAction' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'regionName', 'deleteRegionAction_regionName' - The name of the Amazon Web Services Region you\'re deleting from the
+-- replication set.
+newDeleteRegionAction ::
+  -- | 'regionName'
+  Prelude.Text ->
+  DeleteRegionAction
+newDeleteRegionAction pRegionName_ =
+  DeleteRegionAction' {regionName = pRegionName_}
+
+-- | The name of the Amazon Web Services Region you\'re deleting from the
+-- replication set.
+deleteRegionAction_regionName :: Lens.Lens' DeleteRegionAction Prelude.Text
+deleteRegionAction_regionName = Lens.lens (\DeleteRegionAction' {regionName} -> regionName) (\s@DeleteRegionAction' {} a -> s {regionName = a} :: DeleteRegionAction)
+
+instance Prelude.Hashable DeleteRegionAction where
+  hashWithSalt _salt DeleteRegionAction' {..} =
+    _salt `Prelude.hashWithSalt` regionName
+
+instance Prelude.NFData DeleteRegionAction where
+  rnf DeleteRegionAction' {..} = Prelude.rnf regionName
+
+instance Data.ToJSON DeleteRegionAction where
+  toJSON DeleteRegionAction' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("regionName" Data..= regionName)]
+      )
diff --git a/gen/Amazonka/SSMIncidents/Types/DynamicSsmParameterValue.hs b/gen/Amazonka/SSMIncidents/Types/DynamicSsmParameterValue.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/DynamicSsmParameterValue.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.Types.DynamicSsmParameterValue
+-- 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.SSMIncidents.Types.DynamicSsmParameterValue 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
+import Amazonka.SSMIncidents.Types.VariableType
+
+-- | The dynamic SSM parameter value.
+--
+-- /See:/ 'newDynamicSsmParameterValue' smart constructor.
+data DynamicSsmParameterValue = DynamicSsmParameterValue'
+  { -- | Variable dynamic parameters. A parameter value is determined when an
+    -- incident is created.
+    variable :: Prelude.Maybe VariableType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DynamicSsmParameterValue' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'variable', 'dynamicSsmParameterValue_variable' - Variable dynamic parameters. A parameter value is determined when an
+-- incident is created.
+newDynamicSsmParameterValue ::
+  DynamicSsmParameterValue
+newDynamicSsmParameterValue =
+  DynamicSsmParameterValue'
+    { variable =
+        Prelude.Nothing
+    }
+
+-- | Variable dynamic parameters. A parameter value is determined when an
+-- incident is created.
+dynamicSsmParameterValue_variable :: Lens.Lens' DynamicSsmParameterValue (Prelude.Maybe VariableType)
+dynamicSsmParameterValue_variable = Lens.lens (\DynamicSsmParameterValue' {variable} -> variable) (\s@DynamicSsmParameterValue' {} a -> s {variable = a} :: DynamicSsmParameterValue)
+
+instance Data.FromJSON DynamicSsmParameterValue where
+  parseJSON =
+    Data.withObject
+      "DynamicSsmParameterValue"
+      ( \x ->
+          DynamicSsmParameterValue'
+            Prelude.<$> (x Data..:? "variable")
+      )
+
+instance Prelude.Hashable DynamicSsmParameterValue where
+  hashWithSalt _salt DynamicSsmParameterValue' {..} =
+    _salt `Prelude.hashWithSalt` variable
+
+instance Prelude.NFData DynamicSsmParameterValue where
+  rnf DynamicSsmParameterValue' {..} =
+    Prelude.rnf variable
+
+instance Data.ToJSON DynamicSsmParameterValue where
+  toJSON DynamicSsmParameterValue' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("variable" Data..=) Prelude.<$> variable]
+      )
diff --git a/gen/Amazonka/SSMIncidents/Types/EmptyChatChannel.hs b/gen/Amazonka/SSMIncidents/Types/EmptyChatChannel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/EmptyChatChannel.hs
@@ -0,0 +1,58 @@
+{-# 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.SSMIncidents.Types.EmptyChatChannel
+-- 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.SSMIncidents.Types.EmptyChatChannel 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
+
+-- | Used to remove the chat channel from an incident record or response
+-- plan.
+--
+-- /See:/ 'newEmptyChatChannel' smart constructor.
+data EmptyChatChannel = EmptyChatChannel'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EmptyChatChannel' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newEmptyChatChannel ::
+  EmptyChatChannel
+newEmptyChatChannel = EmptyChatChannel'
+
+instance Data.FromJSON EmptyChatChannel where
+  parseJSON =
+    Data.withObject
+      "EmptyChatChannel"
+      (\x -> Prelude.pure EmptyChatChannel')
+
+instance Prelude.Hashable EmptyChatChannel where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData EmptyChatChannel where
+  rnf _ = ()
+
+instance Data.ToJSON EmptyChatChannel where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
diff --git a/gen/Amazonka/SSMIncidents/Types/EventReference.hs b/gen/Amazonka/SSMIncidents/Types/EventReference.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/EventReference.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.Types.EventReference
+-- 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.SSMIncidents.Types.EventReference where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | An item referenced in a @TimelineEvent@ that is involved in or somehow
+-- associated with an incident. You can specify an Amazon Resource Name
+-- (ARN) for an Amazon Web Services resource or a @RelatedItem@ ID.
+--
+-- /See:/ 'newEventReference' smart constructor.
+data EventReference = EventReference'
+  { -- | The ID of a @RelatedItem@ referenced in a @TimelineEvent@.
+    relatedItemId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of an Amazon Web Services resource
+    -- referenced in a @TimelineEvent@.
+    resource :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EventReference' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'relatedItemId', 'eventReference_relatedItemId' - The ID of a @RelatedItem@ referenced in a @TimelineEvent@.
+--
+-- 'resource', 'eventReference_resource' - The Amazon Resource Name (ARN) of an Amazon Web Services resource
+-- referenced in a @TimelineEvent@.
+newEventReference ::
+  EventReference
+newEventReference =
+  EventReference'
+    { relatedItemId = Prelude.Nothing,
+      resource = Prelude.Nothing
+    }
+
+-- | The ID of a @RelatedItem@ referenced in a @TimelineEvent@.
+eventReference_relatedItemId :: Lens.Lens' EventReference (Prelude.Maybe Prelude.Text)
+eventReference_relatedItemId = Lens.lens (\EventReference' {relatedItemId} -> relatedItemId) (\s@EventReference' {} a -> s {relatedItemId = a} :: EventReference)
+
+-- | The Amazon Resource Name (ARN) of an Amazon Web Services resource
+-- referenced in a @TimelineEvent@.
+eventReference_resource :: Lens.Lens' EventReference (Prelude.Maybe Prelude.Text)
+eventReference_resource = Lens.lens (\EventReference' {resource} -> resource) (\s@EventReference' {} a -> s {resource = a} :: EventReference)
+
+instance Data.FromJSON EventReference where
+  parseJSON =
+    Data.withObject
+      "EventReference"
+      ( \x ->
+          EventReference'
+            Prelude.<$> (x Data..:? "relatedItemId")
+            Prelude.<*> (x Data..:? "resource")
+      )
+
+instance Prelude.Hashable EventReference where
+  hashWithSalt _salt EventReference' {..} =
+    _salt
+      `Prelude.hashWithSalt` relatedItemId
+      `Prelude.hashWithSalt` resource
+
+instance Prelude.NFData EventReference where
+  rnf EventReference' {..} =
+    Prelude.rnf relatedItemId
+      `Prelude.seq` Prelude.rnf resource
+
+instance Data.ToJSON EventReference where
+  toJSON EventReference' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("relatedItemId" Data..=) Prelude.<$> relatedItemId,
+            ("resource" Data..=) Prelude.<$> resource
+          ]
+      )
diff --git a/gen/Amazonka/SSMIncidents/Types/EventSummary.hs b/gen/Amazonka/SSMIncidents/Types/EventSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/EventSummary.hs
@@ -0,0 +1,155 @@
+{-# 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.SSMIncidents.Types.EventSummary
+-- 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.SSMIncidents.Types.EventSummary 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
+import Amazonka.SSMIncidents.Types.EventReference
+
+-- | Details about a timeline event during an incident.
+--
+-- /See:/ 'newEventSummary' smart constructor.
+data EventSummary = EventSummary'
+  { -- | A list of references in a @TimelineEvent@.
+    eventReferences :: Prelude.Maybe [EventReference],
+    -- | The timeline event ID.
+    eventId :: Prelude.Text,
+    -- | The time that the event occurred.
+    eventTime :: Data.POSIX,
+    -- | The type of event. The timeline event must be @Custom Event@.
+    eventType :: Prelude.Text,
+    -- | The time that the timeline event was last updated.
+    eventUpdatedTime :: Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the incident that the event happened
+    -- during.
+    incidentRecordArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EventSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'eventReferences', 'eventSummary_eventReferences' - A list of references in a @TimelineEvent@.
+--
+-- 'eventId', 'eventSummary_eventId' - The timeline event ID.
+--
+-- 'eventTime', 'eventSummary_eventTime' - The time that the event occurred.
+--
+-- 'eventType', 'eventSummary_eventType' - The type of event. The timeline event must be @Custom Event@.
+--
+-- 'eventUpdatedTime', 'eventSummary_eventUpdatedTime' - The time that the timeline event was last updated.
+--
+-- 'incidentRecordArn', 'eventSummary_incidentRecordArn' - The Amazon Resource Name (ARN) of the incident that the event happened
+-- during.
+newEventSummary ::
+  -- | 'eventId'
+  Prelude.Text ->
+  -- | 'eventTime'
+  Prelude.UTCTime ->
+  -- | 'eventType'
+  Prelude.Text ->
+  -- | 'eventUpdatedTime'
+  Prelude.UTCTime ->
+  -- | 'incidentRecordArn'
+  Prelude.Text ->
+  EventSummary
+newEventSummary
+  pEventId_
+  pEventTime_
+  pEventType_
+  pEventUpdatedTime_
+  pIncidentRecordArn_ =
+    EventSummary'
+      { eventReferences = Prelude.Nothing,
+        eventId = pEventId_,
+        eventTime = Data._Time Lens.# pEventTime_,
+        eventType = pEventType_,
+        eventUpdatedTime =
+          Data._Time Lens.# pEventUpdatedTime_,
+        incidentRecordArn = pIncidentRecordArn_
+      }
+
+-- | A list of references in a @TimelineEvent@.
+eventSummary_eventReferences :: Lens.Lens' EventSummary (Prelude.Maybe [EventReference])
+eventSummary_eventReferences = Lens.lens (\EventSummary' {eventReferences} -> eventReferences) (\s@EventSummary' {} a -> s {eventReferences = a} :: EventSummary) Prelude.. Lens.mapping Lens.coerced
+
+-- | The timeline event ID.
+eventSummary_eventId :: Lens.Lens' EventSummary Prelude.Text
+eventSummary_eventId = Lens.lens (\EventSummary' {eventId} -> eventId) (\s@EventSummary' {} a -> s {eventId = a} :: EventSummary)
+
+-- | The time that the event occurred.
+eventSummary_eventTime :: Lens.Lens' EventSummary Prelude.UTCTime
+eventSummary_eventTime = Lens.lens (\EventSummary' {eventTime} -> eventTime) (\s@EventSummary' {} a -> s {eventTime = a} :: EventSummary) Prelude.. Data._Time
+
+-- | The type of event. The timeline event must be @Custom Event@.
+eventSummary_eventType :: Lens.Lens' EventSummary Prelude.Text
+eventSummary_eventType = Lens.lens (\EventSummary' {eventType} -> eventType) (\s@EventSummary' {} a -> s {eventType = a} :: EventSummary)
+
+-- | The time that the timeline event was last updated.
+eventSummary_eventUpdatedTime :: Lens.Lens' EventSummary Prelude.UTCTime
+eventSummary_eventUpdatedTime = Lens.lens (\EventSummary' {eventUpdatedTime} -> eventUpdatedTime) (\s@EventSummary' {} a -> s {eventUpdatedTime = a} :: EventSummary) Prelude.. Data._Time
+
+-- | The Amazon Resource Name (ARN) of the incident that the event happened
+-- during.
+eventSummary_incidentRecordArn :: Lens.Lens' EventSummary Prelude.Text
+eventSummary_incidentRecordArn = Lens.lens (\EventSummary' {incidentRecordArn} -> incidentRecordArn) (\s@EventSummary' {} a -> s {incidentRecordArn = a} :: EventSummary)
+
+instance Data.FromJSON EventSummary where
+  parseJSON =
+    Data.withObject
+      "EventSummary"
+      ( \x ->
+          EventSummary'
+            Prelude.<$> ( x
+                            Data..:? "eventReferences"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..: "eventId")
+            Prelude.<*> (x Data..: "eventTime")
+            Prelude.<*> (x Data..: "eventType")
+            Prelude.<*> (x Data..: "eventUpdatedTime")
+            Prelude.<*> (x Data..: "incidentRecordArn")
+      )
+
+instance Prelude.Hashable EventSummary where
+  hashWithSalt _salt EventSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` eventReferences
+      `Prelude.hashWithSalt` eventId
+      `Prelude.hashWithSalt` eventTime
+      `Prelude.hashWithSalt` eventType
+      `Prelude.hashWithSalt` eventUpdatedTime
+      `Prelude.hashWithSalt` incidentRecordArn
+
+instance Prelude.NFData EventSummary where
+  rnf EventSummary' {..} =
+    Prelude.rnf eventReferences
+      `Prelude.seq` Prelude.rnf eventId
+      `Prelude.seq` Prelude.rnf eventTime
+      `Prelude.seq` Prelude.rnf eventType
+      `Prelude.seq` Prelude.rnf eventUpdatedTime
+      `Prelude.seq` Prelude.rnf incidentRecordArn
diff --git a/gen/Amazonka/SSMIncidents/Types/Filter.hs b/gen/Amazonka/SSMIncidents/Types/Filter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/Filter.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.Types.Filter
+-- 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.SSMIncidents.Types.Filter 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
+import Amazonka.SSMIncidents.Types.Condition
+
+-- | Filter the selection by using a condition.
+--
+-- /See:/ 'newFilter' smart constructor.
+data Filter = Filter'
+  { -- | The condition accepts before or after a specified time, equal to a
+    -- string, or equal to an integer.
+    condition :: Condition,
+    -- | The key that you\'re filtering on.
+    key :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Filter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'condition', 'filter_condition' - The condition accepts before or after a specified time, equal to a
+-- string, or equal to an integer.
+--
+-- 'key', 'filter_key' - The key that you\'re filtering on.
+newFilter ::
+  -- | 'condition'
+  Condition ->
+  -- | 'key'
+  Prelude.Text ->
+  Filter
+newFilter pCondition_ pKey_ =
+  Filter' {condition = pCondition_, key = pKey_}
+
+-- | The condition accepts before or after a specified time, equal to a
+-- string, or equal to an integer.
+filter_condition :: Lens.Lens' Filter Condition
+filter_condition = Lens.lens (\Filter' {condition} -> condition) (\s@Filter' {} a -> s {condition = a} :: Filter)
+
+-- | The key that you\'re filtering on.
+filter_key :: Lens.Lens' Filter Prelude.Text
+filter_key = Lens.lens (\Filter' {key} -> key) (\s@Filter' {} a -> s {key = a} :: Filter)
+
+instance Prelude.Hashable Filter where
+  hashWithSalt _salt Filter' {..} =
+    _salt
+      `Prelude.hashWithSalt` condition
+      `Prelude.hashWithSalt` key
+
+instance Prelude.NFData Filter where
+  rnf Filter' {..} =
+    Prelude.rnf condition `Prelude.seq` Prelude.rnf key
+
+instance Data.ToJSON Filter where
+  toJSON Filter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("condition" Data..= condition),
+            Prelude.Just ("key" Data..= key)
+          ]
+      )
diff --git a/gen/Amazonka/SSMIncidents/Types/IncidentRecord.hs b/gen/Amazonka/SSMIncidents/Types/IncidentRecord.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/IncidentRecord.hs
@@ -0,0 +1,283 @@
+{-# 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.SSMIncidents.Types.IncidentRecord
+-- 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.SSMIncidents.Types.IncidentRecord 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
+import Amazonka.SSMIncidents.Types.AutomationExecution
+import Amazonka.SSMIncidents.Types.ChatChannel
+import Amazonka.SSMIncidents.Types.IncidentRecordSource
+import Amazonka.SSMIncidents.Types.IncidentRecordStatus
+import Amazonka.SSMIncidents.Types.NotificationTargetItem
+
+-- | The record of the incident that\'s created when an incident occurs.
+--
+-- /See:/ 'newIncidentRecord' smart constructor.
+data IncidentRecord = IncidentRecord'
+  { -- | The runbook, or automation document, that\'s run at the beginning of the
+    -- incident.
+    automationExecutions :: Prelude.Maybe [AutomationExecution],
+    -- | The chat channel used for collaboration during an incident.
+    chatChannel :: Prelude.Maybe ChatChannel,
+    -- | The Amazon SNS targets that are notified when updates are made to an
+    -- incident.
+    notificationTargets :: Prelude.Maybe [NotificationTargetItem],
+    -- | The time at which the incident was resolved. This appears as a timeline
+    -- event.
+    resolvedTime :: Prelude.Maybe Data.POSIX,
+    -- | The summary of the incident. The summary is a brief synopsis of what
+    -- occurred, what\'s currently happening, and context of the incident.
+    summary :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the incident record.
+    arn :: Prelude.Text,
+    -- | The time that Incident Manager created the incident record.
+    creationTime :: Data.POSIX,
+    -- | The string Incident Manager uses to prevent duplicate incidents from
+    -- being created by the same incident in the same account.
+    dedupeString :: Prelude.Text,
+    -- | The impact of the incident on customers and applications.
+    impact :: Prelude.Natural,
+    -- | Details about the action that started the incident.
+    incidentRecordSource :: IncidentRecordSource,
+    -- | Who modified the incident most recently.
+    lastModifiedBy :: Prelude.Text,
+    -- | The time at which the incident was most recently modified.
+    lastModifiedTime :: Data.POSIX,
+    -- | The current status of the incident.
+    status :: IncidentRecordStatus,
+    -- | The title of the incident.
+    title :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'IncidentRecord' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'automationExecutions', 'incidentRecord_automationExecutions' - The runbook, or automation document, that\'s run at the beginning of the
+-- incident.
+--
+-- 'chatChannel', 'incidentRecord_chatChannel' - The chat channel used for collaboration during an incident.
+--
+-- 'notificationTargets', 'incidentRecord_notificationTargets' - The Amazon SNS targets that are notified when updates are made to an
+-- incident.
+--
+-- 'resolvedTime', 'incidentRecord_resolvedTime' - The time at which the incident was resolved. This appears as a timeline
+-- event.
+--
+-- 'summary', 'incidentRecord_summary' - The summary of the incident. The summary is a brief synopsis of what
+-- occurred, what\'s currently happening, and context of the incident.
+--
+-- 'arn', 'incidentRecord_arn' - The Amazon Resource Name (ARN) of the incident record.
+--
+-- 'creationTime', 'incidentRecord_creationTime' - The time that Incident Manager created the incident record.
+--
+-- 'dedupeString', 'incidentRecord_dedupeString' - The string Incident Manager uses to prevent duplicate incidents from
+-- being created by the same incident in the same account.
+--
+-- 'impact', 'incidentRecord_impact' - The impact of the incident on customers and applications.
+--
+-- 'incidentRecordSource', 'incidentRecord_incidentRecordSource' - Details about the action that started the incident.
+--
+-- 'lastModifiedBy', 'incidentRecord_lastModifiedBy' - Who modified the incident most recently.
+--
+-- 'lastModifiedTime', 'incidentRecord_lastModifiedTime' - The time at which the incident was most recently modified.
+--
+-- 'status', 'incidentRecord_status' - The current status of the incident.
+--
+-- 'title', 'incidentRecord_title' - The title of the incident.
+newIncidentRecord ::
+  -- | 'arn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'dedupeString'
+  Prelude.Text ->
+  -- | 'impact'
+  Prelude.Natural ->
+  -- | 'incidentRecordSource'
+  IncidentRecordSource ->
+  -- | 'lastModifiedBy'
+  Prelude.Text ->
+  -- | 'lastModifiedTime'
+  Prelude.UTCTime ->
+  -- | 'status'
+  IncidentRecordStatus ->
+  -- | 'title'
+  Prelude.Text ->
+  IncidentRecord
+newIncidentRecord
+  pArn_
+  pCreationTime_
+  pDedupeString_
+  pImpact_
+  pIncidentRecordSource_
+  pLastModifiedBy_
+  pLastModifiedTime_
+  pStatus_
+  pTitle_ =
+    IncidentRecord'
+      { automationExecutions =
+          Prelude.Nothing,
+        chatChannel = Prelude.Nothing,
+        notificationTargets = Prelude.Nothing,
+        resolvedTime = Prelude.Nothing,
+        summary = Prelude.Nothing,
+        arn = pArn_,
+        creationTime = Data._Time Lens.# pCreationTime_,
+        dedupeString = pDedupeString_,
+        impact = pImpact_,
+        incidentRecordSource = pIncidentRecordSource_,
+        lastModifiedBy = pLastModifiedBy_,
+        lastModifiedTime =
+          Data._Time Lens.# pLastModifiedTime_,
+        status = pStatus_,
+        title = pTitle_
+      }
+
+-- | The runbook, or automation document, that\'s run at the beginning of the
+-- incident.
+incidentRecord_automationExecutions :: Lens.Lens' IncidentRecord (Prelude.Maybe [AutomationExecution])
+incidentRecord_automationExecutions = Lens.lens (\IncidentRecord' {automationExecutions} -> automationExecutions) (\s@IncidentRecord' {} a -> s {automationExecutions = a} :: IncidentRecord) Prelude.. Lens.mapping Lens.coerced
+
+-- | The chat channel used for collaboration during an incident.
+incidentRecord_chatChannel :: Lens.Lens' IncidentRecord (Prelude.Maybe ChatChannel)
+incidentRecord_chatChannel = Lens.lens (\IncidentRecord' {chatChannel} -> chatChannel) (\s@IncidentRecord' {} a -> s {chatChannel = a} :: IncidentRecord)
+
+-- | The Amazon SNS targets that are notified when updates are made to an
+-- incident.
+incidentRecord_notificationTargets :: Lens.Lens' IncidentRecord (Prelude.Maybe [NotificationTargetItem])
+incidentRecord_notificationTargets = Lens.lens (\IncidentRecord' {notificationTargets} -> notificationTargets) (\s@IncidentRecord' {} a -> s {notificationTargets = a} :: IncidentRecord) Prelude.. Lens.mapping Lens.coerced
+
+-- | The time at which the incident was resolved. This appears as a timeline
+-- event.
+incidentRecord_resolvedTime :: Lens.Lens' IncidentRecord (Prelude.Maybe Prelude.UTCTime)
+incidentRecord_resolvedTime = Lens.lens (\IncidentRecord' {resolvedTime} -> resolvedTime) (\s@IncidentRecord' {} a -> s {resolvedTime = a} :: IncidentRecord) Prelude.. Lens.mapping Data._Time
+
+-- | The summary of the incident. The summary is a brief synopsis of what
+-- occurred, what\'s currently happening, and context of the incident.
+incidentRecord_summary :: Lens.Lens' IncidentRecord (Prelude.Maybe Prelude.Text)
+incidentRecord_summary = Lens.lens (\IncidentRecord' {summary} -> summary) (\s@IncidentRecord' {} a -> s {summary = a} :: IncidentRecord)
+
+-- | The Amazon Resource Name (ARN) of the incident record.
+incidentRecord_arn :: Lens.Lens' IncidentRecord Prelude.Text
+incidentRecord_arn = Lens.lens (\IncidentRecord' {arn} -> arn) (\s@IncidentRecord' {} a -> s {arn = a} :: IncidentRecord)
+
+-- | The time that Incident Manager created the incident record.
+incidentRecord_creationTime :: Lens.Lens' IncidentRecord Prelude.UTCTime
+incidentRecord_creationTime = Lens.lens (\IncidentRecord' {creationTime} -> creationTime) (\s@IncidentRecord' {} a -> s {creationTime = a} :: IncidentRecord) Prelude.. Data._Time
+
+-- | The string Incident Manager uses to prevent duplicate incidents from
+-- being created by the same incident in the same account.
+incidentRecord_dedupeString :: Lens.Lens' IncidentRecord Prelude.Text
+incidentRecord_dedupeString = Lens.lens (\IncidentRecord' {dedupeString} -> dedupeString) (\s@IncidentRecord' {} a -> s {dedupeString = a} :: IncidentRecord)
+
+-- | The impact of the incident on customers and applications.
+incidentRecord_impact :: Lens.Lens' IncidentRecord Prelude.Natural
+incidentRecord_impact = Lens.lens (\IncidentRecord' {impact} -> impact) (\s@IncidentRecord' {} a -> s {impact = a} :: IncidentRecord)
+
+-- | Details about the action that started the incident.
+incidentRecord_incidentRecordSource :: Lens.Lens' IncidentRecord IncidentRecordSource
+incidentRecord_incidentRecordSource = Lens.lens (\IncidentRecord' {incidentRecordSource} -> incidentRecordSource) (\s@IncidentRecord' {} a -> s {incidentRecordSource = a} :: IncidentRecord)
+
+-- | Who modified the incident most recently.
+incidentRecord_lastModifiedBy :: Lens.Lens' IncidentRecord Prelude.Text
+incidentRecord_lastModifiedBy = Lens.lens (\IncidentRecord' {lastModifiedBy} -> lastModifiedBy) (\s@IncidentRecord' {} a -> s {lastModifiedBy = a} :: IncidentRecord)
+
+-- | The time at which the incident was most recently modified.
+incidentRecord_lastModifiedTime :: Lens.Lens' IncidentRecord Prelude.UTCTime
+incidentRecord_lastModifiedTime = Lens.lens (\IncidentRecord' {lastModifiedTime} -> lastModifiedTime) (\s@IncidentRecord' {} a -> s {lastModifiedTime = a} :: IncidentRecord) Prelude.. Data._Time
+
+-- | The current status of the incident.
+incidentRecord_status :: Lens.Lens' IncidentRecord IncidentRecordStatus
+incidentRecord_status = Lens.lens (\IncidentRecord' {status} -> status) (\s@IncidentRecord' {} a -> s {status = a} :: IncidentRecord)
+
+-- | The title of the incident.
+incidentRecord_title :: Lens.Lens' IncidentRecord Prelude.Text
+incidentRecord_title = Lens.lens (\IncidentRecord' {title} -> title) (\s@IncidentRecord' {} a -> s {title = a} :: IncidentRecord)
+
+instance Data.FromJSON IncidentRecord where
+  parseJSON =
+    Data.withObject
+      "IncidentRecord"
+      ( \x ->
+          IncidentRecord'
+            Prelude.<$> ( x
+                            Data..:? "automationExecutions"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "chatChannel")
+            Prelude.<*> ( x
+                            Data..:? "notificationTargets"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "resolvedTime")
+            Prelude.<*> (x Data..:? "summary")
+            Prelude.<*> (x Data..: "arn")
+            Prelude.<*> (x Data..: "creationTime")
+            Prelude.<*> (x Data..: "dedupeString")
+            Prelude.<*> (x Data..: "impact")
+            Prelude.<*> (x Data..: "incidentRecordSource")
+            Prelude.<*> (x Data..: "lastModifiedBy")
+            Prelude.<*> (x Data..: "lastModifiedTime")
+            Prelude.<*> (x Data..: "status")
+            Prelude.<*> (x Data..: "title")
+      )
+
+instance Prelude.Hashable IncidentRecord where
+  hashWithSalt _salt IncidentRecord' {..} =
+    _salt
+      `Prelude.hashWithSalt` automationExecutions
+      `Prelude.hashWithSalt` chatChannel
+      `Prelude.hashWithSalt` notificationTargets
+      `Prelude.hashWithSalt` resolvedTime
+      `Prelude.hashWithSalt` summary
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` dedupeString
+      `Prelude.hashWithSalt` impact
+      `Prelude.hashWithSalt` incidentRecordSource
+      `Prelude.hashWithSalt` lastModifiedBy
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` title
+
+instance Prelude.NFData IncidentRecord where
+  rnf IncidentRecord' {..} =
+    Prelude.rnf automationExecutions
+      `Prelude.seq` Prelude.rnf chatChannel
+      `Prelude.seq` Prelude.rnf notificationTargets
+      `Prelude.seq` Prelude.rnf resolvedTime
+      `Prelude.seq` Prelude.rnf summary
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf dedupeString
+      `Prelude.seq` Prelude.rnf impact
+      `Prelude.seq` Prelude.rnf incidentRecordSource
+      `Prelude.seq` Prelude.rnf lastModifiedBy
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf title
diff --git a/gen/Amazonka/SSMIncidents/Types/IncidentRecordSource.hs b/gen/Amazonka/SSMIncidents/Types/IncidentRecordSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/IncidentRecordSource.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.Types.IncidentRecordSource
+-- 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.SSMIncidents.Types.IncidentRecordSource 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
+
+-- | Details about what created the incident record and when it was created.
+--
+-- /See:/ 'newIncidentRecordSource' smart constructor.
+data IncidentRecordSource = IncidentRecordSource'
+  { -- | The service principal that assumed the role specified in @createdBy@. If
+    -- no service principal assumed the role this will be left blank.
+    invokedBy :: Prelude.Maybe Prelude.Text,
+    -- | The resource that caused the incident to be created.
+    resourceArn :: Prelude.Maybe Prelude.Text,
+    -- | The principal that started the incident.
+    createdBy :: Prelude.Text,
+    -- | The service that started the incident. This can be manually created from
+    -- Incident Manager, automatically created using an Amazon CloudWatch
+    -- alarm, or Amazon EventBridge event.
+    source :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'IncidentRecordSource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'invokedBy', 'incidentRecordSource_invokedBy' - The service principal that assumed the role specified in @createdBy@. If
+-- no service principal assumed the role this will be left blank.
+--
+-- 'resourceArn', 'incidentRecordSource_resourceArn' - The resource that caused the incident to be created.
+--
+-- 'createdBy', 'incidentRecordSource_createdBy' - The principal that started the incident.
+--
+-- 'source', 'incidentRecordSource_source' - The service that started the incident. This can be manually created from
+-- Incident Manager, automatically created using an Amazon CloudWatch
+-- alarm, or Amazon EventBridge event.
+newIncidentRecordSource ::
+  -- | 'createdBy'
+  Prelude.Text ->
+  -- | 'source'
+  Prelude.Text ->
+  IncidentRecordSource
+newIncidentRecordSource pCreatedBy_ pSource_ =
+  IncidentRecordSource'
+    { invokedBy = Prelude.Nothing,
+      resourceArn = Prelude.Nothing,
+      createdBy = pCreatedBy_,
+      source = pSource_
+    }
+
+-- | The service principal that assumed the role specified in @createdBy@. If
+-- no service principal assumed the role this will be left blank.
+incidentRecordSource_invokedBy :: Lens.Lens' IncidentRecordSource (Prelude.Maybe Prelude.Text)
+incidentRecordSource_invokedBy = Lens.lens (\IncidentRecordSource' {invokedBy} -> invokedBy) (\s@IncidentRecordSource' {} a -> s {invokedBy = a} :: IncidentRecordSource)
+
+-- | The resource that caused the incident to be created.
+incidentRecordSource_resourceArn :: Lens.Lens' IncidentRecordSource (Prelude.Maybe Prelude.Text)
+incidentRecordSource_resourceArn = Lens.lens (\IncidentRecordSource' {resourceArn} -> resourceArn) (\s@IncidentRecordSource' {} a -> s {resourceArn = a} :: IncidentRecordSource)
+
+-- | The principal that started the incident.
+incidentRecordSource_createdBy :: Lens.Lens' IncidentRecordSource Prelude.Text
+incidentRecordSource_createdBy = Lens.lens (\IncidentRecordSource' {createdBy} -> createdBy) (\s@IncidentRecordSource' {} a -> s {createdBy = a} :: IncidentRecordSource)
+
+-- | The service that started the incident. This can be manually created from
+-- Incident Manager, automatically created using an Amazon CloudWatch
+-- alarm, or Amazon EventBridge event.
+incidentRecordSource_source :: Lens.Lens' IncidentRecordSource Prelude.Text
+incidentRecordSource_source = Lens.lens (\IncidentRecordSource' {source} -> source) (\s@IncidentRecordSource' {} a -> s {source = a} :: IncidentRecordSource)
+
+instance Data.FromJSON IncidentRecordSource where
+  parseJSON =
+    Data.withObject
+      "IncidentRecordSource"
+      ( \x ->
+          IncidentRecordSource'
+            Prelude.<$> (x Data..:? "invokedBy")
+            Prelude.<*> (x Data..:? "resourceArn")
+            Prelude.<*> (x Data..: "createdBy")
+            Prelude.<*> (x Data..: "source")
+      )
+
+instance Prelude.Hashable IncidentRecordSource where
+  hashWithSalt _salt IncidentRecordSource' {..} =
+    _salt
+      `Prelude.hashWithSalt` invokedBy
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` createdBy
+      `Prelude.hashWithSalt` source
+
+instance Prelude.NFData IncidentRecordSource where
+  rnf IncidentRecordSource' {..} =
+    Prelude.rnf invokedBy
+      `Prelude.seq` Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf source
diff --git a/gen/Amazonka/SSMIncidents/Types/IncidentRecordStatus.hs b/gen/Amazonka/SSMIncidents/Types/IncidentRecordStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/IncidentRecordStatus.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.SSMIncidents.Types.IncidentRecordStatus
+-- 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.SSMIncidents.Types.IncidentRecordStatus
+  ( IncidentRecordStatus
+      ( ..,
+        IncidentRecordStatus_OPEN,
+        IncidentRecordStatus_RESOLVED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype IncidentRecordStatus = IncidentRecordStatus'
+  { fromIncidentRecordStatus ::
+      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 IncidentRecordStatus_OPEN :: IncidentRecordStatus
+pattern IncidentRecordStatus_OPEN = IncidentRecordStatus' "OPEN"
+
+pattern IncidentRecordStatus_RESOLVED :: IncidentRecordStatus
+pattern IncidentRecordStatus_RESOLVED = IncidentRecordStatus' "RESOLVED"
+
+{-# COMPLETE
+  IncidentRecordStatus_OPEN,
+  IncidentRecordStatus_RESOLVED,
+  IncidentRecordStatus'
+  #-}
diff --git a/gen/Amazonka/SSMIncidents/Types/IncidentRecordSummary.hs b/gen/Amazonka/SSMIncidents/Types/IncidentRecordSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/IncidentRecordSummary.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.SSMIncidents.Types.IncidentRecordSummary
+-- 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.SSMIncidents.Types.IncidentRecordSummary 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
+import Amazonka.SSMIncidents.Types.IncidentRecordSource
+import Amazonka.SSMIncidents.Types.IncidentRecordStatus
+
+-- | Details describing an incident record.
+--
+-- /See:/ 'newIncidentRecordSummary' smart constructor.
+data IncidentRecordSummary = IncidentRecordSummary'
+  { -- | The time the incident was resolved.
+    resolvedTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the incident.
+    arn :: Prelude.Text,
+    -- | The time the incident was created.
+    creationTime :: Data.POSIX,
+    -- | Defines the impact to customers and applications.
+    impact :: Prelude.Natural,
+    -- | What caused Incident Manager to create the incident.
+    incidentRecordSource :: IncidentRecordSource,
+    -- | The current status of the incident.
+    status :: IncidentRecordStatus,
+    -- | The title of the incident. This value is either provided by the response
+    -- plan or overwritten on creation.
+    title :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'IncidentRecordSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resolvedTime', 'incidentRecordSummary_resolvedTime' - The time the incident was resolved.
+--
+-- 'arn', 'incidentRecordSummary_arn' - The Amazon Resource Name (ARN) of the incident.
+--
+-- 'creationTime', 'incidentRecordSummary_creationTime' - The time the incident was created.
+--
+-- 'impact', 'incidentRecordSummary_impact' - Defines the impact to customers and applications.
+--
+-- 'incidentRecordSource', 'incidentRecordSummary_incidentRecordSource' - What caused Incident Manager to create the incident.
+--
+-- 'status', 'incidentRecordSummary_status' - The current status of the incident.
+--
+-- 'title', 'incidentRecordSummary_title' - The title of the incident. This value is either provided by the response
+-- plan or overwritten on creation.
+newIncidentRecordSummary ::
+  -- | 'arn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'impact'
+  Prelude.Natural ->
+  -- | 'incidentRecordSource'
+  IncidentRecordSource ->
+  -- | 'status'
+  IncidentRecordStatus ->
+  -- | 'title'
+  Prelude.Text ->
+  IncidentRecordSummary
+newIncidentRecordSummary
+  pArn_
+  pCreationTime_
+  pImpact_
+  pIncidentRecordSource_
+  pStatus_
+  pTitle_ =
+    IncidentRecordSummary'
+      { resolvedTime =
+          Prelude.Nothing,
+        arn = pArn_,
+        creationTime = Data._Time Lens.# pCreationTime_,
+        impact = pImpact_,
+        incidentRecordSource = pIncidentRecordSource_,
+        status = pStatus_,
+        title = pTitle_
+      }
+
+-- | The time the incident was resolved.
+incidentRecordSummary_resolvedTime :: Lens.Lens' IncidentRecordSummary (Prelude.Maybe Prelude.UTCTime)
+incidentRecordSummary_resolvedTime = Lens.lens (\IncidentRecordSummary' {resolvedTime} -> resolvedTime) (\s@IncidentRecordSummary' {} a -> s {resolvedTime = a} :: IncidentRecordSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of the incident.
+incidentRecordSummary_arn :: Lens.Lens' IncidentRecordSummary Prelude.Text
+incidentRecordSummary_arn = Lens.lens (\IncidentRecordSummary' {arn} -> arn) (\s@IncidentRecordSummary' {} a -> s {arn = a} :: IncidentRecordSummary)
+
+-- | The time the incident was created.
+incidentRecordSummary_creationTime :: Lens.Lens' IncidentRecordSummary Prelude.UTCTime
+incidentRecordSummary_creationTime = Lens.lens (\IncidentRecordSummary' {creationTime} -> creationTime) (\s@IncidentRecordSummary' {} a -> s {creationTime = a} :: IncidentRecordSummary) Prelude.. Data._Time
+
+-- | Defines the impact to customers and applications.
+incidentRecordSummary_impact :: Lens.Lens' IncidentRecordSummary Prelude.Natural
+incidentRecordSummary_impact = Lens.lens (\IncidentRecordSummary' {impact} -> impact) (\s@IncidentRecordSummary' {} a -> s {impact = a} :: IncidentRecordSummary)
+
+-- | What caused Incident Manager to create the incident.
+incidentRecordSummary_incidentRecordSource :: Lens.Lens' IncidentRecordSummary IncidentRecordSource
+incidentRecordSummary_incidentRecordSource = Lens.lens (\IncidentRecordSummary' {incidentRecordSource} -> incidentRecordSource) (\s@IncidentRecordSummary' {} a -> s {incidentRecordSource = a} :: IncidentRecordSummary)
+
+-- | The current status of the incident.
+incidentRecordSummary_status :: Lens.Lens' IncidentRecordSummary IncidentRecordStatus
+incidentRecordSummary_status = Lens.lens (\IncidentRecordSummary' {status} -> status) (\s@IncidentRecordSummary' {} a -> s {status = a} :: IncidentRecordSummary)
+
+-- | The title of the incident. This value is either provided by the response
+-- plan or overwritten on creation.
+incidentRecordSummary_title :: Lens.Lens' IncidentRecordSummary Prelude.Text
+incidentRecordSummary_title = Lens.lens (\IncidentRecordSummary' {title} -> title) (\s@IncidentRecordSummary' {} a -> s {title = a} :: IncidentRecordSummary)
+
+instance Data.FromJSON IncidentRecordSummary where
+  parseJSON =
+    Data.withObject
+      "IncidentRecordSummary"
+      ( \x ->
+          IncidentRecordSummary'
+            Prelude.<$> (x Data..:? "resolvedTime")
+            Prelude.<*> (x Data..: "arn")
+            Prelude.<*> (x Data..: "creationTime")
+            Prelude.<*> (x Data..: "impact")
+            Prelude.<*> (x Data..: "incidentRecordSource")
+            Prelude.<*> (x Data..: "status")
+            Prelude.<*> (x Data..: "title")
+      )
+
+instance Prelude.Hashable IncidentRecordSummary where
+  hashWithSalt _salt IncidentRecordSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` resolvedTime
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` impact
+      `Prelude.hashWithSalt` incidentRecordSource
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` title
+
+instance Prelude.NFData IncidentRecordSummary where
+  rnf IncidentRecordSummary' {..} =
+    Prelude.rnf resolvedTime
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf impact
+      `Prelude.seq` Prelude.rnf incidentRecordSource
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf title
diff --git a/gen/Amazonka/SSMIncidents/Types/IncidentTemplate.hs b/gen/Amazonka/SSMIncidents/Types/IncidentTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/IncidentTemplate.hs
@@ -0,0 +1,170 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.Types.IncidentTemplate
+-- 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.SSMIncidents.Types.IncidentTemplate 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
+import Amazonka.SSMIncidents.Types.NotificationTargetItem
+
+-- | Basic details used in creating a response plan. The response plan is
+-- then used to create an incident record.
+--
+-- /See:/ 'newIncidentTemplate' smart constructor.
+data IncidentTemplate = IncidentTemplate'
+  { -- | Used to stop Incident Manager from creating multiple incident records
+    -- for the same incident.
+    dedupeString :: Prelude.Maybe Prelude.Text,
+    -- | Tags to assign to the template. When the @StartIncident@ API action is
+    -- called, Incident Manager assigns the tags specified in the template to
+    -- the incident.
+    incidentTags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The Amazon SNS targets that are notified when updates are made to an
+    -- incident.
+    notificationTargets :: Prelude.Maybe [NotificationTargetItem],
+    -- | The summary of the incident. The summary is a brief synopsis of what
+    -- occurred, what\'s currently happening, and context.
+    summary :: Prelude.Maybe Prelude.Text,
+    -- | The impact of the incident on your customers and applications.
+    impact :: Prelude.Natural,
+    -- | The title of the incident.
+    title :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'IncidentTemplate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dedupeString', 'incidentTemplate_dedupeString' - Used to stop Incident Manager from creating multiple incident records
+-- for the same incident.
+--
+-- 'incidentTags', 'incidentTemplate_incidentTags' - Tags to assign to the template. When the @StartIncident@ API action is
+-- called, Incident Manager assigns the tags specified in the template to
+-- the incident.
+--
+-- 'notificationTargets', 'incidentTemplate_notificationTargets' - The Amazon SNS targets that are notified when updates are made to an
+-- incident.
+--
+-- 'summary', 'incidentTemplate_summary' - The summary of the incident. The summary is a brief synopsis of what
+-- occurred, what\'s currently happening, and context.
+--
+-- 'impact', 'incidentTemplate_impact' - The impact of the incident on your customers and applications.
+--
+-- 'title', 'incidentTemplate_title' - The title of the incident.
+newIncidentTemplate ::
+  -- | 'impact'
+  Prelude.Natural ->
+  -- | 'title'
+  Prelude.Text ->
+  IncidentTemplate
+newIncidentTemplate pImpact_ pTitle_ =
+  IncidentTemplate'
+    { dedupeString = Prelude.Nothing,
+      incidentTags = Prelude.Nothing,
+      notificationTargets = Prelude.Nothing,
+      summary = Prelude.Nothing,
+      impact = pImpact_,
+      title = pTitle_
+    }
+
+-- | Used to stop Incident Manager from creating multiple incident records
+-- for the same incident.
+incidentTemplate_dedupeString :: Lens.Lens' IncidentTemplate (Prelude.Maybe Prelude.Text)
+incidentTemplate_dedupeString = Lens.lens (\IncidentTemplate' {dedupeString} -> dedupeString) (\s@IncidentTemplate' {} a -> s {dedupeString = a} :: IncidentTemplate)
+
+-- | Tags to assign to the template. When the @StartIncident@ API action is
+-- called, Incident Manager assigns the tags specified in the template to
+-- the incident.
+incidentTemplate_incidentTags :: Lens.Lens' IncidentTemplate (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+incidentTemplate_incidentTags = Lens.lens (\IncidentTemplate' {incidentTags} -> incidentTags) (\s@IncidentTemplate' {} a -> s {incidentTags = a} :: IncidentTemplate) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon SNS targets that are notified when updates are made to an
+-- incident.
+incidentTemplate_notificationTargets :: Lens.Lens' IncidentTemplate (Prelude.Maybe [NotificationTargetItem])
+incidentTemplate_notificationTargets = Lens.lens (\IncidentTemplate' {notificationTargets} -> notificationTargets) (\s@IncidentTemplate' {} a -> s {notificationTargets = a} :: IncidentTemplate) Prelude.. Lens.mapping Lens.coerced
+
+-- | The summary of the incident. The summary is a brief synopsis of what
+-- occurred, what\'s currently happening, and context.
+incidentTemplate_summary :: Lens.Lens' IncidentTemplate (Prelude.Maybe Prelude.Text)
+incidentTemplate_summary = Lens.lens (\IncidentTemplate' {summary} -> summary) (\s@IncidentTemplate' {} a -> s {summary = a} :: IncidentTemplate)
+
+-- | The impact of the incident on your customers and applications.
+incidentTemplate_impact :: Lens.Lens' IncidentTemplate Prelude.Natural
+incidentTemplate_impact = Lens.lens (\IncidentTemplate' {impact} -> impact) (\s@IncidentTemplate' {} a -> s {impact = a} :: IncidentTemplate)
+
+-- | The title of the incident.
+incidentTemplate_title :: Lens.Lens' IncidentTemplate Prelude.Text
+incidentTemplate_title = Lens.lens (\IncidentTemplate' {title} -> title) (\s@IncidentTemplate' {} a -> s {title = a} :: IncidentTemplate)
+
+instance Data.FromJSON IncidentTemplate where
+  parseJSON =
+    Data.withObject
+      "IncidentTemplate"
+      ( \x ->
+          IncidentTemplate'
+            Prelude.<$> (x Data..:? "dedupeString")
+            Prelude.<*> (x Data..:? "incidentTags" Data..!= Prelude.mempty)
+            Prelude.<*> ( x
+                            Data..:? "notificationTargets"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "summary")
+            Prelude.<*> (x Data..: "impact")
+            Prelude.<*> (x Data..: "title")
+      )
+
+instance Prelude.Hashable IncidentTemplate where
+  hashWithSalt _salt IncidentTemplate' {..} =
+    _salt
+      `Prelude.hashWithSalt` dedupeString
+      `Prelude.hashWithSalt` incidentTags
+      `Prelude.hashWithSalt` notificationTargets
+      `Prelude.hashWithSalt` summary
+      `Prelude.hashWithSalt` impact
+      `Prelude.hashWithSalt` title
+
+instance Prelude.NFData IncidentTemplate where
+  rnf IncidentTemplate' {..} =
+    Prelude.rnf dedupeString
+      `Prelude.seq` Prelude.rnf incidentTags
+      `Prelude.seq` Prelude.rnf notificationTargets
+      `Prelude.seq` Prelude.rnf summary
+      `Prelude.seq` Prelude.rnf impact
+      `Prelude.seq` Prelude.rnf title
+
+instance Data.ToJSON IncidentTemplate where
+  toJSON IncidentTemplate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("dedupeString" Data..=) Prelude.<$> dedupeString,
+            ("incidentTags" Data..=) Prelude.<$> incidentTags,
+            ("notificationTargets" Data..=)
+              Prelude.<$> notificationTargets,
+            ("summary" Data..=) Prelude.<$> summary,
+            Prelude.Just ("impact" Data..= impact),
+            Prelude.Just ("title" Data..= title)
+          ]
+      )
diff --git a/gen/Amazonka/SSMIncidents/Types/Integration.hs b/gen/Amazonka/SSMIncidents/Types/Integration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/Integration.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.Types.Integration
+-- 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.SSMIncidents.Types.Integration 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
+import Amazonka.SSMIncidents.Types.PagerDutyConfiguration
+
+-- | Information about third-party services integrated into a response plan.
+--
+-- /See:/ 'newIntegration' smart constructor.
+data Integration = Integration'
+  { -- | Information about the PagerDuty service where the response plan creates
+    -- an incident.
+    pagerDutyConfiguration :: Prelude.Maybe PagerDutyConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Integration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'pagerDutyConfiguration', 'integration_pagerDutyConfiguration' - Information about the PagerDuty service where the response plan creates
+-- an incident.
+newIntegration ::
+  Integration
+newIntegration =
+  Integration'
+    { pagerDutyConfiguration =
+        Prelude.Nothing
+    }
+
+-- | Information about the PagerDuty service where the response plan creates
+-- an incident.
+integration_pagerDutyConfiguration :: Lens.Lens' Integration (Prelude.Maybe PagerDutyConfiguration)
+integration_pagerDutyConfiguration = Lens.lens (\Integration' {pagerDutyConfiguration} -> pagerDutyConfiguration) (\s@Integration' {} a -> s {pagerDutyConfiguration = a} :: Integration)
+
+instance Data.FromJSON Integration where
+  parseJSON =
+    Data.withObject
+      "Integration"
+      ( \x ->
+          Integration'
+            Prelude.<$> (x Data..:? "pagerDutyConfiguration")
+      )
+
+instance Prelude.Hashable Integration where
+  hashWithSalt _salt Integration' {..} =
+    _salt `Prelude.hashWithSalt` pagerDutyConfiguration
+
+instance Prelude.NFData Integration where
+  rnf Integration' {..} =
+    Prelude.rnf pagerDutyConfiguration
+
+instance Data.ToJSON Integration where
+  toJSON Integration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("pagerDutyConfiguration" Data..=)
+              Prelude.<$> pagerDutyConfiguration
+          ]
+      )
diff --git a/gen/Amazonka/SSMIncidents/Types/ItemIdentifier.hs b/gen/Amazonka/SSMIncidents/Types/ItemIdentifier.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/ItemIdentifier.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.SSMIncidents.Types.ItemIdentifier
+-- 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.SSMIncidents.Types.ItemIdentifier 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
+import Amazonka.SSMIncidents.Types.ItemType
+import Amazonka.SSMIncidents.Types.ItemValue
+
+-- | Details and type of a related item.
+--
+-- /See:/ 'newItemIdentifier' smart constructor.
+data ItemIdentifier = ItemIdentifier'
+  { -- | The type of related item.
+    type' :: ItemType,
+    -- | Details about the related item.
+    value :: ItemValue
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ItemIdentifier' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'type'', 'itemIdentifier_type' - The type of related item.
+--
+-- 'value', 'itemIdentifier_value' - Details about the related item.
+newItemIdentifier ::
+  -- | 'type''
+  ItemType ->
+  -- | 'value'
+  ItemValue ->
+  ItemIdentifier
+newItemIdentifier pType_ pValue_ =
+  ItemIdentifier' {type' = pType_, value = pValue_}
+
+-- | The type of related item.
+itemIdentifier_type :: Lens.Lens' ItemIdentifier ItemType
+itemIdentifier_type = Lens.lens (\ItemIdentifier' {type'} -> type') (\s@ItemIdentifier' {} a -> s {type' = a} :: ItemIdentifier)
+
+-- | Details about the related item.
+itemIdentifier_value :: Lens.Lens' ItemIdentifier ItemValue
+itemIdentifier_value = Lens.lens (\ItemIdentifier' {value} -> value) (\s@ItemIdentifier' {} a -> s {value = a} :: ItemIdentifier)
+
+instance Data.FromJSON ItemIdentifier where
+  parseJSON =
+    Data.withObject
+      "ItemIdentifier"
+      ( \x ->
+          ItemIdentifier'
+            Prelude.<$> (x Data..: "type")
+            Prelude.<*> (x Data..: "value")
+      )
+
+instance Prelude.Hashable ItemIdentifier where
+  hashWithSalt _salt ItemIdentifier' {..} =
+    _salt
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData ItemIdentifier where
+  rnf ItemIdentifier' {..} =
+    Prelude.rnf type' `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON ItemIdentifier where
+  toJSON ItemIdentifier' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("type" Data..= type'),
+            Prelude.Just ("value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/SSMIncidents/Types/ItemType.hs b/gen/Amazonka/SSMIncidents/Types/ItemType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/ItemType.hs
@@ -0,0 +1,106 @@
+{-# 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.SSMIncidents.Types.ItemType
+-- 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.SSMIncidents.Types.ItemType
+  ( ItemType
+      ( ..,
+        ItemType_ANALYSIS,
+        ItemType_ATTACHMENT,
+        ItemType_AUTOMATION,
+        ItemType_INCIDENT,
+        ItemType_INVOLVED_RESOURCE,
+        ItemType_METRIC,
+        ItemType_OTHER,
+        ItemType_PARENT,
+        ItemType_TASK
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ItemType = ItemType'
+  { fromItemType ::
+      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 ItemType_ANALYSIS :: ItemType
+pattern ItemType_ANALYSIS = ItemType' "ANALYSIS"
+
+pattern ItemType_ATTACHMENT :: ItemType
+pattern ItemType_ATTACHMENT = ItemType' "ATTACHMENT"
+
+pattern ItemType_AUTOMATION :: ItemType
+pattern ItemType_AUTOMATION = ItemType' "AUTOMATION"
+
+pattern ItemType_INCIDENT :: ItemType
+pattern ItemType_INCIDENT = ItemType' "INCIDENT"
+
+pattern ItemType_INVOLVED_RESOURCE :: ItemType
+pattern ItemType_INVOLVED_RESOURCE = ItemType' "INVOLVED_RESOURCE"
+
+pattern ItemType_METRIC :: ItemType
+pattern ItemType_METRIC = ItemType' "METRIC"
+
+pattern ItemType_OTHER :: ItemType
+pattern ItemType_OTHER = ItemType' "OTHER"
+
+pattern ItemType_PARENT :: ItemType
+pattern ItemType_PARENT = ItemType' "PARENT"
+
+pattern ItemType_TASK :: ItemType
+pattern ItemType_TASK = ItemType' "TASK"
+
+{-# COMPLETE
+  ItemType_ANALYSIS,
+  ItemType_ATTACHMENT,
+  ItemType_AUTOMATION,
+  ItemType_INCIDENT,
+  ItemType_INVOLVED_RESOURCE,
+  ItemType_METRIC,
+  ItemType_OTHER,
+  ItemType_PARENT,
+  ItemType_TASK,
+  ItemType'
+  #-}
diff --git a/gen/Amazonka/SSMIncidents/Types/ItemValue.hs b/gen/Amazonka/SSMIncidents/Types/ItemValue.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/ItemValue.hs
@@ -0,0 +1,128 @@
+{-# 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.SSMIncidents.Types.ItemValue
+-- 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.SSMIncidents.Types.ItemValue 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
+import Amazonka.SSMIncidents.Types.PagerDutyIncidentDetail
+
+-- | Describes a related item.
+--
+-- /See:/ 'newItemValue' smart constructor.
+data ItemValue = ItemValue'
+  { -- | The Amazon Resource Name (ARN) of the related item, if the related item
+    -- is an Amazon resource.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The metric definition, if the related item is a metric in Amazon
+    -- CloudWatch.
+    metricDefinition :: Prelude.Maybe Prelude.Text,
+    -- | Details about an incident that is associated with a PagerDuty incident.
+    pagerDutyIncidentDetail :: Prelude.Maybe PagerDutyIncidentDetail,
+    -- | The URL, if the related item is a non-Amazon Web Services resource.
+    url :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ItemValue' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'itemValue_arn' - The Amazon Resource Name (ARN) of the related item, if the related item
+-- is an Amazon resource.
+--
+-- 'metricDefinition', 'itemValue_metricDefinition' - The metric definition, if the related item is a metric in Amazon
+-- CloudWatch.
+--
+-- 'pagerDutyIncidentDetail', 'itemValue_pagerDutyIncidentDetail' - Details about an incident that is associated with a PagerDuty incident.
+--
+-- 'url', 'itemValue_url' - The URL, if the related item is a non-Amazon Web Services resource.
+newItemValue ::
+  ItemValue
+newItemValue =
+  ItemValue'
+    { arn = Prelude.Nothing,
+      metricDefinition = Prelude.Nothing,
+      pagerDutyIncidentDetail = Prelude.Nothing,
+      url = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the related item, if the related item
+-- is an Amazon resource.
+itemValue_arn :: Lens.Lens' ItemValue (Prelude.Maybe Prelude.Text)
+itemValue_arn = Lens.lens (\ItemValue' {arn} -> arn) (\s@ItemValue' {} a -> s {arn = a} :: ItemValue)
+
+-- | The metric definition, if the related item is a metric in Amazon
+-- CloudWatch.
+itemValue_metricDefinition :: Lens.Lens' ItemValue (Prelude.Maybe Prelude.Text)
+itemValue_metricDefinition = Lens.lens (\ItemValue' {metricDefinition} -> metricDefinition) (\s@ItemValue' {} a -> s {metricDefinition = a} :: ItemValue)
+
+-- | Details about an incident that is associated with a PagerDuty incident.
+itemValue_pagerDutyIncidentDetail :: Lens.Lens' ItemValue (Prelude.Maybe PagerDutyIncidentDetail)
+itemValue_pagerDutyIncidentDetail = Lens.lens (\ItemValue' {pagerDutyIncidentDetail} -> pagerDutyIncidentDetail) (\s@ItemValue' {} a -> s {pagerDutyIncidentDetail = a} :: ItemValue)
+
+-- | The URL, if the related item is a non-Amazon Web Services resource.
+itemValue_url :: Lens.Lens' ItemValue (Prelude.Maybe Prelude.Text)
+itemValue_url = Lens.lens (\ItemValue' {url} -> url) (\s@ItemValue' {} a -> s {url = a} :: ItemValue)
+
+instance Data.FromJSON ItemValue where
+  parseJSON =
+    Data.withObject
+      "ItemValue"
+      ( \x ->
+          ItemValue'
+            Prelude.<$> (x Data..:? "arn")
+            Prelude.<*> (x Data..:? "metricDefinition")
+            Prelude.<*> (x Data..:? "pagerDutyIncidentDetail")
+            Prelude.<*> (x Data..:? "url")
+      )
+
+instance Prelude.Hashable ItemValue where
+  hashWithSalt _salt ItemValue' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` metricDefinition
+      `Prelude.hashWithSalt` pagerDutyIncidentDetail
+      `Prelude.hashWithSalt` url
+
+instance Prelude.NFData ItemValue where
+  rnf ItemValue' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf metricDefinition
+      `Prelude.seq` Prelude.rnf pagerDutyIncidentDetail
+      `Prelude.seq` Prelude.rnf url
+
+instance Data.ToJSON ItemValue where
+  toJSON ItemValue' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("arn" Data..=) Prelude.<$> arn,
+            ("metricDefinition" Data..=)
+              Prelude.<$> metricDefinition,
+            ("pagerDutyIncidentDetail" Data..=)
+              Prelude.<$> pagerDutyIncidentDetail,
+            ("url" Data..=) Prelude.<$> url
+          ]
+      )
diff --git a/gen/Amazonka/SSMIncidents/Types/NotificationTargetItem.hs b/gen/Amazonka/SSMIncidents/Types/NotificationTargetItem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/NotificationTargetItem.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.SSMIncidents.Types.NotificationTargetItem
+-- 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.SSMIncidents.Types.NotificationTargetItem where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The SNS targets that are notified when updates are made to an incident.
+--
+-- /See:/ 'newNotificationTargetItem' smart constructor.
+data NotificationTargetItem = NotificationTargetItem'
+  { -- | The Amazon Resource Name (ARN) of the SNS topic.
+    snsTopicArn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NotificationTargetItem' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'snsTopicArn', 'notificationTargetItem_snsTopicArn' - The Amazon Resource Name (ARN) of the SNS topic.
+newNotificationTargetItem ::
+  NotificationTargetItem
+newNotificationTargetItem =
+  NotificationTargetItem'
+    { snsTopicArn =
+        Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the SNS topic.
+notificationTargetItem_snsTopicArn :: Lens.Lens' NotificationTargetItem (Prelude.Maybe Prelude.Text)
+notificationTargetItem_snsTopicArn = Lens.lens (\NotificationTargetItem' {snsTopicArn} -> snsTopicArn) (\s@NotificationTargetItem' {} a -> s {snsTopicArn = a} :: NotificationTargetItem)
+
+instance Data.FromJSON NotificationTargetItem where
+  parseJSON =
+    Data.withObject
+      "NotificationTargetItem"
+      ( \x ->
+          NotificationTargetItem'
+            Prelude.<$> (x Data..:? "snsTopicArn")
+      )
+
+instance Prelude.Hashable NotificationTargetItem where
+  hashWithSalt _salt NotificationTargetItem' {..} =
+    _salt `Prelude.hashWithSalt` snsTopicArn
+
+instance Prelude.NFData NotificationTargetItem where
+  rnf NotificationTargetItem' {..} =
+    Prelude.rnf snsTopicArn
+
+instance Data.ToJSON NotificationTargetItem where
+  toJSON NotificationTargetItem' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("snsTopicArn" Data..=) Prelude.<$> snsTopicArn]
+      )
diff --git a/gen/Amazonka/SSMIncidents/Types/PagerDutyConfiguration.hs b/gen/Amazonka/SSMIncidents/Types/PagerDutyConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/PagerDutyConfiguration.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.SSMIncidents.Types.PagerDutyConfiguration
+-- 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.SSMIncidents.Types.PagerDutyConfiguration 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
+import Amazonka.SSMIncidents.Types.PagerDutyIncidentConfiguration
+
+-- | Details about the PagerDuty configuration for a response plan.
+--
+-- /See:/ 'newPagerDutyConfiguration' smart constructor.
+data PagerDutyConfiguration = PagerDutyConfiguration'
+  { -- | The name of the PagerDuty configuration.
+    name :: Prelude.Text,
+    -- | Details about the PagerDuty service associated with the configuration.
+    pagerDutyIncidentConfiguration :: PagerDutyIncidentConfiguration,
+    -- | The ID of the Amazon Web Services Secrets Manager secret that stores
+    -- your PagerDuty key, either a General Access REST API Key or User Token
+    -- REST API Key, and other user credentials.
+    secretId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PagerDutyConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'pagerDutyConfiguration_name' - The name of the PagerDuty configuration.
+--
+-- 'pagerDutyIncidentConfiguration', 'pagerDutyConfiguration_pagerDutyIncidentConfiguration' - Details about the PagerDuty service associated with the configuration.
+--
+-- 'secretId', 'pagerDutyConfiguration_secretId' - The ID of the Amazon Web Services Secrets Manager secret that stores
+-- your PagerDuty key, either a General Access REST API Key or User Token
+-- REST API Key, and other user credentials.
+newPagerDutyConfiguration ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'pagerDutyIncidentConfiguration'
+  PagerDutyIncidentConfiguration ->
+  -- | 'secretId'
+  Prelude.Text ->
+  PagerDutyConfiguration
+newPagerDutyConfiguration
+  pName_
+  pPagerDutyIncidentConfiguration_
+  pSecretId_ =
+    PagerDutyConfiguration'
+      { name = pName_,
+        pagerDutyIncidentConfiguration =
+          pPagerDutyIncidentConfiguration_,
+        secretId = pSecretId_
+      }
+
+-- | The name of the PagerDuty configuration.
+pagerDutyConfiguration_name :: Lens.Lens' PagerDutyConfiguration Prelude.Text
+pagerDutyConfiguration_name = Lens.lens (\PagerDutyConfiguration' {name} -> name) (\s@PagerDutyConfiguration' {} a -> s {name = a} :: PagerDutyConfiguration)
+
+-- | Details about the PagerDuty service associated with the configuration.
+pagerDutyConfiguration_pagerDutyIncidentConfiguration :: Lens.Lens' PagerDutyConfiguration PagerDutyIncidentConfiguration
+pagerDutyConfiguration_pagerDutyIncidentConfiguration = Lens.lens (\PagerDutyConfiguration' {pagerDutyIncidentConfiguration} -> pagerDutyIncidentConfiguration) (\s@PagerDutyConfiguration' {} a -> s {pagerDutyIncidentConfiguration = a} :: PagerDutyConfiguration)
+
+-- | The ID of the Amazon Web Services Secrets Manager secret that stores
+-- your PagerDuty key, either a General Access REST API Key or User Token
+-- REST API Key, and other user credentials.
+pagerDutyConfiguration_secretId :: Lens.Lens' PagerDutyConfiguration Prelude.Text
+pagerDutyConfiguration_secretId = Lens.lens (\PagerDutyConfiguration' {secretId} -> secretId) (\s@PagerDutyConfiguration' {} a -> s {secretId = a} :: PagerDutyConfiguration)
+
+instance Data.FromJSON PagerDutyConfiguration where
+  parseJSON =
+    Data.withObject
+      "PagerDutyConfiguration"
+      ( \x ->
+          PagerDutyConfiguration'
+            Prelude.<$> (x Data..: "name")
+            Prelude.<*> (x Data..: "pagerDutyIncidentConfiguration")
+            Prelude.<*> (x Data..: "secretId")
+      )
+
+instance Prelude.Hashable PagerDutyConfiguration where
+  hashWithSalt _salt PagerDutyConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` pagerDutyIncidentConfiguration
+      `Prelude.hashWithSalt` secretId
+
+instance Prelude.NFData PagerDutyConfiguration where
+  rnf PagerDutyConfiguration' {..} =
+    Prelude.rnf name
+      `Prelude.seq` Prelude.rnf pagerDutyIncidentConfiguration
+      `Prelude.seq` Prelude.rnf secretId
+
+instance Data.ToJSON PagerDutyConfiguration where
+  toJSON PagerDutyConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("name" Data..= name),
+            Prelude.Just
+              ( "pagerDutyIncidentConfiguration"
+                  Data..= pagerDutyIncidentConfiguration
+              ),
+            Prelude.Just ("secretId" Data..= secretId)
+          ]
+      )
diff --git a/gen/Amazonka/SSMIncidents/Types/PagerDutyIncidentConfiguration.hs b/gen/Amazonka/SSMIncidents/Types/PagerDutyIncidentConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/PagerDutyIncidentConfiguration.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.SSMIncidents.Types.PagerDutyIncidentConfiguration
+-- 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.SSMIncidents.Types.PagerDutyIncidentConfiguration 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
+
+-- | Details about the PagerDuty service where the response plan creates an
+-- incident.
+--
+-- /See:/ 'newPagerDutyIncidentConfiguration' smart constructor.
+data PagerDutyIncidentConfiguration = PagerDutyIncidentConfiguration'
+  { -- | The ID of the PagerDuty service that the response plan associates with
+    -- an incident when it launches.
+    serviceId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PagerDutyIncidentConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'serviceId', 'pagerDutyIncidentConfiguration_serviceId' - The ID of the PagerDuty service that the response plan associates with
+-- an incident when it launches.
+newPagerDutyIncidentConfiguration ::
+  -- | 'serviceId'
+  Prelude.Text ->
+  PagerDutyIncidentConfiguration
+newPagerDutyIncidentConfiguration pServiceId_ =
+  PagerDutyIncidentConfiguration'
+    { serviceId =
+        pServiceId_
+    }
+
+-- | The ID of the PagerDuty service that the response plan associates with
+-- an incident when it launches.
+pagerDutyIncidentConfiguration_serviceId :: Lens.Lens' PagerDutyIncidentConfiguration Prelude.Text
+pagerDutyIncidentConfiguration_serviceId = Lens.lens (\PagerDutyIncidentConfiguration' {serviceId} -> serviceId) (\s@PagerDutyIncidentConfiguration' {} a -> s {serviceId = a} :: PagerDutyIncidentConfiguration)
+
+instance Data.FromJSON PagerDutyIncidentConfiguration where
+  parseJSON =
+    Data.withObject
+      "PagerDutyIncidentConfiguration"
+      ( \x ->
+          PagerDutyIncidentConfiguration'
+            Prelude.<$> (x Data..: "serviceId")
+      )
+
+instance
+  Prelude.Hashable
+    PagerDutyIncidentConfiguration
+  where
+  hashWithSalt
+    _salt
+    PagerDutyIncidentConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` serviceId
+
+instance
+  Prelude.NFData
+    PagerDutyIncidentConfiguration
+  where
+  rnf PagerDutyIncidentConfiguration' {..} =
+    Prelude.rnf serviceId
+
+instance Data.ToJSON PagerDutyIncidentConfiguration where
+  toJSON PagerDutyIncidentConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("serviceId" Data..= serviceId)]
+      )
diff --git a/gen/Amazonka/SSMIncidents/Types/PagerDutyIncidentDetail.hs b/gen/Amazonka/SSMIncidents/Types/PagerDutyIncidentDetail.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/PagerDutyIncidentDetail.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.Types.PagerDutyIncidentDetail
+-- 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.SSMIncidents.Types.PagerDutyIncidentDetail 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
+
+-- | Details about the PagerDuty incident associated with an incident created
+-- by an Incident Manager response plan.
+--
+-- /See:/ 'newPagerDutyIncidentDetail' smart constructor.
+data PagerDutyIncidentDetail = PagerDutyIncidentDetail'
+  { -- | Indicates whether to resolve the PagerDuty incident when you resolve the
+    -- associated Incident Manager incident.
+    autoResolve :: Prelude.Maybe Prelude.Bool,
+    -- | The ID of the Amazon Web Services Secrets Manager secret that stores
+    -- your PagerDuty key, either a General Access REST API Key or User Token
+    -- REST API Key, and other user credentials.
+    secretId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the incident associated with the PagerDuty service for the
+    -- response plan.
+    id :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PagerDutyIncidentDetail' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'autoResolve', 'pagerDutyIncidentDetail_autoResolve' - Indicates whether to resolve the PagerDuty incident when you resolve the
+-- associated Incident Manager incident.
+--
+-- 'secretId', 'pagerDutyIncidentDetail_secretId' - The ID of the Amazon Web Services Secrets Manager secret that stores
+-- your PagerDuty key, either a General Access REST API Key or User Token
+-- REST API Key, and other user credentials.
+--
+-- 'id', 'pagerDutyIncidentDetail_id' - The ID of the incident associated with the PagerDuty service for the
+-- response plan.
+newPagerDutyIncidentDetail ::
+  -- | 'id'
+  Prelude.Text ->
+  PagerDutyIncidentDetail
+newPagerDutyIncidentDetail pId_ =
+  PagerDutyIncidentDetail'
+    { autoResolve =
+        Prelude.Nothing,
+      secretId = Prelude.Nothing,
+      id = pId_
+    }
+
+-- | Indicates whether to resolve the PagerDuty incident when you resolve the
+-- associated Incident Manager incident.
+pagerDutyIncidentDetail_autoResolve :: Lens.Lens' PagerDutyIncidentDetail (Prelude.Maybe Prelude.Bool)
+pagerDutyIncidentDetail_autoResolve = Lens.lens (\PagerDutyIncidentDetail' {autoResolve} -> autoResolve) (\s@PagerDutyIncidentDetail' {} a -> s {autoResolve = a} :: PagerDutyIncidentDetail)
+
+-- | The ID of the Amazon Web Services Secrets Manager secret that stores
+-- your PagerDuty key, either a General Access REST API Key or User Token
+-- REST API Key, and other user credentials.
+pagerDutyIncidentDetail_secretId :: Lens.Lens' PagerDutyIncidentDetail (Prelude.Maybe Prelude.Text)
+pagerDutyIncidentDetail_secretId = Lens.lens (\PagerDutyIncidentDetail' {secretId} -> secretId) (\s@PagerDutyIncidentDetail' {} a -> s {secretId = a} :: PagerDutyIncidentDetail)
+
+-- | The ID of the incident associated with the PagerDuty service for the
+-- response plan.
+pagerDutyIncidentDetail_id :: Lens.Lens' PagerDutyIncidentDetail Prelude.Text
+pagerDutyIncidentDetail_id = Lens.lens (\PagerDutyIncidentDetail' {id} -> id) (\s@PagerDutyIncidentDetail' {} a -> s {id = a} :: PagerDutyIncidentDetail)
+
+instance Data.FromJSON PagerDutyIncidentDetail where
+  parseJSON =
+    Data.withObject
+      "PagerDutyIncidentDetail"
+      ( \x ->
+          PagerDutyIncidentDetail'
+            Prelude.<$> (x Data..:? "autoResolve")
+            Prelude.<*> (x Data..:? "secretId")
+            Prelude.<*> (x Data..: "id")
+      )
+
+instance Prelude.Hashable PagerDutyIncidentDetail where
+  hashWithSalt _salt PagerDutyIncidentDetail' {..} =
+    _salt
+      `Prelude.hashWithSalt` autoResolve
+      `Prelude.hashWithSalt` secretId
+      `Prelude.hashWithSalt` id
+
+instance Prelude.NFData PagerDutyIncidentDetail where
+  rnf PagerDutyIncidentDetail' {..} =
+    Prelude.rnf autoResolve
+      `Prelude.seq` Prelude.rnf secretId
+      `Prelude.seq` Prelude.rnf id
+
+instance Data.ToJSON PagerDutyIncidentDetail where
+  toJSON PagerDutyIncidentDetail' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("autoResolve" Data..=) Prelude.<$> autoResolve,
+            ("secretId" Data..=) Prelude.<$> secretId,
+            Prelude.Just ("id" Data..= id)
+          ]
+      )
diff --git a/gen/Amazonka/SSMIncidents/Types/RegionInfo.hs b/gen/Amazonka/SSMIncidents/Types/RegionInfo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/RegionInfo.hs
@@ -0,0 +1,123 @@
+{-# 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.SSMIncidents.Types.RegionInfo
+-- 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.SSMIncidents.Types.RegionInfo 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
+import Amazonka.SSMIncidents.Types.RegionStatus
+
+-- | Information about a Amazon Web Services Region in your replication set.
+--
+-- /See:/ 'newRegionInfo' smart constructor.
+data RegionInfo = RegionInfo'
+  { -- | The ID of the KMS key used to encrypt the data in this Amazon Web
+    -- Services Region.
+    sseKmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | Information displayed about the status of the Amazon Web Services
+    -- Region.
+    statusMessage :: Prelude.Maybe Prelude.Text,
+    -- | The status of the Amazon Web Services Region in the replication set.
+    status :: RegionStatus,
+    -- | The most recent date and time that Incident Manager updated the Amazon
+    -- Web Services Region\'s status.
+    statusUpdateDateTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RegionInfo' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sseKmsKeyId', 'regionInfo_sseKmsKeyId' - The ID of the KMS key used to encrypt the data in this Amazon Web
+-- Services Region.
+--
+-- 'statusMessage', 'regionInfo_statusMessage' - Information displayed about the status of the Amazon Web Services
+-- Region.
+--
+-- 'status', 'regionInfo_status' - The status of the Amazon Web Services Region in the replication set.
+--
+-- 'statusUpdateDateTime', 'regionInfo_statusUpdateDateTime' - The most recent date and time that Incident Manager updated the Amazon
+-- Web Services Region\'s status.
+newRegionInfo ::
+  -- | 'status'
+  RegionStatus ->
+  -- | 'statusUpdateDateTime'
+  Prelude.UTCTime ->
+  RegionInfo
+newRegionInfo pStatus_ pStatusUpdateDateTime_ =
+  RegionInfo'
+    { sseKmsKeyId = Prelude.Nothing,
+      statusMessage = Prelude.Nothing,
+      status = pStatus_,
+      statusUpdateDateTime =
+        Data._Time Lens.# pStatusUpdateDateTime_
+    }
+
+-- | The ID of the KMS key used to encrypt the data in this Amazon Web
+-- Services Region.
+regionInfo_sseKmsKeyId :: Lens.Lens' RegionInfo (Prelude.Maybe Prelude.Text)
+regionInfo_sseKmsKeyId = Lens.lens (\RegionInfo' {sseKmsKeyId} -> sseKmsKeyId) (\s@RegionInfo' {} a -> s {sseKmsKeyId = a} :: RegionInfo)
+
+-- | Information displayed about the status of the Amazon Web Services
+-- Region.
+regionInfo_statusMessage :: Lens.Lens' RegionInfo (Prelude.Maybe Prelude.Text)
+regionInfo_statusMessage = Lens.lens (\RegionInfo' {statusMessage} -> statusMessage) (\s@RegionInfo' {} a -> s {statusMessage = a} :: RegionInfo)
+
+-- | The status of the Amazon Web Services Region in the replication set.
+regionInfo_status :: Lens.Lens' RegionInfo RegionStatus
+regionInfo_status = Lens.lens (\RegionInfo' {status} -> status) (\s@RegionInfo' {} a -> s {status = a} :: RegionInfo)
+
+-- | The most recent date and time that Incident Manager updated the Amazon
+-- Web Services Region\'s status.
+regionInfo_statusUpdateDateTime :: Lens.Lens' RegionInfo Prelude.UTCTime
+regionInfo_statusUpdateDateTime = Lens.lens (\RegionInfo' {statusUpdateDateTime} -> statusUpdateDateTime) (\s@RegionInfo' {} a -> s {statusUpdateDateTime = a} :: RegionInfo) Prelude.. Data._Time
+
+instance Data.FromJSON RegionInfo where
+  parseJSON =
+    Data.withObject
+      "RegionInfo"
+      ( \x ->
+          RegionInfo'
+            Prelude.<$> (x Data..:? "sseKmsKeyId")
+            Prelude.<*> (x Data..:? "statusMessage")
+            Prelude.<*> (x Data..: "status")
+            Prelude.<*> (x Data..: "statusUpdateDateTime")
+      )
+
+instance Prelude.Hashable RegionInfo where
+  hashWithSalt _salt RegionInfo' {..} =
+    _salt
+      `Prelude.hashWithSalt` sseKmsKeyId
+      `Prelude.hashWithSalt` statusMessage
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` statusUpdateDateTime
+
+instance Prelude.NFData RegionInfo where
+  rnf RegionInfo' {..} =
+    Prelude.rnf sseKmsKeyId
+      `Prelude.seq` Prelude.rnf statusMessage
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf statusUpdateDateTime
diff --git a/gen/Amazonka/SSMIncidents/Types/RegionMapInputValue.hs b/gen/Amazonka/SSMIncidents/Types/RegionMapInputValue.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/RegionMapInputValue.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.Types.RegionMapInputValue
+-- 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.SSMIncidents.Types.RegionMapInputValue where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The mapping between a Amazon Web Services Region and the key that\'s
+-- used to encrypt the data.
+--
+-- /See:/ 'newRegionMapInputValue' smart constructor.
+data RegionMapInputValue = RegionMapInputValue'
+  { -- | The KMS key used to encrypt the data in your replication set.
+    sseKmsKeyId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RegionMapInputValue' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sseKmsKeyId', 'regionMapInputValue_sseKmsKeyId' - The KMS key used to encrypt the data in your replication set.
+newRegionMapInputValue ::
+  RegionMapInputValue
+newRegionMapInputValue =
+  RegionMapInputValue' {sseKmsKeyId = Prelude.Nothing}
+
+-- | The KMS key used to encrypt the data in your replication set.
+regionMapInputValue_sseKmsKeyId :: Lens.Lens' RegionMapInputValue (Prelude.Maybe Prelude.Text)
+regionMapInputValue_sseKmsKeyId = Lens.lens (\RegionMapInputValue' {sseKmsKeyId} -> sseKmsKeyId) (\s@RegionMapInputValue' {} a -> s {sseKmsKeyId = a} :: RegionMapInputValue)
+
+instance Prelude.Hashable RegionMapInputValue where
+  hashWithSalt _salt RegionMapInputValue' {..} =
+    _salt `Prelude.hashWithSalt` sseKmsKeyId
+
+instance Prelude.NFData RegionMapInputValue where
+  rnf RegionMapInputValue' {..} =
+    Prelude.rnf sseKmsKeyId
+
+instance Data.ToJSON RegionMapInputValue where
+  toJSON RegionMapInputValue' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("sseKmsKeyId" Data..=) Prelude.<$> sseKmsKeyId]
+      )
diff --git a/gen/Amazonka/SSMIncidents/Types/RegionStatus.hs b/gen/Amazonka/SSMIncidents/Types/RegionStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/RegionStatus.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.SSMIncidents.Types.RegionStatus
+-- 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.SSMIncidents.Types.RegionStatus
+  ( RegionStatus
+      ( ..,
+        RegionStatus_ACTIVE,
+        RegionStatus_CREATING,
+        RegionStatus_DELETING,
+        RegionStatus_FAILED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RegionStatus = RegionStatus'
+  { fromRegionStatus ::
+      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 RegionStatus_ACTIVE :: RegionStatus
+pattern RegionStatus_ACTIVE = RegionStatus' "ACTIVE"
+
+pattern RegionStatus_CREATING :: RegionStatus
+pattern RegionStatus_CREATING = RegionStatus' "CREATING"
+
+pattern RegionStatus_DELETING :: RegionStatus
+pattern RegionStatus_DELETING = RegionStatus' "DELETING"
+
+pattern RegionStatus_FAILED :: RegionStatus
+pattern RegionStatus_FAILED = RegionStatus' "FAILED"
+
+{-# COMPLETE
+  RegionStatus_ACTIVE,
+  RegionStatus_CREATING,
+  RegionStatus_DELETING,
+  RegionStatus_FAILED,
+  RegionStatus'
+  #-}
diff --git a/gen/Amazonka/SSMIncidents/Types/RelatedItem.hs b/gen/Amazonka/SSMIncidents/Types/RelatedItem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/RelatedItem.hs
@@ -0,0 +1,118 @@
+{-# 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.SSMIncidents.Types.RelatedItem
+-- 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.SSMIncidents.Types.RelatedItem 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
+import Amazonka.SSMIncidents.Types.ItemIdentifier
+
+-- | Resources that responders use to triage and mitigate the incident.
+--
+-- /See:/ 'newRelatedItem' smart constructor.
+data RelatedItem = RelatedItem'
+  { -- | A unique ID for a @RelatedItem@.
+    --
+    -- Don\'t specify this parameter when you add a @RelatedItem@ by using the
+    -- UpdateRelatedItems API action.
+    generatedId :: Prelude.Maybe Prelude.Text,
+    -- | The title of the related item.
+    title :: Prelude.Maybe Prelude.Text,
+    -- | Details about the related item.
+    identifier :: ItemIdentifier
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RelatedItem' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'generatedId', 'relatedItem_generatedId' - A unique ID for a @RelatedItem@.
+--
+-- Don\'t specify this parameter when you add a @RelatedItem@ by using the
+-- UpdateRelatedItems API action.
+--
+-- 'title', 'relatedItem_title' - The title of the related item.
+--
+-- 'identifier', 'relatedItem_identifier' - Details about the related item.
+newRelatedItem ::
+  -- | 'identifier'
+  ItemIdentifier ->
+  RelatedItem
+newRelatedItem pIdentifier_ =
+  RelatedItem'
+    { generatedId = Prelude.Nothing,
+      title = Prelude.Nothing,
+      identifier = pIdentifier_
+    }
+
+-- | A unique ID for a @RelatedItem@.
+--
+-- Don\'t specify this parameter when you add a @RelatedItem@ by using the
+-- UpdateRelatedItems API action.
+relatedItem_generatedId :: Lens.Lens' RelatedItem (Prelude.Maybe Prelude.Text)
+relatedItem_generatedId = Lens.lens (\RelatedItem' {generatedId} -> generatedId) (\s@RelatedItem' {} a -> s {generatedId = a} :: RelatedItem)
+
+-- | The title of the related item.
+relatedItem_title :: Lens.Lens' RelatedItem (Prelude.Maybe Prelude.Text)
+relatedItem_title = Lens.lens (\RelatedItem' {title} -> title) (\s@RelatedItem' {} a -> s {title = a} :: RelatedItem)
+
+-- | Details about the related item.
+relatedItem_identifier :: Lens.Lens' RelatedItem ItemIdentifier
+relatedItem_identifier = Lens.lens (\RelatedItem' {identifier} -> identifier) (\s@RelatedItem' {} a -> s {identifier = a} :: RelatedItem)
+
+instance Data.FromJSON RelatedItem where
+  parseJSON =
+    Data.withObject
+      "RelatedItem"
+      ( \x ->
+          RelatedItem'
+            Prelude.<$> (x Data..:? "generatedId")
+            Prelude.<*> (x Data..:? "title")
+            Prelude.<*> (x Data..: "identifier")
+      )
+
+instance Prelude.Hashable RelatedItem where
+  hashWithSalt _salt RelatedItem' {..} =
+    _salt
+      `Prelude.hashWithSalt` generatedId
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` identifier
+
+instance Prelude.NFData RelatedItem where
+  rnf RelatedItem' {..} =
+    Prelude.rnf generatedId
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf identifier
+
+instance Data.ToJSON RelatedItem where
+  toJSON RelatedItem' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("generatedId" Data..=) Prelude.<$> generatedId,
+            ("title" Data..=) Prelude.<$> title,
+            Prelude.Just ("identifier" Data..= identifier)
+          ]
+      )
diff --git a/gen/Amazonka/SSMIncidents/Types/RelatedItemsUpdate.hs b/gen/Amazonka/SSMIncidents/Types/RelatedItemsUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/RelatedItemsUpdate.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.Types.RelatedItemsUpdate
+-- 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.SSMIncidents.Types.RelatedItemsUpdate 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
+import Amazonka.SSMIncidents.Types.ItemIdentifier
+import Amazonka.SSMIncidents.Types.RelatedItem
+
+-- | Details about the related item you\'re adding.
+--
+-- /See:/ 'newRelatedItemsUpdate' smart constructor.
+data RelatedItemsUpdate = RelatedItemsUpdate'
+  { -- | Details about the related item you\'re adding.
+    itemToAdd :: Prelude.Maybe RelatedItem,
+    -- | Details about the related item you\'re deleting.
+    itemToRemove :: Prelude.Maybe ItemIdentifier
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RelatedItemsUpdate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'itemToAdd', 'relatedItemsUpdate_itemToAdd' - Details about the related item you\'re adding.
+--
+-- 'itemToRemove', 'relatedItemsUpdate_itemToRemove' - Details about the related item you\'re deleting.
+newRelatedItemsUpdate ::
+  RelatedItemsUpdate
+newRelatedItemsUpdate =
+  RelatedItemsUpdate'
+    { itemToAdd = Prelude.Nothing,
+      itemToRemove = Prelude.Nothing
+    }
+
+-- | Details about the related item you\'re adding.
+relatedItemsUpdate_itemToAdd :: Lens.Lens' RelatedItemsUpdate (Prelude.Maybe RelatedItem)
+relatedItemsUpdate_itemToAdd = Lens.lens (\RelatedItemsUpdate' {itemToAdd} -> itemToAdd) (\s@RelatedItemsUpdate' {} a -> s {itemToAdd = a} :: RelatedItemsUpdate)
+
+-- | Details about the related item you\'re deleting.
+relatedItemsUpdate_itemToRemove :: Lens.Lens' RelatedItemsUpdate (Prelude.Maybe ItemIdentifier)
+relatedItemsUpdate_itemToRemove = Lens.lens (\RelatedItemsUpdate' {itemToRemove} -> itemToRemove) (\s@RelatedItemsUpdate' {} a -> s {itemToRemove = a} :: RelatedItemsUpdate)
+
+instance Prelude.Hashable RelatedItemsUpdate where
+  hashWithSalt _salt RelatedItemsUpdate' {..} =
+    _salt
+      `Prelude.hashWithSalt` itemToAdd
+      `Prelude.hashWithSalt` itemToRemove
+
+instance Prelude.NFData RelatedItemsUpdate where
+  rnf RelatedItemsUpdate' {..} =
+    Prelude.rnf itemToAdd
+      `Prelude.seq` Prelude.rnf itemToRemove
+
+instance Data.ToJSON RelatedItemsUpdate where
+  toJSON RelatedItemsUpdate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("itemToAdd" Data..=) Prelude.<$> itemToAdd,
+            ("itemToRemove" Data..=) Prelude.<$> itemToRemove
+          ]
+      )
diff --git a/gen/Amazonka/SSMIncidents/Types/ReplicationSet.hs b/gen/Amazonka/SSMIncidents/Types/ReplicationSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/ReplicationSet.hs
@@ -0,0 +1,190 @@
+{-# 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.SSMIncidents.Types.ReplicationSet
+-- 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.SSMIncidents.Types.ReplicationSet 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
+import Amazonka.SSMIncidents.Types.RegionInfo
+import Amazonka.SSMIncidents.Types.ReplicationSetStatus
+
+-- | The set of Amazon Web Services Region that your Incident Manager data
+-- will be replicated to and the KMS key used to encrypt the data.
+--
+-- /See:/ 'newReplicationSet' smart constructor.
+data ReplicationSet = ReplicationSet'
+  { -- | The Amazon Resource Name (ARN) of the replication set.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | Details about who created the replication set.
+    createdBy :: Prelude.Text,
+    -- | When the replication set was created.
+    createdTime :: Data.POSIX,
+    -- | Determines if the replication set deletion protection is enabled or not.
+    -- If deletion protection is enabled, you can\'t delete the last Amazon Web
+    -- Services Region in the replication set.
+    deletionProtected :: Prelude.Bool,
+    -- | Who last modified the replication set.
+    lastModifiedBy :: Prelude.Text,
+    -- | When the replication set was last updated.
+    lastModifiedTime :: Data.POSIX,
+    -- | The map between each Amazon Web Services Region in your replication set
+    -- and the KMS key that\'s used to encrypt the data in that Region.
+    regionMap :: Prelude.HashMap Prelude.Text RegionInfo,
+    -- | The status of the replication set. If the replication set is still
+    -- pending, you can\'t use Incident Manager functionality.
+    status :: ReplicationSetStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ReplicationSet' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'replicationSet_arn' - The Amazon Resource Name (ARN) of the replication set.
+--
+-- 'createdBy', 'replicationSet_createdBy' - Details about who created the replication set.
+--
+-- 'createdTime', 'replicationSet_createdTime' - When the replication set was created.
+--
+-- 'deletionProtected', 'replicationSet_deletionProtected' - Determines if the replication set deletion protection is enabled or not.
+-- If deletion protection is enabled, you can\'t delete the last Amazon Web
+-- Services Region in the replication set.
+--
+-- 'lastModifiedBy', 'replicationSet_lastModifiedBy' - Who last modified the replication set.
+--
+-- 'lastModifiedTime', 'replicationSet_lastModifiedTime' - When the replication set was last updated.
+--
+-- 'regionMap', 'replicationSet_regionMap' - The map between each Amazon Web Services Region in your replication set
+-- and the KMS key that\'s used to encrypt the data in that Region.
+--
+-- 'status', 'replicationSet_status' - The status of the replication set. If the replication set is still
+-- pending, you can\'t use Incident Manager functionality.
+newReplicationSet ::
+  -- | 'createdBy'
+  Prelude.Text ->
+  -- | 'createdTime'
+  Prelude.UTCTime ->
+  -- | 'deletionProtected'
+  Prelude.Bool ->
+  -- | 'lastModifiedBy'
+  Prelude.Text ->
+  -- | 'lastModifiedTime'
+  Prelude.UTCTime ->
+  -- | 'status'
+  ReplicationSetStatus ->
+  ReplicationSet
+newReplicationSet
+  pCreatedBy_
+  pCreatedTime_
+  pDeletionProtected_
+  pLastModifiedBy_
+  pLastModifiedTime_
+  pStatus_ =
+    ReplicationSet'
+      { arn = Prelude.Nothing,
+        createdBy = pCreatedBy_,
+        createdTime = Data._Time Lens.# pCreatedTime_,
+        deletionProtected = pDeletionProtected_,
+        lastModifiedBy = pLastModifiedBy_,
+        lastModifiedTime =
+          Data._Time Lens.# pLastModifiedTime_,
+        regionMap = Prelude.mempty,
+        status = pStatus_
+      }
+
+-- | The Amazon Resource Name (ARN) of the replication set.
+replicationSet_arn :: Lens.Lens' ReplicationSet (Prelude.Maybe Prelude.Text)
+replicationSet_arn = Lens.lens (\ReplicationSet' {arn} -> arn) (\s@ReplicationSet' {} a -> s {arn = a} :: ReplicationSet)
+
+-- | Details about who created the replication set.
+replicationSet_createdBy :: Lens.Lens' ReplicationSet Prelude.Text
+replicationSet_createdBy = Lens.lens (\ReplicationSet' {createdBy} -> createdBy) (\s@ReplicationSet' {} a -> s {createdBy = a} :: ReplicationSet)
+
+-- | When the replication set was created.
+replicationSet_createdTime :: Lens.Lens' ReplicationSet Prelude.UTCTime
+replicationSet_createdTime = Lens.lens (\ReplicationSet' {createdTime} -> createdTime) (\s@ReplicationSet' {} a -> s {createdTime = a} :: ReplicationSet) Prelude.. Data._Time
+
+-- | Determines if the replication set deletion protection is enabled or not.
+-- If deletion protection is enabled, you can\'t delete the last Amazon Web
+-- Services Region in the replication set.
+replicationSet_deletionProtected :: Lens.Lens' ReplicationSet Prelude.Bool
+replicationSet_deletionProtected = Lens.lens (\ReplicationSet' {deletionProtected} -> deletionProtected) (\s@ReplicationSet' {} a -> s {deletionProtected = a} :: ReplicationSet)
+
+-- | Who last modified the replication set.
+replicationSet_lastModifiedBy :: Lens.Lens' ReplicationSet Prelude.Text
+replicationSet_lastModifiedBy = Lens.lens (\ReplicationSet' {lastModifiedBy} -> lastModifiedBy) (\s@ReplicationSet' {} a -> s {lastModifiedBy = a} :: ReplicationSet)
+
+-- | When the replication set was last updated.
+replicationSet_lastModifiedTime :: Lens.Lens' ReplicationSet Prelude.UTCTime
+replicationSet_lastModifiedTime = Lens.lens (\ReplicationSet' {lastModifiedTime} -> lastModifiedTime) (\s@ReplicationSet' {} a -> s {lastModifiedTime = a} :: ReplicationSet) Prelude.. Data._Time
+
+-- | The map between each Amazon Web Services Region in your replication set
+-- and the KMS key that\'s used to encrypt the data in that Region.
+replicationSet_regionMap :: Lens.Lens' ReplicationSet (Prelude.HashMap Prelude.Text RegionInfo)
+replicationSet_regionMap = Lens.lens (\ReplicationSet' {regionMap} -> regionMap) (\s@ReplicationSet' {} a -> s {regionMap = a} :: ReplicationSet) Prelude.. Lens.coerced
+
+-- | The status of the replication set. If the replication set is still
+-- pending, you can\'t use Incident Manager functionality.
+replicationSet_status :: Lens.Lens' ReplicationSet ReplicationSetStatus
+replicationSet_status = Lens.lens (\ReplicationSet' {status} -> status) (\s@ReplicationSet' {} a -> s {status = a} :: ReplicationSet)
+
+instance Data.FromJSON ReplicationSet where
+  parseJSON =
+    Data.withObject
+      "ReplicationSet"
+      ( \x ->
+          ReplicationSet'
+            Prelude.<$> (x Data..:? "arn")
+            Prelude.<*> (x Data..: "createdBy")
+            Prelude.<*> (x Data..: "createdTime")
+            Prelude.<*> (x Data..: "deletionProtected")
+            Prelude.<*> (x Data..: "lastModifiedBy")
+            Prelude.<*> (x Data..: "lastModifiedTime")
+            Prelude.<*> (x Data..:? "regionMap" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..: "status")
+      )
+
+instance Prelude.Hashable ReplicationSet where
+  hashWithSalt _salt ReplicationSet' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` createdBy
+      `Prelude.hashWithSalt` createdTime
+      `Prelude.hashWithSalt` deletionProtected
+      `Prelude.hashWithSalt` lastModifiedBy
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` regionMap
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData ReplicationSet where
+  rnf ReplicationSet' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf deletionProtected
+      `Prelude.seq` Prelude.rnf lastModifiedBy
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf regionMap
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/SSMIncidents/Types/ReplicationSetStatus.hs b/gen/Amazonka/SSMIncidents/Types/ReplicationSetStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/ReplicationSetStatus.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.Types.ReplicationSetStatus
+-- 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.SSMIncidents.Types.ReplicationSetStatus
+  ( ReplicationSetStatus
+      ( ..,
+        ReplicationSetStatus_ACTIVE,
+        ReplicationSetStatus_CREATING,
+        ReplicationSetStatus_DELETING,
+        ReplicationSetStatus_FAILED,
+        ReplicationSetStatus_UPDATING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ReplicationSetStatus = ReplicationSetStatus'
+  { fromReplicationSetStatus ::
+      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 ReplicationSetStatus_ACTIVE :: ReplicationSetStatus
+pattern ReplicationSetStatus_ACTIVE = ReplicationSetStatus' "ACTIVE"
+
+pattern ReplicationSetStatus_CREATING :: ReplicationSetStatus
+pattern ReplicationSetStatus_CREATING = ReplicationSetStatus' "CREATING"
+
+pattern ReplicationSetStatus_DELETING :: ReplicationSetStatus
+pattern ReplicationSetStatus_DELETING = ReplicationSetStatus' "DELETING"
+
+pattern ReplicationSetStatus_FAILED :: ReplicationSetStatus
+pattern ReplicationSetStatus_FAILED = ReplicationSetStatus' "FAILED"
+
+pattern ReplicationSetStatus_UPDATING :: ReplicationSetStatus
+pattern ReplicationSetStatus_UPDATING = ReplicationSetStatus' "UPDATING"
+
+{-# COMPLETE
+  ReplicationSetStatus_ACTIVE,
+  ReplicationSetStatus_CREATING,
+  ReplicationSetStatus_DELETING,
+  ReplicationSetStatus_FAILED,
+  ReplicationSetStatus_UPDATING,
+  ReplicationSetStatus'
+  #-}
diff --git a/gen/Amazonka/SSMIncidents/Types/ResourcePolicy.hs b/gen/Amazonka/SSMIncidents/Types/ResourcePolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/ResourcePolicy.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.Types.ResourcePolicy
+-- 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.SSMIncidents.Types.ResourcePolicy where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The resource policy that allows Incident Manager to perform actions on
+-- resources on your behalf.
+--
+-- /See:/ 'newResourcePolicy' smart constructor.
+data ResourcePolicy = ResourcePolicy'
+  { -- | The JSON blob that describes the policy.
+    policyDocument :: Prelude.Text,
+    -- | The ID of the resource policy.
+    policyId :: Prelude.Text,
+    -- | The Amazon Web Services Region that policy allows resources to be used
+    -- in.
+    ramResourceShareRegion :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ResourcePolicy' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'policyDocument', 'resourcePolicy_policyDocument' - The JSON blob that describes the policy.
+--
+-- 'policyId', 'resourcePolicy_policyId' - The ID of the resource policy.
+--
+-- 'ramResourceShareRegion', 'resourcePolicy_ramResourceShareRegion' - The Amazon Web Services Region that policy allows resources to be used
+-- in.
+newResourcePolicy ::
+  -- | 'policyDocument'
+  Prelude.Text ->
+  -- | 'policyId'
+  Prelude.Text ->
+  -- | 'ramResourceShareRegion'
+  Prelude.Text ->
+  ResourcePolicy
+newResourcePolicy
+  pPolicyDocument_
+  pPolicyId_
+  pRamResourceShareRegion_ =
+    ResourcePolicy'
+      { policyDocument = pPolicyDocument_,
+        policyId = pPolicyId_,
+        ramResourceShareRegion = pRamResourceShareRegion_
+      }
+
+-- | The JSON blob that describes the policy.
+resourcePolicy_policyDocument :: Lens.Lens' ResourcePolicy Prelude.Text
+resourcePolicy_policyDocument = Lens.lens (\ResourcePolicy' {policyDocument} -> policyDocument) (\s@ResourcePolicy' {} a -> s {policyDocument = a} :: ResourcePolicy)
+
+-- | The ID of the resource policy.
+resourcePolicy_policyId :: Lens.Lens' ResourcePolicy Prelude.Text
+resourcePolicy_policyId = Lens.lens (\ResourcePolicy' {policyId} -> policyId) (\s@ResourcePolicy' {} a -> s {policyId = a} :: ResourcePolicy)
+
+-- | The Amazon Web Services Region that policy allows resources to be used
+-- in.
+resourcePolicy_ramResourceShareRegion :: Lens.Lens' ResourcePolicy Prelude.Text
+resourcePolicy_ramResourceShareRegion = Lens.lens (\ResourcePolicy' {ramResourceShareRegion} -> ramResourceShareRegion) (\s@ResourcePolicy' {} a -> s {ramResourceShareRegion = a} :: ResourcePolicy)
+
+instance Data.FromJSON ResourcePolicy where
+  parseJSON =
+    Data.withObject
+      "ResourcePolicy"
+      ( \x ->
+          ResourcePolicy'
+            Prelude.<$> (x Data..: "policyDocument")
+            Prelude.<*> (x Data..: "policyId")
+            Prelude.<*> (x Data..: "ramResourceShareRegion")
+      )
+
+instance Prelude.Hashable ResourcePolicy where
+  hashWithSalt _salt ResourcePolicy' {..} =
+    _salt
+      `Prelude.hashWithSalt` policyDocument
+      `Prelude.hashWithSalt` policyId
+      `Prelude.hashWithSalt` ramResourceShareRegion
+
+instance Prelude.NFData ResourcePolicy where
+  rnf ResourcePolicy' {..} =
+    Prelude.rnf policyDocument
+      `Prelude.seq` Prelude.rnf policyId
+      `Prelude.seq` Prelude.rnf ramResourceShareRegion
diff --git a/gen/Amazonka/SSMIncidents/Types/ResponsePlanSummary.hs b/gen/Amazonka/SSMIncidents/Types/ResponsePlanSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/ResponsePlanSummary.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.Types.ResponsePlanSummary
+-- 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.SSMIncidents.Types.ResponsePlanSummary 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
+
+-- | Details of the response plan that are used when creating an incident.
+--
+-- /See:/ 'newResponsePlanSummary' smart constructor.
+data ResponsePlanSummary = ResponsePlanSummary'
+  { -- | The human readable name of the response plan. This can include spaces.
+    displayName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the response plan.
+    arn :: Prelude.Text,
+    -- | The name of the response plan. This can\'t include spaces.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ResponsePlanSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'displayName', 'responsePlanSummary_displayName' - The human readable name of the response plan. This can include spaces.
+--
+-- 'arn', 'responsePlanSummary_arn' - The Amazon Resource Name (ARN) of the response plan.
+--
+-- 'name', 'responsePlanSummary_name' - The name of the response plan. This can\'t include spaces.
+newResponsePlanSummary ::
+  -- | 'arn'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  ResponsePlanSummary
+newResponsePlanSummary pArn_ pName_ =
+  ResponsePlanSummary'
+    { displayName = Prelude.Nothing,
+      arn = pArn_,
+      name = pName_
+    }
+
+-- | The human readable name of the response plan. This can include spaces.
+responsePlanSummary_displayName :: Lens.Lens' ResponsePlanSummary (Prelude.Maybe Prelude.Text)
+responsePlanSummary_displayName = Lens.lens (\ResponsePlanSummary' {displayName} -> displayName) (\s@ResponsePlanSummary' {} a -> s {displayName = a} :: ResponsePlanSummary)
+
+-- | The Amazon Resource Name (ARN) of the response plan.
+responsePlanSummary_arn :: Lens.Lens' ResponsePlanSummary Prelude.Text
+responsePlanSummary_arn = Lens.lens (\ResponsePlanSummary' {arn} -> arn) (\s@ResponsePlanSummary' {} a -> s {arn = a} :: ResponsePlanSummary)
+
+-- | The name of the response plan. This can\'t include spaces.
+responsePlanSummary_name :: Lens.Lens' ResponsePlanSummary Prelude.Text
+responsePlanSummary_name = Lens.lens (\ResponsePlanSummary' {name} -> name) (\s@ResponsePlanSummary' {} a -> s {name = a} :: ResponsePlanSummary)
+
+instance Data.FromJSON ResponsePlanSummary where
+  parseJSON =
+    Data.withObject
+      "ResponsePlanSummary"
+      ( \x ->
+          ResponsePlanSummary'
+            Prelude.<$> (x Data..:? "displayName")
+            Prelude.<*> (x Data..: "arn")
+            Prelude.<*> (x Data..: "name")
+      )
+
+instance Prelude.Hashable ResponsePlanSummary where
+  hashWithSalt _salt ResponsePlanSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` displayName
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData ResponsePlanSummary where
+  rnf ResponsePlanSummary' {..} =
+    Prelude.rnf displayName
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf name
diff --git a/gen/Amazonka/SSMIncidents/Types/SortOrder.hs b/gen/Amazonka/SSMIncidents/Types/SortOrder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/SortOrder.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.Types.SortOrder
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SSMIncidents.Types.SortOrder
+  ( SortOrder
+      ( ..,
+        SortOrder_ASCENDING,
+        SortOrder_DESCENDING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SortOrder = SortOrder'
+  { fromSortOrder ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern SortOrder_ASCENDING :: SortOrder
+pattern SortOrder_ASCENDING = SortOrder' "ASCENDING"
+
+pattern SortOrder_DESCENDING :: SortOrder
+pattern SortOrder_DESCENDING = SortOrder' "DESCENDING"
+
+{-# COMPLETE
+  SortOrder_ASCENDING,
+  SortOrder_DESCENDING,
+  SortOrder'
+  #-}
diff --git a/gen/Amazonka/SSMIncidents/Types/SsmAutomation.hs b/gen/Amazonka/SSMIncidents/Types/SsmAutomation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/SsmAutomation.hs
@@ -0,0 +1,169 @@
+{-# 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.SSMIncidents.Types.SsmAutomation
+-- 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.SSMIncidents.Types.SsmAutomation 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
+import Amazonka.SSMIncidents.Types.DynamicSsmParameterValue
+import Amazonka.SSMIncidents.Types.SsmTargetAccount
+
+-- | Details about the Systems Manager automation document that will be used
+-- as a runbook during an incident.
+--
+-- /See:/ 'newSsmAutomation' smart constructor.
+data SsmAutomation = SsmAutomation'
+  { -- | The automation document\'s version to use when running.
+    documentVersion :: Prelude.Maybe Prelude.Text,
+    -- | The key-value pair to resolve dynamic parameter values when processing a
+    -- Systems Manager Automation runbook.
+    dynamicParameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text DynamicSsmParameterValue),
+    -- | The key-value pair parameters to use when running the automation
+    -- document.
+    parameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text [Prelude.Text]),
+    -- | The account that the automation document will be run in. This can be in
+    -- either the management account or an application account.
+    targetAccount :: Prelude.Maybe SsmTargetAccount,
+    -- | The automation document\'s name.
+    documentName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the role that the automation document
+    -- will assume when running commands.
+    roleArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SsmAutomation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'documentVersion', 'ssmAutomation_documentVersion' - The automation document\'s version to use when running.
+--
+-- 'dynamicParameters', 'ssmAutomation_dynamicParameters' - The key-value pair to resolve dynamic parameter values when processing a
+-- Systems Manager Automation runbook.
+--
+-- 'parameters', 'ssmAutomation_parameters' - The key-value pair parameters to use when running the automation
+-- document.
+--
+-- 'targetAccount', 'ssmAutomation_targetAccount' - The account that the automation document will be run in. This can be in
+-- either the management account or an application account.
+--
+-- 'documentName', 'ssmAutomation_documentName' - The automation document\'s name.
+--
+-- 'roleArn', 'ssmAutomation_roleArn' - The Amazon Resource Name (ARN) of the role that the automation document
+-- will assume when running commands.
+newSsmAutomation ::
+  -- | 'documentName'
+  Prelude.Text ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  SsmAutomation
+newSsmAutomation pDocumentName_ pRoleArn_ =
+  SsmAutomation'
+    { documentVersion = Prelude.Nothing,
+      dynamicParameters = Prelude.Nothing,
+      parameters = Prelude.Nothing,
+      targetAccount = Prelude.Nothing,
+      documentName = pDocumentName_,
+      roleArn = pRoleArn_
+    }
+
+-- | The automation document\'s version to use when running.
+ssmAutomation_documentVersion :: Lens.Lens' SsmAutomation (Prelude.Maybe Prelude.Text)
+ssmAutomation_documentVersion = Lens.lens (\SsmAutomation' {documentVersion} -> documentVersion) (\s@SsmAutomation' {} a -> s {documentVersion = a} :: SsmAutomation)
+
+-- | The key-value pair to resolve dynamic parameter values when processing a
+-- Systems Manager Automation runbook.
+ssmAutomation_dynamicParameters :: Lens.Lens' SsmAutomation (Prelude.Maybe (Prelude.HashMap Prelude.Text DynamicSsmParameterValue))
+ssmAutomation_dynamicParameters = Lens.lens (\SsmAutomation' {dynamicParameters} -> dynamicParameters) (\s@SsmAutomation' {} a -> s {dynamicParameters = a} :: SsmAutomation) Prelude.. Lens.mapping Lens.coerced
+
+-- | The key-value pair parameters to use when running the automation
+-- document.
+ssmAutomation_parameters :: Lens.Lens' SsmAutomation (Prelude.Maybe (Prelude.HashMap Prelude.Text [Prelude.Text]))
+ssmAutomation_parameters = Lens.lens (\SsmAutomation' {parameters} -> parameters) (\s@SsmAutomation' {} a -> s {parameters = a} :: SsmAutomation) Prelude.. Lens.mapping Lens.coerced
+
+-- | The account that the automation document will be run in. This can be in
+-- either the management account or an application account.
+ssmAutomation_targetAccount :: Lens.Lens' SsmAutomation (Prelude.Maybe SsmTargetAccount)
+ssmAutomation_targetAccount = Lens.lens (\SsmAutomation' {targetAccount} -> targetAccount) (\s@SsmAutomation' {} a -> s {targetAccount = a} :: SsmAutomation)
+
+-- | The automation document\'s name.
+ssmAutomation_documentName :: Lens.Lens' SsmAutomation Prelude.Text
+ssmAutomation_documentName = Lens.lens (\SsmAutomation' {documentName} -> documentName) (\s@SsmAutomation' {} a -> s {documentName = a} :: SsmAutomation)
+
+-- | The Amazon Resource Name (ARN) of the role that the automation document
+-- will assume when running commands.
+ssmAutomation_roleArn :: Lens.Lens' SsmAutomation Prelude.Text
+ssmAutomation_roleArn = Lens.lens (\SsmAutomation' {roleArn} -> roleArn) (\s@SsmAutomation' {} a -> s {roleArn = a} :: SsmAutomation)
+
+instance Data.FromJSON SsmAutomation where
+  parseJSON =
+    Data.withObject
+      "SsmAutomation"
+      ( \x ->
+          SsmAutomation'
+            Prelude.<$> (x Data..:? "documentVersion")
+            Prelude.<*> ( x
+                            Data..:? "dynamicParameters"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "parameters" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "targetAccount")
+            Prelude.<*> (x Data..: "documentName")
+            Prelude.<*> (x Data..: "roleArn")
+      )
+
+instance Prelude.Hashable SsmAutomation where
+  hashWithSalt _salt SsmAutomation' {..} =
+    _salt
+      `Prelude.hashWithSalt` documentVersion
+      `Prelude.hashWithSalt` dynamicParameters
+      `Prelude.hashWithSalt` parameters
+      `Prelude.hashWithSalt` targetAccount
+      `Prelude.hashWithSalt` documentName
+      `Prelude.hashWithSalt` roleArn
+
+instance Prelude.NFData SsmAutomation where
+  rnf SsmAutomation' {..} =
+    Prelude.rnf documentVersion
+      `Prelude.seq` Prelude.rnf dynamicParameters
+      `Prelude.seq` Prelude.rnf parameters
+      `Prelude.seq` Prelude.rnf targetAccount
+      `Prelude.seq` Prelude.rnf documentName
+      `Prelude.seq` Prelude.rnf roleArn
+
+instance Data.ToJSON SsmAutomation where
+  toJSON SsmAutomation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("documentVersion" Data..=)
+              Prelude.<$> documentVersion,
+            ("dynamicParameters" Data..=)
+              Prelude.<$> dynamicParameters,
+            ("parameters" Data..=) Prelude.<$> parameters,
+            ("targetAccount" Data..=) Prelude.<$> targetAccount,
+            Prelude.Just ("documentName" Data..= documentName),
+            Prelude.Just ("roleArn" Data..= roleArn)
+          ]
+      )
diff --git a/gen/Amazonka/SSMIncidents/Types/SsmTargetAccount.hs b/gen/Amazonka/SSMIncidents/Types/SsmTargetAccount.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/SsmTargetAccount.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.SSMIncidents.Types.SsmTargetAccount
+-- 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.SSMIncidents.Types.SsmTargetAccount
+  ( SsmTargetAccount
+      ( ..,
+        SsmTargetAccount_IMPACTED_ACCOUNT,
+        SsmTargetAccount_RESPONSE_PLAN_OWNER_ACCOUNT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SsmTargetAccount = SsmTargetAccount'
+  { fromSsmTargetAccount ::
+      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 SsmTargetAccount_IMPACTED_ACCOUNT :: SsmTargetAccount
+pattern SsmTargetAccount_IMPACTED_ACCOUNT = SsmTargetAccount' "IMPACTED_ACCOUNT"
+
+pattern SsmTargetAccount_RESPONSE_PLAN_OWNER_ACCOUNT :: SsmTargetAccount
+pattern SsmTargetAccount_RESPONSE_PLAN_OWNER_ACCOUNT = SsmTargetAccount' "RESPONSE_PLAN_OWNER_ACCOUNT"
+
+{-# COMPLETE
+  SsmTargetAccount_IMPACTED_ACCOUNT,
+  SsmTargetAccount_RESPONSE_PLAN_OWNER_ACCOUNT,
+  SsmTargetAccount'
+  #-}
diff --git a/gen/Amazonka/SSMIncidents/Types/TimelineEvent.hs b/gen/Amazonka/SSMIncidents/Types/TimelineEvent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/TimelineEvent.hs
@@ -0,0 +1,173 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.Types.TimelineEvent
+-- 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.SSMIncidents.Types.TimelineEvent 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
+import Amazonka.SSMIncidents.Types.EventReference
+
+-- | A significant event that happened during the incident.
+--
+-- /See:/ 'newTimelineEvent' smart constructor.
+data TimelineEvent = TimelineEvent'
+  { -- | A list of references in a @TimelineEvent@.
+    eventReferences :: Prelude.Maybe [EventReference],
+    -- | A short description of the event.
+    eventData :: Prelude.Text,
+    -- | The ID of the timeline event.
+    eventId :: Prelude.Text,
+    -- | The time that the event occurred.
+    eventTime :: Data.POSIX,
+    -- | The type of event that occurred. Currently Incident Manager supports
+    -- only the @Custom Event@ type.
+    eventType :: Prelude.Text,
+    -- | The time that the timeline event was last updated.
+    eventUpdatedTime :: Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the incident that the event occurred
+    -- during.
+    incidentRecordArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TimelineEvent' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'eventReferences', 'timelineEvent_eventReferences' - A list of references in a @TimelineEvent@.
+--
+-- 'eventData', 'timelineEvent_eventData' - A short description of the event.
+--
+-- 'eventId', 'timelineEvent_eventId' - The ID of the timeline event.
+--
+-- 'eventTime', 'timelineEvent_eventTime' - The time that the event occurred.
+--
+-- 'eventType', 'timelineEvent_eventType' - The type of event that occurred. Currently Incident Manager supports
+-- only the @Custom Event@ type.
+--
+-- 'eventUpdatedTime', 'timelineEvent_eventUpdatedTime' - The time that the timeline event was last updated.
+--
+-- 'incidentRecordArn', 'timelineEvent_incidentRecordArn' - The Amazon Resource Name (ARN) of the incident that the event occurred
+-- during.
+newTimelineEvent ::
+  -- | 'eventData'
+  Prelude.Text ->
+  -- | 'eventId'
+  Prelude.Text ->
+  -- | 'eventTime'
+  Prelude.UTCTime ->
+  -- | 'eventType'
+  Prelude.Text ->
+  -- | 'eventUpdatedTime'
+  Prelude.UTCTime ->
+  -- | 'incidentRecordArn'
+  Prelude.Text ->
+  TimelineEvent
+newTimelineEvent
+  pEventData_
+  pEventId_
+  pEventTime_
+  pEventType_
+  pEventUpdatedTime_
+  pIncidentRecordArn_ =
+    TimelineEvent'
+      { eventReferences = Prelude.Nothing,
+        eventData = pEventData_,
+        eventId = pEventId_,
+        eventTime = Data._Time Lens.# pEventTime_,
+        eventType = pEventType_,
+        eventUpdatedTime =
+          Data._Time Lens.# pEventUpdatedTime_,
+        incidentRecordArn = pIncidentRecordArn_
+      }
+
+-- | A list of references in a @TimelineEvent@.
+timelineEvent_eventReferences :: Lens.Lens' TimelineEvent (Prelude.Maybe [EventReference])
+timelineEvent_eventReferences = Lens.lens (\TimelineEvent' {eventReferences} -> eventReferences) (\s@TimelineEvent' {} a -> s {eventReferences = a} :: TimelineEvent) Prelude.. Lens.mapping Lens.coerced
+
+-- | A short description of the event.
+timelineEvent_eventData :: Lens.Lens' TimelineEvent Prelude.Text
+timelineEvent_eventData = Lens.lens (\TimelineEvent' {eventData} -> eventData) (\s@TimelineEvent' {} a -> s {eventData = a} :: TimelineEvent)
+
+-- | The ID of the timeline event.
+timelineEvent_eventId :: Lens.Lens' TimelineEvent Prelude.Text
+timelineEvent_eventId = Lens.lens (\TimelineEvent' {eventId} -> eventId) (\s@TimelineEvent' {} a -> s {eventId = a} :: TimelineEvent)
+
+-- | The time that the event occurred.
+timelineEvent_eventTime :: Lens.Lens' TimelineEvent Prelude.UTCTime
+timelineEvent_eventTime = Lens.lens (\TimelineEvent' {eventTime} -> eventTime) (\s@TimelineEvent' {} a -> s {eventTime = a} :: TimelineEvent) Prelude.. Data._Time
+
+-- | The type of event that occurred. Currently Incident Manager supports
+-- only the @Custom Event@ type.
+timelineEvent_eventType :: Lens.Lens' TimelineEvent Prelude.Text
+timelineEvent_eventType = Lens.lens (\TimelineEvent' {eventType} -> eventType) (\s@TimelineEvent' {} a -> s {eventType = a} :: TimelineEvent)
+
+-- | The time that the timeline event was last updated.
+timelineEvent_eventUpdatedTime :: Lens.Lens' TimelineEvent Prelude.UTCTime
+timelineEvent_eventUpdatedTime = Lens.lens (\TimelineEvent' {eventUpdatedTime} -> eventUpdatedTime) (\s@TimelineEvent' {} a -> s {eventUpdatedTime = a} :: TimelineEvent) Prelude.. Data._Time
+
+-- | The Amazon Resource Name (ARN) of the incident that the event occurred
+-- during.
+timelineEvent_incidentRecordArn :: Lens.Lens' TimelineEvent Prelude.Text
+timelineEvent_incidentRecordArn = Lens.lens (\TimelineEvent' {incidentRecordArn} -> incidentRecordArn) (\s@TimelineEvent' {} a -> s {incidentRecordArn = a} :: TimelineEvent)
+
+instance Data.FromJSON TimelineEvent where
+  parseJSON =
+    Data.withObject
+      "TimelineEvent"
+      ( \x ->
+          TimelineEvent'
+            Prelude.<$> ( x
+                            Data..:? "eventReferences"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..: "eventData")
+            Prelude.<*> (x Data..: "eventId")
+            Prelude.<*> (x Data..: "eventTime")
+            Prelude.<*> (x Data..: "eventType")
+            Prelude.<*> (x Data..: "eventUpdatedTime")
+            Prelude.<*> (x Data..: "incidentRecordArn")
+      )
+
+instance Prelude.Hashable TimelineEvent where
+  hashWithSalt _salt TimelineEvent' {..} =
+    _salt
+      `Prelude.hashWithSalt` eventReferences
+      `Prelude.hashWithSalt` eventData
+      `Prelude.hashWithSalt` eventId
+      `Prelude.hashWithSalt` eventTime
+      `Prelude.hashWithSalt` eventType
+      `Prelude.hashWithSalt` eventUpdatedTime
+      `Prelude.hashWithSalt` incidentRecordArn
+
+instance Prelude.NFData TimelineEvent where
+  rnf TimelineEvent' {..} =
+    Prelude.rnf eventReferences
+      `Prelude.seq` Prelude.rnf eventData
+      `Prelude.seq` Prelude.rnf eventId
+      `Prelude.seq` Prelude.rnf eventTime
+      `Prelude.seq` Prelude.rnf eventType
+      `Prelude.seq` Prelude.rnf eventUpdatedTime
+      `Prelude.seq` Prelude.rnf incidentRecordArn
diff --git a/gen/Amazonka/SSMIncidents/Types/TimelineEventSort.hs b/gen/Amazonka/SSMIncidents/Types/TimelineEventSort.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/TimelineEventSort.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.Types.TimelineEventSort
+-- 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.SSMIncidents.Types.TimelineEventSort
+  ( TimelineEventSort
+      ( ..,
+        TimelineEventSort_EVENT_TIME
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TimelineEventSort = TimelineEventSort'
+  { fromTimelineEventSort ::
+      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 TimelineEventSort_EVENT_TIME :: TimelineEventSort
+pattern TimelineEventSort_EVENT_TIME = TimelineEventSort' "EVENT_TIME"
+
+{-# COMPLETE
+  TimelineEventSort_EVENT_TIME,
+  TimelineEventSort'
+  #-}
diff --git a/gen/Amazonka/SSMIncidents/Types/TriggerDetails.hs b/gen/Amazonka/SSMIncidents/Types/TriggerDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/TriggerDetails.hs
@@ -0,0 +1,127 @@
+{-# 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.SSMIncidents.Types.TriggerDetails
+-- 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.SSMIncidents.Types.TriggerDetails 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
+
+-- | Details about what caused the incident to be created in Incident
+-- Manager.
+--
+-- /See:/ 'newTriggerDetails' smart constructor.
+data TriggerDetails = TriggerDetails'
+  { -- | Raw data passed from either Amazon EventBridge, Amazon CloudWatch, or
+    -- Incident Manager when an incident is created.
+    rawData :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the source that detected the incident.
+    triggerArn :: Prelude.Maybe Prelude.Text,
+    -- | Identifies the service that sourced the event. All events sourced from
+    -- within Amazon Web Services begin with \"@aws.@\" Customer-generated
+    -- events can have any value here, as long as it doesn\'t begin with
+    -- \"@aws.@\" We recommend the use of Java package-name style reverse
+    -- domain-name strings.
+    source :: Prelude.Text,
+    -- | The time that the incident was detected.
+    timestamp :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TriggerDetails' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'rawData', 'triggerDetails_rawData' - Raw data passed from either Amazon EventBridge, Amazon CloudWatch, or
+-- Incident Manager when an incident is created.
+--
+-- 'triggerArn', 'triggerDetails_triggerArn' - The Amazon Resource Name (ARN) of the source that detected the incident.
+--
+-- 'source', 'triggerDetails_source' - Identifies the service that sourced the event. All events sourced from
+-- within Amazon Web Services begin with \"@aws.@\" Customer-generated
+-- events can have any value here, as long as it doesn\'t begin with
+-- \"@aws.@\" We recommend the use of Java package-name style reverse
+-- domain-name strings.
+--
+-- 'timestamp', 'triggerDetails_timestamp' - The time that the incident was detected.
+newTriggerDetails ::
+  -- | 'source'
+  Prelude.Text ->
+  -- | 'timestamp'
+  Prelude.UTCTime ->
+  TriggerDetails
+newTriggerDetails pSource_ pTimestamp_ =
+  TriggerDetails'
+    { rawData = Prelude.Nothing,
+      triggerArn = Prelude.Nothing,
+      source = pSource_,
+      timestamp = Data._Time Lens.# pTimestamp_
+    }
+
+-- | Raw data passed from either Amazon EventBridge, Amazon CloudWatch, or
+-- Incident Manager when an incident is created.
+triggerDetails_rawData :: Lens.Lens' TriggerDetails (Prelude.Maybe Prelude.Text)
+triggerDetails_rawData = Lens.lens (\TriggerDetails' {rawData} -> rawData) (\s@TriggerDetails' {} a -> s {rawData = a} :: TriggerDetails)
+
+-- | The Amazon Resource Name (ARN) of the source that detected the incident.
+triggerDetails_triggerArn :: Lens.Lens' TriggerDetails (Prelude.Maybe Prelude.Text)
+triggerDetails_triggerArn = Lens.lens (\TriggerDetails' {triggerArn} -> triggerArn) (\s@TriggerDetails' {} a -> s {triggerArn = a} :: TriggerDetails)
+
+-- | Identifies the service that sourced the event. All events sourced from
+-- within Amazon Web Services begin with \"@aws.@\" Customer-generated
+-- events can have any value here, as long as it doesn\'t begin with
+-- \"@aws.@\" We recommend the use of Java package-name style reverse
+-- domain-name strings.
+triggerDetails_source :: Lens.Lens' TriggerDetails Prelude.Text
+triggerDetails_source = Lens.lens (\TriggerDetails' {source} -> source) (\s@TriggerDetails' {} a -> s {source = a} :: TriggerDetails)
+
+-- | The time that the incident was detected.
+triggerDetails_timestamp :: Lens.Lens' TriggerDetails Prelude.UTCTime
+triggerDetails_timestamp = Lens.lens (\TriggerDetails' {timestamp} -> timestamp) (\s@TriggerDetails' {} a -> s {timestamp = a} :: TriggerDetails) Prelude.. Data._Time
+
+instance Prelude.Hashable TriggerDetails where
+  hashWithSalt _salt TriggerDetails' {..} =
+    _salt
+      `Prelude.hashWithSalt` rawData
+      `Prelude.hashWithSalt` triggerArn
+      `Prelude.hashWithSalt` source
+      `Prelude.hashWithSalt` timestamp
+
+instance Prelude.NFData TriggerDetails where
+  rnf TriggerDetails' {..} =
+    Prelude.rnf rawData
+      `Prelude.seq` Prelude.rnf triggerArn
+      `Prelude.seq` Prelude.rnf source
+      `Prelude.seq` Prelude.rnf timestamp
+
+instance Data.ToJSON TriggerDetails where
+  toJSON TriggerDetails' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("rawData" Data..=) Prelude.<$> rawData,
+            ("triggerArn" Data..=) Prelude.<$> triggerArn,
+            Prelude.Just ("source" Data..= source),
+            Prelude.Just ("timestamp" Data..= timestamp)
+          ]
+      )
diff --git a/gen/Amazonka/SSMIncidents/Types/UpdateReplicationSetAction.hs b/gen/Amazonka/SSMIncidents/Types/UpdateReplicationSetAction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/UpdateReplicationSetAction.hs
@@ -0,0 +1,94 @@
+{-# 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.SSMIncidents.Types.UpdateReplicationSetAction
+-- 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.SSMIncidents.Types.UpdateReplicationSetAction 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
+import Amazonka.SSMIncidents.Types.AddRegionAction
+import Amazonka.SSMIncidents.Types.DeleteRegionAction
+
+-- | Details used when updating the replication set.
+--
+-- /See:/ 'newUpdateReplicationSetAction' smart constructor.
+data UpdateReplicationSetAction = UpdateReplicationSetAction'
+  { -- | Details about the Amazon Web Services Region that you\'re adding to the
+    -- replication set.
+    addRegionAction :: Prelude.Maybe AddRegionAction,
+    -- | Details about the Amazon Web Services Region that you\'re deleting to
+    -- the replication set.
+    deleteRegionAction :: Prelude.Maybe DeleteRegionAction
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateReplicationSetAction' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'addRegionAction', 'updateReplicationSetAction_addRegionAction' - Details about the Amazon Web Services Region that you\'re adding to the
+-- replication set.
+--
+-- 'deleteRegionAction', 'updateReplicationSetAction_deleteRegionAction' - Details about the Amazon Web Services Region that you\'re deleting to
+-- the replication set.
+newUpdateReplicationSetAction ::
+  UpdateReplicationSetAction
+newUpdateReplicationSetAction =
+  UpdateReplicationSetAction'
+    { addRegionAction =
+        Prelude.Nothing,
+      deleteRegionAction = Prelude.Nothing
+    }
+
+-- | Details about the Amazon Web Services Region that you\'re adding to the
+-- replication set.
+updateReplicationSetAction_addRegionAction :: Lens.Lens' UpdateReplicationSetAction (Prelude.Maybe AddRegionAction)
+updateReplicationSetAction_addRegionAction = Lens.lens (\UpdateReplicationSetAction' {addRegionAction} -> addRegionAction) (\s@UpdateReplicationSetAction' {} a -> s {addRegionAction = a} :: UpdateReplicationSetAction)
+
+-- | Details about the Amazon Web Services Region that you\'re deleting to
+-- the replication set.
+updateReplicationSetAction_deleteRegionAction :: Lens.Lens' UpdateReplicationSetAction (Prelude.Maybe DeleteRegionAction)
+updateReplicationSetAction_deleteRegionAction = Lens.lens (\UpdateReplicationSetAction' {deleteRegionAction} -> deleteRegionAction) (\s@UpdateReplicationSetAction' {} a -> s {deleteRegionAction = a} :: UpdateReplicationSetAction)
+
+instance Prelude.Hashable UpdateReplicationSetAction where
+  hashWithSalt _salt UpdateReplicationSetAction' {..} =
+    _salt
+      `Prelude.hashWithSalt` addRegionAction
+      `Prelude.hashWithSalt` deleteRegionAction
+
+instance Prelude.NFData UpdateReplicationSetAction where
+  rnf UpdateReplicationSetAction' {..} =
+    Prelude.rnf addRegionAction
+      `Prelude.seq` Prelude.rnf deleteRegionAction
+
+instance Data.ToJSON UpdateReplicationSetAction where
+  toJSON UpdateReplicationSetAction' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("addRegionAction" Data..=)
+              Prelude.<$> addRegionAction,
+            ("deleteRegionAction" Data..=)
+              Prelude.<$> deleteRegionAction
+          ]
+      )
diff --git a/gen/Amazonka/SSMIncidents/Types/VariableType.hs b/gen/Amazonka/SSMIncidents/Types/VariableType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Types/VariableType.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.SSMIncidents.Types.VariableType
+-- 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.SSMIncidents.Types.VariableType
+  ( VariableType
+      ( ..,
+        VariableType_INCIDENT_RECORD_ARN,
+        VariableType_INVOLVED_RESOURCES
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype VariableType = VariableType'
+  { fromVariableType ::
+      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 VariableType_INCIDENT_RECORD_ARN :: VariableType
+pattern VariableType_INCIDENT_RECORD_ARN = VariableType' "INCIDENT_RECORD_ARN"
+
+pattern VariableType_INVOLVED_RESOURCES :: VariableType
+pattern VariableType_INVOLVED_RESOURCES = VariableType' "INVOLVED_RESOURCES"
+
+{-# COMPLETE
+  VariableType_INCIDENT_RECORD_ARN,
+  VariableType_INVOLVED_RESOURCES,
+  VariableType'
+  #-}
diff --git a/gen/Amazonka/SSMIncidents/UntagResource.hs b/gen/Amazonka/SSMIncidents/UntagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/UntagResource.hs
@@ -0,0 +1,166 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.UntagResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes a tag from a resource.
+module Amazonka.SSMIncidents.UntagResource
+  ( -- * Creating a Request
+    UntagResource (..),
+    newUntagResource,
+
+    -- * Request Lenses
+    untagResource_resourceArn,
+    untagResource_tagKeys,
+
+    -- * Destructuring the Response
+    UntagResourceResponse (..),
+    newUntagResourceResponse,
+
+    -- * Response Lenses
+    untagResourceResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SSMIncidents.Types
+
+-- | /See:/ 'newUntagResource' smart constructor.
+data UntagResource = UntagResource'
+  { -- | The Amazon Resource Name (ARN) of the response plan you\'re removing a
+    -- tag from.
+    resourceArn :: Prelude.Text,
+    -- | The name of the tag to remove from the response plan.
+    tagKeys :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'untagResource_resourceArn' - The Amazon Resource Name (ARN) of the response plan you\'re removing a
+-- tag from.
+--
+-- 'tagKeys', 'untagResource_tagKeys' - The name of the tag to remove from the response plan.
+newUntagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  -- | 'tagKeys'
+  Prelude.NonEmpty Prelude.Text ->
+  UntagResource
+newUntagResource pResourceArn_ pTagKeys_ =
+  UntagResource'
+    { resourceArn = pResourceArn_,
+      tagKeys = Lens.coerced Lens.# pTagKeys_
+    }
+
+-- | The Amazon Resource Name (ARN) of the response plan you\'re removing a
+-- tag from.
+untagResource_resourceArn :: Lens.Lens' UntagResource Prelude.Text
+untagResource_resourceArn = Lens.lens (\UntagResource' {resourceArn} -> resourceArn) (\s@UntagResource' {} a -> s {resourceArn = a} :: UntagResource)
+
+-- | The name of the tag to remove from the response plan.
+untagResource_tagKeys :: Lens.Lens' UntagResource (Prelude.NonEmpty Prelude.Text)
+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest UntagResource where
+  type
+    AWSResponse UntagResource =
+      UntagResourceResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UntagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UntagResource where
+  hashWithSalt _salt UntagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` tagKeys
+
+instance Prelude.NFData UntagResource where
+  rnf UntagResource' {..} =
+    Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf tagKeys
+
+instance Data.ToHeaders UntagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath UntagResource where
+  toPath UntagResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery UntagResource where
+  toQuery UntagResource' {..} =
+    Prelude.mconcat
+      ["tagKeys" Data.=: Data.toQueryList "member" tagKeys]
+
+-- | /See:/ 'newUntagResourceResponse' smart constructor.
+data UntagResourceResponse = UntagResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'untagResourceResponse_httpStatus' - The response's http status code.
+newUntagResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UntagResourceResponse
+newUntagResourceResponse pHttpStatus_ =
+  UntagResourceResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+untagResourceResponse_httpStatus :: Lens.Lens' UntagResourceResponse Prelude.Int
+untagResourceResponse_httpStatus = Lens.lens (\UntagResourceResponse' {httpStatus} -> httpStatus) (\s@UntagResourceResponse' {} a -> s {httpStatus = a} :: UntagResourceResponse)
+
+instance Prelude.NFData UntagResourceResponse where
+  rnf UntagResourceResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SSMIncidents/UpdateDeletionProtection.hs b/gen/Amazonka/SSMIncidents/UpdateDeletionProtection.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/UpdateDeletionProtection.hs
@@ -0,0 +1,194 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.UpdateDeletionProtection
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Update deletion protection to either allow or deny deletion of the final
+-- Region in a replication set.
+module Amazonka.SSMIncidents.UpdateDeletionProtection
+  ( -- * Creating a Request
+    UpdateDeletionProtection (..),
+    newUpdateDeletionProtection,
+
+    -- * Request Lenses
+    updateDeletionProtection_clientToken,
+    updateDeletionProtection_arn,
+    updateDeletionProtection_deletionProtected,
+
+    -- * Destructuring the Response
+    UpdateDeletionProtectionResponse (..),
+    newUpdateDeletionProtectionResponse,
+
+    -- * Response Lenses
+    updateDeletionProtectionResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SSMIncidents.Types
+
+-- | /See:/ 'newUpdateDeletionProtection' smart constructor.
+data UpdateDeletionProtection = UpdateDeletionProtection'
+  { -- | A token that ensures that the operation is called only once with the
+    -- specified details.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the replication set to update.
+    arn :: Prelude.Text,
+    -- | Specifies if deletion protection is turned on or off in your account.
+    deletionProtected :: Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateDeletionProtection' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientToken', 'updateDeletionProtection_clientToken' - A token that ensures that the operation is called only once with the
+-- specified details.
+--
+-- 'arn', 'updateDeletionProtection_arn' - The Amazon Resource Name (ARN) of the replication set to update.
+--
+-- 'deletionProtected', 'updateDeletionProtection_deletionProtected' - Specifies if deletion protection is turned on or off in your account.
+newUpdateDeletionProtection ::
+  -- | 'arn'
+  Prelude.Text ->
+  -- | 'deletionProtected'
+  Prelude.Bool ->
+  UpdateDeletionProtection
+newUpdateDeletionProtection pArn_ pDeletionProtected_ =
+  UpdateDeletionProtection'
+    { clientToken =
+        Prelude.Nothing,
+      arn = pArn_,
+      deletionProtected = pDeletionProtected_
+    }
+
+-- | A token that ensures that the operation is called only once with the
+-- specified details.
+updateDeletionProtection_clientToken :: Lens.Lens' UpdateDeletionProtection (Prelude.Maybe Prelude.Text)
+updateDeletionProtection_clientToken = Lens.lens (\UpdateDeletionProtection' {clientToken} -> clientToken) (\s@UpdateDeletionProtection' {} a -> s {clientToken = a} :: UpdateDeletionProtection)
+
+-- | The Amazon Resource Name (ARN) of the replication set to update.
+updateDeletionProtection_arn :: Lens.Lens' UpdateDeletionProtection Prelude.Text
+updateDeletionProtection_arn = Lens.lens (\UpdateDeletionProtection' {arn} -> arn) (\s@UpdateDeletionProtection' {} a -> s {arn = a} :: UpdateDeletionProtection)
+
+-- | Specifies if deletion protection is turned on or off in your account.
+updateDeletionProtection_deletionProtected :: Lens.Lens' UpdateDeletionProtection Prelude.Bool
+updateDeletionProtection_deletionProtected = Lens.lens (\UpdateDeletionProtection' {deletionProtected} -> deletionProtected) (\s@UpdateDeletionProtection' {} a -> s {deletionProtected = a} :: UpdateDeletionProtection)
+
+instance Core.AWSRequest UpdateDeletionProtection where
+  type
+    AWSResponse UpdateDeletionProtection =
+      UpdateDeletionProtectionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UpdateDeletionProtectionResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateDeletionProtection where
+  hashWithSalt _salt UpdateDeletionProtection' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` deletionProtected
+
+instance Prelude.NFData UpdateDeletionProtection where
+  rnf UpdateDeletionProtection' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf deletionProtected
+
+instance Data.ToHeaders UpdateDeletionProtection where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateDeletionProtection where
+  toJSON UpdateDeletionProtection' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("clientToken" Data..=) Prelude.<$> clientToken,
+            Prelude.Just ("arn" Data..= arn),
+            Prelude.Just
+              ("deletionProtected" Data..= deletionProtected)
+          ]
+      )
+
+instance Data.ToPath UpdateDeletionProtection where
+  toPath = Prelude.const "/updateDeletionProtection"
+
+instance Data.ToQuery UpdateDeletionProtection where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateDeletionProtectionResponse' smart constructor.
+data UpdateDeletionProtectionResponse = UpdateDeletionProtectionResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateDeletionProtectionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'updateDeletionProtectionResponse_httpStatus' - The response's http status code.
+newUpdateDeletionProtectionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateDeletionProtectionResponse
+newUpdateDeletionProtectionResponse pHttpStatus_ =
+  UpdateDeletionProtectionResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+updateDeletionProtectionResponse_httpStatus :: Lens.Lens' UpdateDeletionProtectionResponse Prelude.Int
+updateDeletionProtectionResponse_httpStatus = Lens.lens (\UpdateDeletionProtectionResponse' {httpStatus} -> httpStatus) (\s@UpdateDeletionProtectionResponse' {} a -> s {httpStatus = a} :: UpdateDeletionProtectionResponse)
+
+instance
+  Prelude.NFData
+    UpdateDeletionProtectionResponse
+  where
+  rnf UpdateDeletionProtectionResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SSMIncidents/UpdateIncidentRecord.hs b/gen/Amazonka/SSMIncidents/UpdateIncidentRecord.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/UpdateIncidentRecord.hs
@@ -0,0 +1,319 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.UpdateIncidentRecord
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Update the details of an incident record. You can use this operation to
+-- update an incident record from the defined chat channel. For more
+-- information about using actions in chat channels, see
+-- <https://docs.aws.amazon.com/incident-manager/latest/userguide/chat.html#chat-interact Interacting through chat>.
+module Amazonka.SSMIncidents.UpdateIncidentRecord
+  ( -- * Creating a Request
+    UpdateIncidentRecord (..),
+    newUpdateIncidentRecord,
+
+    -- * Request Lenses
+    updateIncidentRecord_chatChannel,
+    updateIncidentRecord_clientToken,
+    updateIncidentRecord_impact,
+    updateIncidentRecord_notificationTargets,
+    updateIncidentRecord_status,
+    updateIncidentRecord_summary,
+    updateIncidentRecord_title,
+    updateIncidentRecord_arn,
+
+    -- * Destructuring the Response
+    UpdateIncidentRecordResponse (..),
+    newUpdateIncidentRecordResponse,
+
+    -- * Response Lenses
+    updateIncidentRecordResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SSMIncidents.Types
+
+-- | /See:/ 'newUpdateIncidentRecord' smart constructor.
+data UpdateIncidentRecord = UpdateIncidentRecord'
+  { -- | The Chatbot chat channel where responders can collaborate.
+    chatChannel :: Prelude.Maybe ChatChannel,
+    -- | A token that ensures that the operation is called only once with the
+    -- specified details.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | Defines the impact of the incident to customers and applications.
+    -- Providing an impact overwrites the impact provided by the response plan.
+    --
+    -- __Possible impacts:__
+    --
+    -- -   @1@ - Critical impact, full application failure that impacts many to
+    --     all customers.
+    --
+    -- -   @2@ - High impact, partial application failure with impact to many
+    --     customers.
+    --
+    -- -   @3@ - Medium impact, the application is providing reduced service to
+    --     customers.
+    --
+    -- -   @4@ - Low impact, customer aren\'t impacted by the problem yet.
+    --
+    -- -   @5@ - No impact, customers aren\'t currently impacted but urgent
+    --     action is needed to avoid impact.
+    impact :: Prelude.Maybe Prelude.Natural,
+    -- | The Amazon SNS targets that are notified when updates are made to an
+    -- incident.
+    --
+    -- Using multiple SNS topics creates redundancy in the event that a Region
+    -- is down during the incident.
+    notificationTargets :: Prelude.Maybe [NotificationTargetItem],
+    -- | The status of the incident. An incident can be @Open@ or @Resolved@.
+    status :: Prelude.Maybe IncidentRecordStatus,
+    -- | A longer description of what occurred during the incident.
+    summary :: Prelude.Maybe Prelude.Text,
+    -- | A brief description of the incident.
+    title :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the incident record you are updating.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateIncidentRecord' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chatChannel', 'updateIncidentRecord_chatChannel' - The Chatbot chat channel where responders can collaborate.
+--
+-- 'clientToken', 'updateIncidentRecord_clientToken' - A token that ensures that the operation is called only once with the
+-- specified details.
+--
+-- 'impact', 'updateIncidentRecord_impact' - Defines the impact of the incident to customers and applications.
+-- Providing an impact overwrites the impact provided by the response plan.
+--
+-- __Possible impacts:__
+--
+-- -   @1@ - Critical impact, full application failure that impacts many to
+--     all customers.
+--
+-- -   @2@ - High impact, partial application failure with impact to many
+--     customers.
+--
+-- -   @3@ - Medium impact, the application is providing reduced service to
+--     customers.
+--
+-- -   @4@ - Low impact, customer aren\'t impacted by the problem yet.
+--
+-- -   @5@ - No impact, customers aren\'t currently impacted but urgent
+--     action is needed to avoid impact.
+--
+-- 'notificationTargets', 'updateIncidentRecord_notificationTargets' - The Amazon SNS targets that are notified when updates are made to an
+-- incident.
+--
+-- Using multiple SNS topics creates redundancy in the event that a Region
+-- is down during the incident.
+--
+-- 'status', 'updateIncidentRecord_status' - The status of the incident. An incident can be @Open@ or @Resolved@.
+--
+-- 'summary', 'updateIncidentRecord_summary' - A longer description of what occurred during the incident.
+--
+-- 'title', 'updateIncidentRecord_title' - A brief description of the incident.
+--
+-- 'arn', 'updateIncidentRecord_arn' - The Amazon Resource Name (ARN) of the incident record you are updating.
+newUpdateIncidentRecord ::
+  -- | 'arn'
+  Prelude.Text ->
+  UpdateIncidentRecord
+newUpdateIncidentRecord pArn_ =
+  UpdateIncidentRecord'
+    { chatChannel =
+        Prelude.Nothing,
+      clientToken = Prelude.Nothing,
+      impact = Prelude.Nothing,
+      notificationTargets = Prelude.Nothing,
+      status = Prelude.Nothing,
+      summary = Prelude.Nothing,
+      title = Prelude.Nothing,
+      arn = pArn_
+    }
+
+-- | The Chatbot chat channel where responders can collaborate.
+updateIncidentRecord_chatChannel :: Lens.Lens' UpdateIncidentRecord (Prelude.Maybe ChatChannel)
+updateIncidentRecord_chatChannel = Lens.lens (\UpdateIncidentRecord' {chatChannel} -> chatChannel) (\s@UpdateIncidentRecord' {} a -> s {chatChannel = a} :: UpdateIncidentRecord)
+
+-- | A token that ensures that the operation is called only once with the
+-- specified details.
+updateIncidentRecord_clientToken :: Lens.Lens' UpdateIncidentRecord (Prelude.Maybe Prelude.Text)
+updateIncidentRecord_clientToken = Lens.lens (\UpdateIncidentRecord' {clientToken} -> clientToken) (\s@UpdateIncidentRecord' {} a -> s {clientToken = a} :: UpdateIncidentRecord)
+
+-- | Defines the impact of the incident to customers and applications.
+-- Providing an impact overwrites the impact provided by the response plan.
+--
+-- __Possible impacts:__
+--
+-- -   @1@ - Critical impact, full application failure that impacts many to
+--     all customers.
+--
+-- -   @2@ - High impact, partial application failure with impact to many
+--     customers.
+--
+-- -   @3@ - Medium impact, the application is providing reduced service to
+--     customers.
+--
+-- -   @4@ - Low impact, customer aren\'t impacted by the problem yet.
+--
+-- -   @5@ - No impact, customers aren\'t currently impacted but urgent
+--     action is needed to avoid impact.
+updateIncidentRecord_impact :: Lens.Lens' UpdateIncidentRecord (Prelude.Maybe Prelude.Natural)
+updateIncidentRecord_impact = Lens.lens (\UpdateIncidentRecord' {impact} -> impact) (\s@UpdateIncidentRecord' {} a -> s {impact = a} :: UpdateIncidentRecord)
+
+-- | The Amazon SNS targets that are notified when updates are made to an
+-- incident.
+--
+-- Using multiple SNS topics creates redundancy in the event that a Region
+-- is down during the incident.
+updateIncidentRecord_notificationTargets :: Lens.Lens' UpdateIncidentRecord (Prelude.Maybe [NotificationTargetItem])
+updateIncidentRecord_notificationTargets = Lens.lens (\UpdateIncidentRecord' {notificationTargets} -> notificationTargets) (\s@UpdateIncidentRecord' {} a -> s {notificationTargets = a} :: UpdateIncidentRecord) Prelude.. Lens.mapping Lens.coerced
+
+-- | The status of the incident. An incident can be @Open@ or @Resolved@.
+updateIncidentRecord_status :: Lens.Lens' UpdateIncidentRecord (Prelude.Maybe IncidentRecordStatus)
+updateIncidentRecord_status = Lens.lens (\UpdateIncidentRecord' {status} -> status) (\s@UpdateIncidentRecord' {} a -> s {status = a} :: UpdateIncidentRecord)
+
+-- | A longer description of what occurred during the incident.
+updateIncidentRecord_summary :: Lens.Lens' UpdateIncidentRecord (Prelude.Maybe Prelude.Text)
+updateIncidentRecord_summary = Lens.lens (\UpdateIncidentRecord' {summary} -> summary) (\s@UpdateIncidentRecord' {} a -> s {summary = a} :: UpdateIncidentRecord)
+
+-- | A brief description of the incident.
+updateIncidentRecord_title :: Lens.Lens' UpdateIncidentRecord (Prelude.Maybe Prelude.Text)
+updateIncidentRecord_title = Lens.lens (\UpdateIncidentRecord' {title} -> title) (\s@UpdateIncidentRecord' {} a -> s {title = a} :: UpdateIncidentRecord)
+
+-- | The Amazon Resource Name (ARN) of the incident record you are updating.
+updateIncidentRecord_arn :: Lens.Lens' UpdateIncidentRecord Prelude.Text
+updateIncidentRecord_arn = Lens.lens (\UpdateIncidentRecord' {arn} -> arn) (\s@UpdateIncidentRecord' {} a -> s {arn = a} :: UpdateIncidentRecord)
+
+instance Core.AWSRequest UpdateIncidentRecord where
+  type
+    AWSResponse UpdateIncidentRecord =
+      UpdateIncidentRecordResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UpdateIncidentRecordResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateIncidentRecord where
+  hashWithSalt _salt UpdateIncidentRecord' {..} =
+    _salt
+      `Prelude.hashWithSalt` chatChannel
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` impact
+      `Prelude.hashWithSalt` notificationTargets
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` summary
+      `Prelude.hashWithSalt` title
+      `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData UpdateIncidentRecord where
+  rnf UpdateIncidentRecord' {..} =
+    Prelude.rnf chatChannel
+      `Prelude.seq` Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf impact
+      `Prelude.seq` Prelude.rnf notificationTargets
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf summary
+      `Prelude.seq` Prelude.rnf title
+      `Prelude.seq` Prelude.rnf arn
+
+instance Data.ToHeaders UpdateIncidentRecord where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateIncidentRecord where
+  toJSON UpdateIncidentRecord' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("chatChannel" Data..=) Prelude.<$> chatChannel,
+            ("clientToken" Data..=) Prelude.<$> clientToken,
+            ("impact" Data..=) Prelude.<$> impact,
+            ("notificationTargets" Data..=)
+              Prelude.<$> notificationTargets,
+            ("status" Data..=) Prelude.<$> status,
+            ("summary" Data..=) Prelude.<$> summary,
+            ("title" Data..=) Prelude.<$> title,
+            Prelude.Just ("arn" Data..= arn)
+          ]
+      )
+
+instance Data.ToPath UpdateIncidentRecord where
+  toPath = Prelude.const "/updateIncidentRecord"
+
+instance Data.ToQuery UpdateIncidentRecord where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateIncidentRecordResponse' smart constructor.
+data UpdateIncidentRecordResponse = UpdateIncidentRecordResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateIncidentRecordResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'updateIncidentRecordResponse_httpStatus' - The response's http status code.
+newUpdateIncidentRecordResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateIncidentRecordResponse
+newUpdateIncidentRecordResponse pHttpStatus_ =
+  UpdateIncidentRecordResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+updateIncidentRecordResponse_httpStatus :: Lens.Lens' UpdateIncidentRecordResponse Prelude.Int
+updateIncidentRecordResponse_httpStatus = Lens.lens (\UpdateIncidentRecordResponse' {httpStatus} -> httpStatus) (\s@UpdateIncidentRecordResponse' {} a -> s {httpStatus = a} :: UpdateIncidentRecordResponse)
+
+instance Prelude.NFData UpdateIncidentRecordResponse where
+  rnf UpdateIncidentRecordResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SSMIncidents/UpdateRelatedItems.hs b/gen/Amazonka/SSMIncidents/UpdateRelatedItems.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/UpdateRelatedItems.hs
@@ -0,0 +1,196 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.UpdateRelatedItems
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Add or remove related items from the related items tab of an incident
+-- record.
+module Amazonka.SSMIncidents.UpdateRelatedItems
+  ( -- * Creating a Request
+    UpdateRelatedItems (..),
+    newUpdateRelatedItems,
+
+    -- * Request Lenses
+    updateRelatedItems_clientToken,
+    updateRelatedItems_incidentRecordArn,
+    updateRelatedItems_relatedItemsUpdate,
+
+    -- * Destructuring the Response
+    UpdateRelatedItemsResponse (..),
+    newUpdateRelatedItemsResponse,
+
+    -- * Response Lenses
+    updateRelatedItemsResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SSMIncidents.Types
+
+-- | /See:/ 'newUpdateRelatedItems' smart constructor.
+data UpdateRelatedItems = UpdateRelatedItems'
+  { -- | A token ensuring that the operation is called only once with the
+    -- specified details.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the incident record containing the
+    -- related items you are updating.
+    incidentRecordArn :: Prelude.Text,
+    -- | Details about the item you are adding or deleting.
+    relatedItemsUpdate :: RelatedItemsUpdate
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateRelatedItems' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientToken', 'updateRelatedItems_clientToken' - A token ensuring that the operation is called only once with the
+-- specified details.
+--
+-- 'incidentRecordArn', 'updateRelatedItems_incidentRecordArn' - The Amazon Resource Name (ARN) of the incident record containing the
+-- related items you are updating.
+--
+-- 'relatedItemsUpdate', 'updateRelatedItems_relatedItemsUpdate' - Details about the item you are adding or deleting.
+newUpdateRelatedItems ::
+  -- | 'incidentRecordArn'
+  Prelude.Text ->
+  -- | 'relatedItemsUpdate'
+  RelatedItemsUpdate ->
+  UpdateRelatedItems
+newUpdateRelatedItems
+  pIncidentRecordArn_
+  pRelatedItemsUpdate_ =
+    UpdateRelatedItems'
+      { clientToken = Prelude.Nothing,
+        incidentRecordArn = pIncidentRecordArn_,
+        relatedItemsUpdate = pRelatedItemsUpdate_
+      }
+
+-- | A token ensuring that the operation is called only once with the
+-- specified details.
+updateRelatedItems_clientToken :: Lens.Lens' UpdateRelatedItems (Prelude.Maybe Prelude.Text)
+updateRelatedItems_clientToken = Lens.lens (\UpdateRelatedItems' {clientToken} -> clientToken) (\s@UpdateRelatedItems' {} a -> s {clientToken = a} :: UpdateRelatedItems)
+
+-- | The Amazon Resource Name (ARN) of the incident record containing the
+-- related items you are updating.
+updateRelatedItems_incidentRecordArn :: Lens.Lens' UpdateRelatedItems Prelude.Text
+updateRelatedItems_incidentRecordArn = Lens.lens (\UpdateRelatedItems' {incidentRecordArn} -> incidentRecordArn) (\s@UpdateRelatedItems' {} a -> s {incidentRecordArn = a} :: UpdateRelatedItems)
+
+-- | Details about the item you are adding or deleting.
+updateRelatedItems_relatedItemsUpdate :: Lens.Lens' UpdateRelatedItems RelatedItemsUpdate
+updateRelatedItems_relatedItemsUpdate = Lens.lens (\UpdateRelatedItems' {relatedItemsUpdate} -> relatedItemsUpdate) (\s@UpdateRelatedItems' {} a -> s {relatedItemsUpdate = a} :: UpdateRelatedItems)
+
+instance Core.AWSRequest UpdateRelatedItems where
+  type
+    AWSResponse UpdateRelatedItems =
+      UpdateRelatedItemsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UpdateRelatedItemsResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateRelatedItems where
+  hashWithSalt _salt UpdateRelatedItems' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` incidentRecordArn
+      `Prelude.hashWithSalt` relatedItemsUpdate
+
+instance Prelude.NFData UpdateRelatedItems where
+  rnf UpdateRelatedItems' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf incidentRecordArn
+      `Prelude.seq` Prelude.rnf relatedItemsUpdate
+
+instance Data.ToHeaders UpdateRelatedItems where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateRelatedItems where
+  toJSON UpdateRelatedItems' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("clientToken" Data..=) Prelude.<$> clientToken,
+            Prelude.Just
+              ("incidentRecordArn" Data..= incidentRecordArn),
+            Prelude.Just
+              ("relatedItemsUpdate" Data..= relatedItemsUpdate)
+          ]
+      )
+
+instance Data.ToPath UpdateRelatedItems where
+  toPath = Prelude.const "/updateRelatedItems"
+
+instance Data.ToQuery UpdateRelatedItems where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateRelatedItemsResponse' smart constructor.
+data UpdateRelatedItemsResponse = UpdateRelatedItemsResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateRelatedItemsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'updateRelatedItemsResponse_httpStatus' - The response's http status code.
+newUpdateRelatedItemsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateRelatedItemsResponse
+newUpdateRelatedItemsResponse pHttpStatus_ =
+  UpdateRelatedItemsResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+updateRelatedItemsResponse_httpStatus :: Lens.Lens' UpdateRelatedItemsResponse Prelude.Int
+updateRelatedItemsResponse_httpStatus = Lens.lens (\UpdateRelatedItemsResponse' {httpStatus} -> httpStatus) (\s@UpdateRelatedItemsResponse' {} a -> s {httpStatus = a} :: UpdateRelatedItemsResponse)
+
+instance Prelude.NFData UpdateRelatedItemsResponse where
+  rnf UpdateRelatedItemsResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SSMIncidents/UpdateReplicationSet.hs b/gen/Amazonka/SSMIncidents/UpdateReplicationSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/UpdateReplicationSet.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.SSMIncidents.UpdateReplicationSet
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Add or delete Regions from your replication set.
+module Amazonka.SSMIncidents.UpdateReplicationSet
+  ( -- * Creating a Request
+    UpdateReplicationSet (..),
+    newUpdateReplicationSet,
+
+    -- * Request Lenses
+    updateReplicationSet_clientToken,
+    updateReplicationSet_actions,
+    updateReplicationSet_arn,
+
+    -- * Destructuring the Response
+    UpdateReplicationSetResponse (..),
+    newUpdateReplicationSetResponse,
+
+    -- * Response Lenses
+    updateReplicationSetResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SSMIncidents.Types
+
+-- | /See:/ 'newUpdateReplicationSet' smart constructor.
+data UpdateReplicationSet = UpdateReplicationSet'
+  { -- | A token that ensures that the operation is called only once with the
+    -- specified details.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | An action to add or delete a Region.
+    actions :: Prelude.NonEmpty UpdateReplicationSetAction,
+    -- | The Amazon Resource Name (ARN) of the replication set you\'re updating.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateReplicationSet' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientToken', 'updateReplicationSet_clientToken' - A token that ensures that the operation is called only once with the
+-- specified details.
+--
+-- 'actions', 'updateReplicationSet_actions' - An action to add or delete a Region.
+--
+-- 'arn', 'updateReplicationSet_arn' - The Amazon Resource Name (ARN) of the replication set you\'re updating.
+newUpdateReplicationSet ::
+  -- | 'actions'
+  Prelude.NonEmpty UpdateReplicationSetAction ->
+  -- | 'arn'
+  Prelude.Text ->
+  UpdateReplicationSet
+newUpdateReplicationSet pActions_ pArn_ =
+  UpdateReplicationSet'
+    { clientToken =
+        Prelude.Nothing,
+      actions = Lens.coerced Lens.# pActions_,
+      arn = pArn_
+    }
+
+-- | A token that ensures that the operation is called only once with the
+-- specified details.
+updateReplicationSet_clientToken :: Lens.Lens' UpdateReplicationSet (Prelude.Maybe Prelude.Text)
+updateReplicationSet_clientToken = Lens.lens (\UpdateReplicationSet' {clientToken} -> clientToken) (\s@UpdateReplicationSet' {} a -> s {clientToken = a} :: UpdateReplicationSet)
+
+-- | An action to add or delete a Region.
+updateReplicationSet_actions :: Lens.Lens' UpdateReplicationSet (Prelude.NonEmpty UpdateReplicationSetAction)
+updateReplicationSet_actions = Lens.lens (\UpdateReplicationSet' {actions} -> actions) (\s@UpdateReplicationSet' {} a -> s {actions = a} :: UpdateReplicationSet) Prelude.. Lens.coerced
+
+-- | The Amazon Resource Name (ARN) of the replication set you\'re updating.
+updateReplicationSet_arn :: Lens.Lens' UpdateReplicationSet Prelude.Text
+updateReplicationSet_arn = Lens.lens (\UpdateReplicationSet' {arn} -> arn) (\s@UpdateReplicationSet' {} a -> s {arn = a} :: UpdateReplicationSet)
+
+instance Core.AWSRequest UpdateReplicationSet where
+  type
+    AWSResponse UpdateReplicationSet =
+      UpdateReplicationSetResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UpdateReplicationSetResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateReplicationSet where
+  hashWithSalt _salt UpdateReplicationSet' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` actions
+      `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData UpdateReplicationSet where
+  rnf UpdateReplicationSet' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf actions
+      `Prelude.seq` Prelude.rnf arn
+
+instance Data.ToHeaders UpdateReplicationSet where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateReplicationSet where
+  toJSON UpdateReplicationSet' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("clientToken" Data..=) Prelude.<$> clientToken,
+            Prelude.Just ("actions" Data..= actions),
+            Prelude.Just ("arn" Data..= arn)
+          ]
+      )
+
+instance Data.ToPath UpdateReplicationSet where
+  toPath = Prelude.const "/updateReplicationSet"
+
+instance Data.ToQuery UpdateReplicationSet where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateReplicationSetResponse' smart constructor.
+data UpdateReplicationSetResponse = UpdateReplicationSetResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateReplicationSetResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'updateReplicationSetResponse_httpStatus' - The response's http status code.
+newUpdateReplicationSetResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateReplicationSetResponse
+newUpdateReplicationSetResponse pHttpStatus_ =
+  UpdateReplicationSetResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+updateReplicationSetResponse_httpStatus :: Lens.Lens' UpdateReplicationSetResponse Prelude.Int
+updateReplicationSetResponse_httpStatus = Lens.lens (\UpdateReplicationSetResponse' {httpStatus} -> httpStatus) (\s@UpdateReplicationSetResponse' {} a -> s {httpStatus = a} :: UpdateReplicationSetResponse)
+
+instance Prelude.NFData UpdateReplicationSetResponse where
+  rnf UpdateReplicationSetResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SSMIncidents/UpdateResponsePlan.hs b/gen/Amazonka/SSMIncidents/UpdateResponsePlan.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/UpdateResponsePlan.hs
@@ -0,0 +1,401 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.UpdateResponsePlan
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the specified response plan.
+module Amazonka.SSMIncidents.UpdateResponsePlan
+  ( -- * Creating a Request
+    UpdateResponsePlan (..),
+    newUpdateResponsePlan,
+
+    -- * Request Lenses
+    updateResponsePlan_actions,
+    updateResponsePlan_chatChannel,
+    updateResponsePlan_clientToken,
+    updateResponsePlan_displayName,
+    updateResponsePlan_engagements,
+    updateResponsePlan_incidentTemplateDedupeString,
+    updateResponsePlan_incidentTemplateImpact,
+    updateResponsePlan_incidentTemplateNotificationTargets,
+    updateResponsePlan_incidentTemplateSummary,
+    updateResponsePlan_incidentTemplateTags,
+    updateResponsePlan_incidentTemplateTitle,
+    updateResponsePlan_integrations,
+    updateResponsePlan_arn,
+
+    -- * Destructuring the Response
+    UpdateResponsePlanResponse (..),
+    newUpdateResponsePlanResponse,
+
+    -- * Response Lenses
+    updateResponsePlanResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SSMIncidents.Types
+
+-- | /See:/ 'newUpdateResponsePlan' smart constructor.
+data UpdateResponsePlan = UpdateResponsePlan'
+  { -- | The actions that this response plan takes at the beginning of an
+    -- incident.
+    actions :: Prelude.Maybe [Action],
+    -- | The Chatbot chat channel used for collaboration during an incident.
+    --
+    -- Use the empty structure to remove the chat channel from the response
+    -- plan.
+    chatChannel :: Prelude.Maybe ChatChannel,
+    -- | A token ensuring that the operation is called only once with the
+    -- specified details.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | The long format name of the response plan. The display name can\'t
+    -- contain spaces.
+    displayName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) for the contacts and escalation plans
+    -- that the response plan engages during an incident.
+    engagements :: Prelude.Maybe [Prelude.Text],
+    -- | The string Incident Manager uses to prevent duplicate incidents from
+    -- being created by the same incident in the same account.
+    incidentTemplateDedupeString :: Prelude.Maybe Prelude.Text,
+    -- | Defines the impact to the customers. Providing an impact overwrites the
+    -- impact provided by a response plan.
+    --
+    -- __Possible impacts:__
+    --
+    -- -   @5@ - Severe impact
+    --
+    -- -   @4@ - High impact
+    --
+    -- -   @3@ - Medium impact
+    --
+    -- -   @2@ - Low impact
+    --
+    -- -   @1@ - No impact
+    incidentTemplateImpact :: Prelude.Maybe Prelude.Natural,
+    -- | The Amazon SNS targets that are notified when updates are made to an
+    -- incident.
+    incidentTemplateNotificationTargets :: Prelude.Maybe [NotificationTargetItem],
+    -- | A brief summary of the incident. This typically contains what has
+    -- happened, what\'s currently happening, and next steps.
+    incidentTemplateSummary :: Prelude.Maybe Prelude.Text,
+    -- | Tags to assign to the template. When the @StartIncident@ API action is
+    -- called, Incident Manager assigns the tags specified in the template to
+    -- the incident. To call this action, you must also have permission to call
+    -- the @TagResource@ API action for the incident record resource.
+    incidentTemplateTags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The short format name of the incident. The title can\'t contain spaces.
+    incidentTemplateTitle :: Prelude.Maybe Prelude.Text,
+    -- | Information about third-party services integrated into the response
+    -- plan.
+    integrations :: Prelude.Maybe [Integration],
+    -- | The Amazon Resource Name (ARN) of the response plan.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateResponsePlan' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'actions', 'updateResponsePlan_actions' - The actions that this response plan takes at the beginning of an
+-- incident.
+--
+-- 'chatChannel', 'updateResponsePlan_chatChannel' - The Chatbot chat channel used for collaboration during an incident.
+--
+-- Use the empty structure to remove the chat channel from the response
+-- plan.
+--
+-- 'clientToken', 'updateResponsePlan_clientToken' - A token ensuring that the operation is called only once with the
+-- specified details.
+--
+-- 'displayName', 'updateResponsePlan_displayName' - The long format name of the response plan. The display name can\'t
+-- contain spaces.
+--
+-- 'engagements', 'updateResponsePlan_engagements' - The Amazon Resource Name (ARN) for the contacts and escalation plans
+-- that the response plan engages during an incident.
+--
+-- 'incidentTemplateDedupeString', 'updateResponsePlan_incidentTemplateDedupeString' - The string Incident Manager uses to prevent duplicate incidents from
+-- being created by the same incident in the same account.
+--
+-- 'incidentTemplateImpact', 'updateResponsePlan_incidentTemplateImpact' - Defines the impact to the customers. Providing an impact overwrites the
+-- impact provided by a response plan.
+--
+-- __Possible impacts:__
+--
+-- -   @5@ - Severe impact
+--
+-- -   @4@ - High impact
+--
+-- -   @3@ - Medium impact
+--
+-- -   @2@ - Low impact
+--
+-- -   @1@ - No impact
+--
+-- 'incidentTemplateNotificationTargets', 'updateResponsePlan_incidentTemplateNotificationTargets' - The Amazon SNS targets that are notified when updates are made to an
+-- incident.
+--
+-- 'incidentTemplateSummary', 'updateResponsePlan_incidentTemplateSummary' - A brief summary of the incident. This typically contains what has
+-- happened, what\'s currently happening, and next steps.
+--
+-- 'incidentTemplateTags', 'updateResponsePlan_incidentTemplateTags' - Tags to assign to the template. When the @StartIncident@ API action is
+-- called, Incident Manager assigns the tags specified in the template to
+-- the incident. To call this action, you must also have permission to call
+-- the @TagResource@ API action for the incident record resource.
+--
+-- 'incidentTemplateTitle', 'updateResponsePlan_incidentTemplateTitle' - The short format name of the incident. The title can\'t contain spaces.
+--
+-- 'integrations', 'updateResponsePlan_integrations' - Information about third-party services integrated into the response
+-- plan.
+--
+-- 'arn', 'updateResponsePlan_arn' - The Amazon Resource Name (ARN) of the response plan.
+newUpdateResponsePlan ::
+  -- | 'arn'
+  Prelude.Text ->
+  UpdateResponsePlan
+newUpdateResponsePlan pArn_ =
+  UpdateResponsePlan'
+    { actions = Prelude.Nothing,
+      chatChannel = Prelude.Nothing,
+      clientToken = Prelude.Nothing,
+      displayName = Prelude.Nothing,
+      engagements = Prelude.Nothing,
+      incidentTemplateDedupeString = Prelude.Nothing,
+      incidentTemplateImpact = Prelude.Nothing,
+      incidentTemplateNotificationTargets =
+        Prelude.Nothing,
+      incidentTemplateSummary = Prelude.Nothing,
+      incidentTemplateTags = Prelude.Nothing,
+      incidentTemplateTitle = Prelude.Nothing,
+      integrations = Prelude.Nothing,
+      arn = pArn_
+    }
+
+-- | The actions that this response plan takes at the beginning of an
+-- incident.
+updateResponsePlan_actions :: Lens.Lens' UpdateResponsePlan (Prelude.Maybe [Action])
+updateResponsePlan_actions = Lens.lens (\UpdateResponsePlan' {actions} -> actions) (\s@UpdateResponsePlan' {} a -> s {actions = a} :: UpdateResponsePlan) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Chatbot chat channel used for collaboration during an incident.
+--
+-- Use the empty structure to remove the chat channel from the response
+-- plan.
+updateResponsePlan_chatChannel :: Lens.Lens' UpdateResponsePlan (Prelude.Maybe ChatChannel)
+updateResponsePlan_chatChannel = Lens.lens (\UpdateResponsePlan' {chatChannel} -> chatChannel) (\s@UpdateResponsePlan' {} a -> s {chatChannel = a} :: UpdateResponsePlan)
+
+-- | A token ensuring that the operation is called only once with the
+-- specified details.
+updateResponsePlan_clientToken :: Lens.Lens' UpdateResponsePlan (Prelude.Maybe Prelude.Text)
+updateResponsePlan_clientToken = Lens.lens (\UpdateResponsePlan' {clientToken} -> clientToken) (\s@UpdateResponsePlan' {} a -> s {clientToken = a} :: UpdateResponsePlan)
+
+-- | The long format name of the response plan. The display name can\'t
+-- contain spaces.
+updateResponsePlan_displayName :: Lens.Lens' UpdateResponsePlan (Prelude.Maybe Prelude.Text)
+updateResponsePlan_displayName = Lens.lens (\UpdateResponsePlan' {displayName} -> displayName) (\s@UpdateResponsePlan' {} a -> s {displayName = a} :: UpdateResponsePlan)
+
+-- | The Amazon Resource Name (ARN) for the contacts and escalation plans
+-- that the response plan engages during an incident.
+updateResponsePlan_engagements :: Lens.Lens' UpdateResponsePlan (Prelude.Maybe [Prelude.Text])
+updateResponsePlan_engagements = Lens.lens (\UpdateResponsePlan' {engagements} -> engagements) (\s@UpdateResponsePlan' {} a -> s {engagements = a} :: UpdateResponsePlan) Prelude.. Lens.mapping Lens.coerced
+
+-- | The string Incident Manager uses to prevent duplicate incidents from
+-- being created by the same incident in the same account.
+updateResponsePlan_incidentTemplateDedupeString :: Lens.Lens' UpdateResponsePlan (Prelude.Maybe Prelude.Text)
+updateResponsePlan_incidentTemplateDedupeString = Lens.lens (\UpdateResponsePlan' {incidentTemplateDedupeString} -> incidentTemplateDedupeString) (\s@UpdateResponsePlan' {} a -> s {incidentTemplateDedupeString = a} :: UpdateResponsePlan)
+
+-- | Defines the impact to the customers. Providing an impact overwrites the
+-- impact provided by a response plan.
+--
+-- __Possible impacts:__
+--
+-- -   @5@ - Severe impact
+--
+-- -   @4@ - High impact
+--
+-- -   @3@ - Medium impact
+--
+-- -   @2@ - Low impact
+--
+-- -   @1@ - No impact
+updateResponsePlan_incidentTemplateImpact :: Lens.Lens' UpdateResponsePlan (Prelude.Maybe Prelude.Natural)
+updateResponsePlan_incidentTemplateImpact = Lens.lens (\UpdateResponsePlan' {incidentTemplateImpact} -> incidentTemplateImpact) (\s@UpdateResponsePlan' {} a -> s {incidentTemplateImpact = a} :: UpdateResponsePlan)
+
+-- | The Amazon SNS targets that are notified when updates are made to an
+-- incident.
+updateResponsePlan_incidentTemplateNotificationTargets :: Lens.Lens' UpdateResponsePlan (Prelude.Maybe [NotificationTargetItem])
+updateResponsePlan_incidentTemplateNotificationTargets = Lens.lens (\UpdateResponsePlan' {incidentTemplateNotificationTargets} -> incidentTemplateNotificationTargets) (\s@UpdateResponsePlan' {} a -> s {incidentTemplateNotificationTargets = a} :: UpdateResponsePlan) Prelude.. Lens.mapping Lens.coerced
+
+-- | A brief summary of the incident. This typically contains what has
+-- happened, what\'s currently happening, and next steps.
+updateResponsePlan_incidentTemplateSummary :: Lens.Lens' UpdateResponsePlan (Prelude.Maybe Prelude.Text)
+updateResponsePlan_incidentTemplateSummary = Lens.lens (\UpdateResponsePlan' {incidentTemplateSummary} -> incidentTemplateSummary) (\s@UpdateResponsePlan' {} a -> s {incidentTemplateSummary = a} :: UpdateResponsePlan)
+
+-- | Tags to assign to the template. When the @StartIncident@ API action is
+-- called, Incident Manager assigns the tags specified in the template to
+-- the incident. To call this action, you must also have permission to call
+-- the @TagResource@ API action for the incident record resource.
+updateResponsePlan_incidentTemplateTags :: Lens.Lens' UpdateResponsePlan (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+updateResponsePlan_incidentTemplateTags = Lens.lens (\UpdateResponsePlan' {incidentTemplateTags} -> incidentTemplateTags) (\s@UpdateResponsePlan' {} a -> s {incidentTemplateTags = a} :: UpdateResponsePlan) Prelude.. Lens.mapping Lens.coerced
+
+-- | The short format name of the incident. The title can\'t contain spaces.
+updateResponsePlan_incidentTemplateTitle :: Lens.Lens' UpdateResponsePlan (Prelude.Maybe Prelude.Text)
+updateResponsePlan_incidentTemplateTitle = Lens.lens (\UpdateResponsePlan' {incidentTemplateTitle} -> incidentTemplateTitle) (\s@UpdateResponsePlan' {} a -> s {incidentTemplateTitle = a} :: UpdateResponsePlan)
+
+-- | Information about third-party services integrated into the response
+-- plan.
+updateResponsePlan_integrations :: Lens.Lens' UpdateResponsePlan (Prelude.Maybe [Integration])
+updateResponsePlan_integrations = Lens.lens (\UpdateResponsePlan' {integrations} -> integrations) (\s@UpdateResponsePlan' {} a -> s {integrations = a} :: UpdateResponsePlan) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Resource Name (ARN) of the response plan.
+updateResponsePlan_arn :: Lens.Lens' UpdateResponsePlan Prelude.Text
+updateResponsePlan_arn = Lens.lens (\UpdateResponsePlan' {arn} -> arn) (\s@UpdateResponsePlan' {} a -> s {arn = a} :: UpdateResponsePlan)
+
+instance Core.AWSRequest UpdateResponsePlan where
+  type
+    AWSResponse UpdateResponsePlan =
+      UpdateResponsePlanResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UpdateResponsePlanResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateResponsePlan where
+  hashWithSalt _salt UpdateResponsePlan' {..} =
+    _salt
+      `Prelude.hashWithSalt` actions
+      `Prelude.hashWithSalt` chatChannel
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` displayName
+      `Prelude.hashWithSalt` engagements
+      `Prelude.hashWithSalt` incidentTemplateDedupeString
+      `Prelude.hashWithSalt` incidentTemplateImpact
+      `Prelude.hashWithSalt` incidentTemplateNotificationTargets
+      `Prelude.hashWithSalt` incidentTemplateSummary
+      `Prelude.hashWithSalt` incidentTemplateTags
+      `Prelude.hashWithSalt` incidentTemplateTitle
+      `Prelude.hashWithSalt` integrations
+      `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData UpdateResponsePlan where
+  rnf UpdateResponsePlan' {..} =
+    Prelude.rnf actions
+      `Prelude.seq` Prelude.rnf chatChannel
+      `Prelude.seq` Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf displayName
+      `Prelude.seq` Prelude.rnf engagements
+      `Prelude.seq` Prelude.rnf incidentTemplateDedupeString
+      `Prelude.seq` Prelude.rnf incidentTemplateImpact
+      `Prelude.seq` Prelude.rnf incidentTemplateNotificationTargets
+      `Prelude.seq` Prelude.rnf incidentTemplateSummary
+      `Prelude.seq` Prelude.rnf incidentTemplateTags
+      `Prelude.seq` Prelude.rnf incidentTemplateTitle
+      `Prelude.seq` Prelude.rnf integrations
+      `Prelude.seq` Prelude.rnf arn
+
+instance Data.ToHeaders UpdateResponsePlan where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateResponsePlan where
+  toJSON UpdateResponsePlan' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("actions" Data..=) Prelude.<$> actions,
+            ("chatChannel" Data..=) Prelude.<$> chatChannel,
+            ("clientToken" Data..=) Prelude.<$> clientToken,
+            ("displayName" Data..=) Prelude.<$> displayName,
+            ("engagements" Data..=) Prelude.<$> engagements,
+            ("incidentTemplateDedupeString" Data..=)
+              Prelude.<$> incidentTemplateDedupeString,
+            ("incidentTemplateImpact" Data..=)
+              Prelude.<$> incidentTemplateImpact,
+            ("incidentTemplateNotificationTargets" Data..=)
+              Prelude.<$> incidentTemplateNotificationTargets,
+            ("incidentTemplateSummary" Data..=)
+              Prelude.<$> incidentTemplateSummary,
+            ("incidentTemplateTags" Data..=)
+              Prelude.<$> incidentTemplateTags,
+            ("incidentTemplateTitle" Data..=)
+              Prelude.<$> incidentTemplateTitle,
+            ("integrations" Data..=) Prelude.<$> integrations,
+            Prelude.Just ("arn" Data..= arn)
+          ]
+      )
+
+instance Data.ToPath UpdateResponsePlan where
+  toPath = Prelude.const "/updateResponsePlan"
+
+instance Data.ToQuery UpdateResponsePlan where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateResponsePlanResponse' smart constructor.
+data UpdateResponsePlanResponse = UpdateResponsePlanResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateResponsePlanResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'updateResponsePlanResponse_httpStatus' - The response's http status code.
+newUpdateResponsePlanResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateResponsePlanResponse
+newUpdateResponsePlanResponse pHttpStatus_ =
+  UpdateResponsePlanResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+updateResponsePlanResponse_httpStatus :: Lens.Lens' UpdateResponsePlanResponse Prelude.Int
+updateResponsePlanResponse_httpStatus = Lens.lens (\UpdateResponsePlanResponse' {httpStatus} -> httpStatus) (\s@UpdateResponsePlanResponse' {} a -> s {httpStatus = a} :: UpdateResponsePlanResponse)
+
+instance Prelude.NFData UpdateResponsePlanResponse where
+  rnf UpdateResponsePlanResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SSMIncidents/UpdateTimelineEvent.hs b/gen/Amazonka/SSMIncidents/UpdateTimelineEvent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/UpdateTimelineEvent.hs
@@ -0,0 +1,281 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SSMIncidents.UpdateTimelineEvent
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates a timeline event. You can update events of type @Custom Event@.
+module Amazonka.SSMIncidents.UpdateTimelineEvent
+  ( -- * Creating a Request
+    UpdateTimelineEvent (..),
+    newUpdateTimelineEvent,
+
+    -- * Request Lenses
+    updateTimelineEvent_clientToken,
+    updateTimelineEvent_eventData,
+    updateTimelineEvent_eventReferences,
+    updateTimelineEvent_eventTime,
+    updateTimelineEvent_eventType,
+    updateTimelineEvent_eventId,
+    updateTimelineEvent_incidentRecordArn,
+
+    -- * Destructuring the Response
+    UpdateTimelineEventResponse (..),
+    newUpdateTimelineEventResponse,
+
+    -- * Response Lenses
+    updateTimelineEventResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SSMIncidents.Types
+
+-- | /See:/ 'newUpdateTimelineEvent' smart constructor.
+data UpdateTimelineEvent = UpdateTimelineEvent'
+  { -- | A token ensuring that the operation is called only once with the
+    -- specified details.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | A short description of the event.
+    eventData :: Prelude.Maybe Prelude.Text,
+    -- | Updates all existing references in a @TimelineEvent@. A reference can be
+    -- an Amazon Web Services resource involved in the incident or in some way
+    -- associated with it. When you specify a reference, you enter the Amazon
+    -- Resource Name (ARN) of the resource. You can also specify a related
+    -- item. As an example, you could specify the ARN of an Amazon DynamoDB
+    -- (DynamoDB) table. The table for this example is the resource. You could
+    -- also specify a Amazon CloudWatch metric for that table. The metric is
+    -- the related item.
+    --
+    -- This update action overrides all existing references. If you want to
+    -- keep existing references, you must specify them in the call. If you
+    -- don\'t, this action removes them and enters only new references.
+    eventReferences :: Prelude.Maybe [EventReference],
+    -- | The time that the event occurred.
+    eventTime :: Prelude.Maybe Data.POSIX,
+    -- | The type of the event. You can update events of type @Custom Event@.
+    eventType :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the event you are updating. You can find this by using
+    -- @ListTimelineEvents@.
+    eventId :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the incident that includes the
+    -- timeline event.
+    incidentRecordArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateTimelineEvent' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientToken', 'updateTimelineEvent_clientToken' - A token ensuring that the operation is called only once with the
+-- specified details.
+--
+-- 'eventData', 'updateTimelineEvent_eventData' - A short description of the event.
+--
+-- 'eventReferences', 'updateTimelineEvent_eventReferences' - Updates all existing references in a @TimelineEvent@. A reference can be
+-- an Amazon Web Services resource involved in the incident or in some way
+-- associated with it. When you specify a reference, you enter the Amazon
+-- Resource Name (ARN) of the resource. You can also specify a related
+-- item. As an example, you could specify the ARN of an Amazon DynamoDB
+-- (DynamoDB) table. The table for this example is the resource. You could
+-- also specify a Amazon CloudWatch metric for that table. The metric is
+-- the related item.
+--
+-- This update action overrides all existing references. If you want to
+-- keep existing references, you must specify them in the call. If you
+-- don\'t, this action removes them and enters only new references.
+--
+-- 'eventTime', 'updateTimelineEvent_eventTime' - The time that the event occurred.
+--
+-- 'eventType', 'updateTimelineEvent_eventType' - The type of the event. You can update events of type @Custom Event@.
+--
+-- 'eventId', 'updateTimelineEvent_eventId' - The ID of the event you are updating. You can find this by using
+-- @ListTimelineEvents@.
+--
+-- 'incidentRecordArn', 'updateTimelineEvent_incidentRecordArn' - The Amazon Resource Name (ARN) of the incident that includes the
+-- timeline event.
+newUpdateTimelineEvent ::
+  -- | 'eventId'
+  Prelude.Text ->
+  -- | 'incidentRecordArn'
+  Prelude.Text ->
+  UpdateTimelineEvent
+newUpdateTimelineEvent pEventId_ pIncidentRecordArn_ =
+  UpdateTimelineEvent'
+    { clientToken = Prelude.Nothing,
+      eventData = Prelude.Nothing,
+      eventReferences = Prelude.Nothing,
+      eventTime = Prelude.Nothing,
+      eventType = Prelude.Nothing,
+      eventId = pEventId_,
+      incidentRecordArn = pIncidentRecordArn_
+    }
+
+-- | A token ensuring that the operation is called only once with the
+-- specified details.
+updateTimelineEvent_clientToken :: Lens.Lens' UpdateTimelineEvent (Prelude.Maybe Prelude.Text)
+updateTimelineEvent_clientToken = Lens.lens (\UpdateTimelineEvent' {clientToken} -> clientToken) (\s@UpdateTimelineEvent' {} a -> s {clientToken = a} :: UpdateTimelineEvent)
+
+-- | A short description of the event.
+updateTimelineEvent_eventData :: Lens.Lens' UpdateTimelineEvent (Prelude.Maybe Prelude.Text)
+updateTimelineEvent_eventData = Lens.lens (\UpdateTimelineEvent' {eventData} -> eventData) (\s@UpdateTimelineEvent' {} a -> s {eventData = a} :: UpdateTimelineEvent)
+
+-- | Updates all existing references in a @TimelineEvent@. A reference can be
+-- an Amazon Web Services resource involved in the incident or in some way
+-- associated with it. When you specify a reference, you enter the Amazon
+-- Resource Name (ARN) of the resource. You can also specify a related
+-- item. As an example, you could specify the ARN of an Amazon DynamoDB
+-- (DynamoDB) table. The table for this example is the resource. You could
+-- also specify a Amazon CloudWatch metric for that table. The metric is
+-- the related item.
+--
+-- This update action overrides all existing references. If you want to
+-- keep existing references, you must specify them in the call. If you
+-- don\'t, this action removes them and enters only new references.
+updateTimelineEvent_eventReferences :: Lens.Lens' UpdateTimelineEvent (Prelude.Maybe [EventReference])
+updateTimelineEvent_eventReferences = Lens.lens (\UpdateTimelineEvent' {eventReferences} -> eventReferences) (\s@UpdateTimelineEvent' {} a -> s {eventReferences = a} :: UpdateTimelineEvent) Prelude.. Lens.mapping Lens.coerced
+
+-- | The time that the event occurred.
+updateTimelineEvent_eventTime :: Lens.Lens' UpdateTimelineEvent (Prelude.Maybe Prelude.UTCTime)
+updateTimelineEvent_eventTime = Lens.lens (\UpdateTimelineEvent' {eventTime} -> eventTime) (\s@UpdateTimelineEvent' {} a -> s {eventTime = a} :: UpdateTimelineEvent) Prelude.. Lens.mapping Data._Time
+
+-- | The type of the event. You can update events of type @Custom Event@.
+updateTimelineEvent_eventType :: Lens.Lens' UpdateTimelineEvent (Prelude.Maybe Prelude.Text)
+updateTimelineEvent_eventType = Lens.lens (\UpdateTimelineEvent' {eventType} -> eventType) (\s@UpdateTimelineEvent' {} a -> s {eventType = a} :: UpdateTimelineEvent)
+
+-- | The ID of the event you are updating. You can find this by using
+-- @ListTimelineEvents@.
+updateTimelineEvent_eventId :: Lens.Lens' UpdateTimelineEvent Prelude.Text
+updateTimelineEvent_eventId = Lens.lens (\UpdateTimelineEvent' {eventId} -> eventId) (\s@UpdateTimelineEvent' {} a -> s {eventId = a} :: UpdateTimelineEvent)
+
+-- | The Amazon Resource Name (ARN) of the incident that includes the
+-- timeline event.
+updateTimelineEvent_incidentRecordArn :: Lens.Lens' UpdateTimelineEvent Prelude.Text
+updateTimelineEvent_incidentRecordArn = Lens.lens (\UpdateTimelineEvent' {incidentRecordArn} -> incidentRecordArn) (\s@UpdateTimelineEvent' {} a -> s {incidentRecordArn = a} :: UpdateTimelineEvent)
+
+instance Core.AWSRequest UpdateTimelineEvent where
+  type
+    AWSResponse UpdateTimelineEvent =
+      UpdateTimelineEventResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UpdateTimelineEventResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateTimelineEvent where
+  hashWithSalt _salt UpdateTimelineEvent' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` eventData
+      `Prelude.hashWithSalt` eventReferences
+      `Prelude.hashWithSalt` eventTime
+      `Prelude.hashWithSalt` eventType
+      `Prelude.hashWithSalt` eventId
+      `Prelude.hashWithSalt` incidentRecordArn
+
+instance Prelude.NFData UpdateTimelineEvent where
+  rnf UpdateTimelineEvent' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf eventData
+      `Prelude.seq` Prelude.rnf eventReferences
+      `Prelude.seq` Prelude.rnf eventTime
+      `Prelude.seq` Prelude.rnf eventType
+      `Prelude.seq` Prelude.rnf eventId
+      `Prelude.seq` Prelude.rnf incidentRecordArn
+
+instance Data.ToHeaders UpdateTimelineEvent where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateTimelineEvent where
+  toJSON UpdateTimelineEvent' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("clientToken" Data..=) Prelude.<$> clientToken,
+            ("eventData" Data..=) Prelude.<$> eventData,
+            ("eventReferences" Data..=)
+              Prelude.<$> eventReferences,
+            ("eventTime" Data..=) Prelude.<$> eventTime,
+            ("eventType" Data..=) Prelude.<$> eventType,
+            Prelude.Just ("eventId" Data..= eventId),
+            Prelude.Just
+              ("incidentRecordArn" Data..= incidentRecordArn)
+          ]
+      )
+
+instance Data.ToPath UpdateTimelineEvent where
+  toPath = Prelude.const "/updateTimelineEvent"
+
+instance Data.ToQuery UpdateTimelineEvent where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateTimelineEventResponse' smart constructor.
+data UpdateTimelineEventResponse = UpdateTimelineEventResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateTimelineEventResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'updateTimelineEventResponse_httpStatus' - The response's http status code.
+newUpdateTimelineEventResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateTimelineEventResponse
+newUpdateTimelineEventResponse pHttpStatus_ =
+  UpdateTimelineEventResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+updateTimelineEventResponse_httpStatus :: Lens.Lens' UpdateTimelineEventResponse Prelude.Int
+updateTimelineEventResponse_httpStatus = Lens.lens (\UpdateTimelineEventResponse' {httpStatus} -> httpStatus) (\s@UpdateTimelineEventResponse' {} a -> s {httpStatus = a} :: UpdateTimelineEventResponse)
+
+instance Prelude.NFData UpdateTimelineEventResponse where
+  rnf UpdateTimelineEventResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SSMIncidents/Waiters.hs b/gen/Amazonka/SSMIncidents/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SSMIncidents/Waiters.hs
@@ -0,0 +1,94 @@
+{-# 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.SSMIncidents.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.SSMIncidents.Waiters 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
+import Amazonka.SSMIncidents.GetReplicationSet
+import Amazonka.SSMIncidents.Lens
+import Amazonka.SSMIncidents.Types
+
+-- | Polls 'Amazonka.SSMIncidents.GetReplicationSet' every 30 seconds until a successful state is reached. An error is returned after 5 failed checks.
+newWaitForReplicationSetActive :: Core.Wait GetReplicationSet
+newWaitForReplicationSetActive =
+  Core.Wait
+    { Core.name =
+        "WaitForReplicationSetActive",
+      Core.attempts = 5,
+      Core.delay = 30,
+      Core.acceptors =
+        [ Core.matchAll
+            "ACTIVE"
+            Core.AcceptSuccess
+            ( getReplicationSetResponse_replicationSet
+                Prelude.. replicationSet_status
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchAll
+            "CREATING"
+            Core.AcceptRetry
+            ( getReplicationSetResponse_replicationSet
+                Prelude.. replicationSet_status
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchAll
+            "UPDATING"
+            Core.AcceptRetry
+            ( getReplicationSetResponse_replicationSet
+                Prelude.. replicationSet_status
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchAll
+            "FAILED"
+            Core.AcceptFailure
+            ( getReplicationSetResponse_replicationSet
+                Prelude.. replicationSet_status
+                Prelude.. Lens.to Data.toTextCI
+            )
+        ]
+    }
+
+-- | Polls 'Amazonka.SSMIncidents.GetReplicationSet' every 30 seconds until a successful state is reached. An error is returned after 5 failed checks.
+newWaitForReplicationSetDeleted :: Core.Wait GetReplicationSet
+newWaitForReplicationSetDeleted =
+  Core.Wait
+    { Core.name =
+        "WaitForReplicationSetDeleted",
+      Core.attempts = 5,
+      Core.delay = 30,
+      Core.acceptors =
+        [ Core.matchError
+            "ResourceNotFoundException"
+            Core.AcceptSuccess,
+          Core.matchAll
+            "DELETING"
+            Core.AcceptRetry
+            ( getReplicationSetResponse_replicationSet
+                Prelude.. replicationSet_status
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchAll
+            "FAILED"
+            Core.AcceptFailure
+            ( getReplicationSetResponse_replicationSet
+                Prelude.. replicationSet_status
+                Prelude.. Lens.to Data.toTextCI
+            )
+        ]
+    }
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.SSMIncidents
+import Test.Amazonka.SSMIncidents.Internal
+import Test.Tasty
+
+main :: IO ()
+main =
+  defaultMain $
+    testGroup
+      "SSMIncidents"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/Amazonka/Gen/SSMIncidents.hs b/test/Test/Amazonka/Gen/SSMIncidents.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/SSMIncidents.hs
@@ -0,0 +1,618 @@
+{-# 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.SSMIncidents
+-- 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.SSMIncidents where
+
+import Amazonka.SSMIncidents
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.Fixture
+import Test.Amazonka.Prelude
+import Test.Amazonka.SSMIncidents.Internal
+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"
+--         [ requestCreateReplicationSet $
+--             newCreateReplicationSet
+--
+--         , requestCreateResponsePlan $
+--             newCreateResponsePlan
+--
+--         , requestCreateTimelineEvent $
+--             newCreateTimelineEvent
+--
+--         , requestDeleteIncidentRecord $
+--             newDeleteIncidentRecord
+--
+--         , requestDeleteReplicationSet $
+--             newDeleteReplicationSet
+--
+--         , requestDeleteResourcePolicy $
+--             newDeleteResourcePolicy
+--
+--         , requestDeleteResponsePlan $
+--             newDeleteResponsePlan
+--
+--         , requestDeleteTimelineEvent $
+--             newDeleteTimelineEvent
+--
+--         , requestGetIncidentRecord $
+--             newGetIncidentRecord
+--
+--         , requestGetReplicationSet $
+--             newGetReplicationSet
+--
+--         , requestGetResourcePolicies $
+--             newGetResourcePolicies
+--
+--         , requestGetResponsePlan $
+--             newGetResponsePlan
+--
+--         , requestGetTimelineEvent $
+--             newGetTimelineEvent
+--
+--         , requestListIncidentRecords $
+--             newListIncidentRecords
+--
+--         , requestListRelatedItems $
+--             newListRelatedItems
+--
+--         , requestListReplicationSets $
+--             newListReplicationSets
+--
+--         , requestListResponsePlans $
+--             newListResponsePlans
+--
+--         , requestListTagsForResource $
+--             newListTagsForResource
+--
+--         , requestListTimelineEvents $
+--             newListTimelineEvents
+--
+--         , requestPutResourcePolicy $
+--             newPutResourcePolicy
+--
+--         , requestStartIncident $
+--             newStartIncident
+--
+--         , requestTagResource $
+--             newTagResource
+--
+--         , requestUntagResource $
+--             newUntagResource
+--
+--         , requestUpdateDeletionProtection $
+--             newUpdateDeletionProtection
+--
+--         , requestUpdateIncidentRecord $
+--             newUpdateIncidentRecord
+--
+--         , requestUpdateRelatedItems $
+--             newUpdateRelatedItems
+--
+--         , requestUpdateReplicationSet $
+--             newUpdateReplicationSet
+--
+--         , requestUpdateResponsePlan $
+--             newUpdateResponsePlan
+--
+--         , requestUpdateTimelineEvent $
+--             newUpdateTimelineEvent
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseCreateReplicationSet $
+--             newCreateReplicationSetResponse
+--
+--         , responseCreateResponsePlan $
+--             newCreateResponsePlanResponse
+--
+--         , responseCreateTimelineEvent $
+--             newCreateTimelineEventResponse
+--
+--         , responseDeleteIncidentRecord $
+--             newDeleteIncidentRecordResponse
+--
+--         , responseDeleteReplicationSet $
+--             newDeleteReplicationSetResponse
+--
+--         , responseDeleteResourcePolicy $
+--             newDeleteResourcePolicyResponse
+--
+--         , responseDeleteResponsePlan $
+--             newDeleteResponsePlanResponse
+--
+--         , responseDeleteTimelineEvent $
+--             newDeleteTimelineEventResponse
+--
+--         , responseGetIncidentRecord $
+--             newGetIncidentRecordResponse
+--
+--         , responseGetReplicationSet $
+--             newGetReplicationSetResponse
+--
+--         , responseGetResourcePolicies $
+--             newGetResourcePoliciesResponse
+--
+--         , responseGetResponsePlan $
+--             newGetResponsePlanResponse
+--
+--         , responseGetTimelineEvent $
+--             newGetTimelineEventResponse
+--
+--         , responseListIncidentRecords $
+--             newListIncidentRecordsResponse
+--
+--         , responseListRelatedItems $
+--             newListRelatedItemsResponse
+--
+--         , responseListReplicationSets $
+--             newListReplicationSetsResponse
+--
+--         , responseListResponsePlans $
+--             newListResponsePlansResponse
+--
+--         , responseListTagsForResource $
+--             newListTagsForResourceResponse
+--
+--         , responseListTimelineEvents $
+--             newListTimelineEventsResponse
+--
+--         , responsePutResourcePolicy $
+--             newPutResourcePolicyResponse
+--
+--         , responseStartIncident $
+--             newStartIncidentResponse
+--
+--         , responseTagResource $
+--             newTagResourceResponse
+--
+--         , responseUntagResource $
+--             newUntagResourceResponse
+--
+--         , responseUpdateDeletionProtection $
+--             newUpdateDeletionProtectionResponse
+--
+--         , responseUpdateIncidentRecord $
+--             newUpdateIncidentRecordResponse
+--
+--         , responseUpdateRelatedItems $
+--             newUpdateRelatedItemsResponse
+--
+--         , responseUpdateReplicationSet $
+--             newUpdateReplicationSetResponse
+--
+--         , responseUpdateResponsePlan $
+--             newUpdateResponsePlanResponse
+--
+--         , responseUpdateTimelineEvent $
+--             newUpdateTimelineEventResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestCreateReplicationSet :: CreateReplicationSet -> TestTree
+requestCreateReplicationSet =
+  req
+    "CreateReplicationSet"
+    "fixture/CreateReplicationSet.yaml"
+
+requestCreateResponsePlan :: CreateResponsePlan -> TestTree
+requestCreateResponsePlan =
+  req
+    "CreateResponsePlan"
+    "fixture/CreateResponsePlan.yaml"
+
+requestCreateTimelineEvent :: CreateTimelineEvent -> TestTree
+requestCreateTimelineEvent =
+  req
+    "CreateTimelineEvent"
+    "fixture/CreateTimelineEvent.yaml"
+
+requestDeleteIncidentRecord :: DeleteIncidentRecord -> TestTree
+requestDeleteIncidentRecord =
+  req
+    "DeleteIncidentRecord"
+    "fixture/DeleteIncidentRecord.yaml"
+
+requestDeleteReplicationSet :: DeleteReplicationSet -> TestTree
+requestDeleteReplicationSet =
+  req
+    "DeleteReplicationSet"
+    "fixture/DeleteReplicationSet.yaml"
+
+requestDeleteResourcePolicy :: DeleteResourcePolicy -> TestTree
+requestDeleteResourcePolicy =
+  req
+    "DeleteResourcePolicy"
+    "fixture/DeleteResourcePolicy.yaml"
+
+requestDeleteResponsePlan :: DeleteResponsePlan -> TestTree
+requestDeleteResponsePlan =
+  req
+    "DeleteResponsePlan"
+    "fixture/DeleteResponsePlan.yaml"
+
+requestDeleteTimelineEvent :: DeleteTimelineEvent -> TestTree
+requestDeleteTimelineEvent =
+  req
+    "DeleteTimelineEvent"
+    "fixture/DeleteTimelineEvent.yaml"
+
+requestGetIncidentRecord :: GetIncidentRecord -> TestTree
+requestGetIncidentRecord =
+  req
+    "GetIncidentRecord"
+    "fixture/GetIncidentRecord.yaml"
+
+requestGetReplicationSet :: GetReplicationSet -> TestTree
+requestGetReplicationSet =
+  req
+    "GetReplicationSet"
+    "fixture/GetReplicationSet.yaml"
+
+requestGetResourcePolicies :: GetResourcePolicies -> TestTree
+requestGetResourcePolicies =
+  req
+    "GetResourcePolicies"
+    "fixture/GetResourcePolicies.yaml"
+
+requestGetResponsePlan :: GetResponsePlan -> TestTree
+requestGetResponsePlan =
+  req
+    "GetResponsePlan"
+    "fixture/GetResponsePlan.yaml"
+
+requestGetTimelineEvent :: GetTimelineEvent -> TestTree
+requestGetTimelineEvent =
+  req
+    "GetTimelineEvent"
+    "fixture/GetTimelineEvent.yaml"
+
+requestListIncidentRecords :: ListIncidentRecords -> TestTree
+requestListIncidentRecords =
+  req
+    "ListIncidentRecords"
+    "fixture/ListIncidentRecords.yaml"
+
+requestListRelatedItems :: ListRelatedItems -> TestTree
+requestListRelatedItems =
+  req
+    "ListRelatedItems"
+    "fixture/ListRelatedItems.yaml"
+
+requestListReplicationSets :: ListReplicationSets -> TestTree
+requestListReplicationSets =
+  req
+    "ListReplicationSets"
+    "fixture/ListReplicationSets.yaml"
+
+requestListResponsePlans :: ListResponsePlans -> TestTree
+requestListResponsePlans =
+  req
+    "ListResponsePlans"
+    "fixture/ListResponsePlans.yaml"
+
+requestListTagsForResource :: ListTagsForResource -> TestTree
+requestListTagsForResource =
+  req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource.yaml"
+
+requestListTimelineEvents :: ListTimelineEvents -> TestTree
+requestListTimelineEvents =
+  req
+    "ListTimelineEvents"
+    "fixture/ListTimelineEvents.yaml"
+
+requestPutResourcePolicy :: PutResourcePolicy -> TestTree
+requestPutResourcePolicy =
+  req
+    "PutResourcePolicy"
+    "fixture/PutResourcePolicy.yaml"
+
+requestStartIncident :: StartIncident -> TestTree
+requestStartIncident =
+  req
+    "StartIncident"
+    "fixture/StartIncident.yaml"
+
+requestTagResource :: TagResource -> TestTree
+requestTagResource =
+  req
+    "TagResource"
+    "fixture/TagResource.yaml"
+
+requestUntagResource :: UntagResource -> TestTree
+requestUntagResource =
+  req
+    "UntagResource"
+    "fixture/UntagResource.yaml"
+
+requestUpdateDeletionProtection :: UpdateDeletionProtection -> TestTree
+requestUpdateDeletionProtection =
+  req
+    "UpdateDeletionProtection"
+    "fixture/UpdateDeletionProtection.yaml"
+
+requestUpdateIncidentRecord :: UpdateIncidentRecord -> TestTree
+requestUpdateIncidentRecord =
+  req
+    "UpdateIncidentRecord"
+    "fixture/UpdateIncidentRecord.yaml"
+
+requestUpdateRelatedItems :: UpdateRelatedItems -> TestTree
+requestUpdateRelatedItems =
+  req
+    "UpdateRelatedItems"
+    "fixture/UpdateRelatedItems.yaml"
+
+requestUpdateReplicationSet :: UpdateReplicationSet -> TestTree
+requestUpdateReplicationSet =
+  req
+    "UpdateReplicationSet"
+    "fixture/UpdateReplicationSet.yaml"
+
+requestUpdateResponsePlan :: UpdateResponsePlan -> TestTree
+requestUpdateResponsePlan =
+  req
+    "UpdateResponsePlan"
+    "fixture/UpdateResponsePlan.yaml"
+
+requestUpdateTimelineEvent :: UpdateTimelineEvent -> TestTree
+requestUpdateTimelineEvent =
+  req
+    "UpdateTimelineEvent"
+    "fixture/UpdateTimelineEvent.yaml"
+
+-- Responses
+
+responseCreateReplicationSet :: CreateReplicationSetResponse -> TestTree
+responseCreateReplicationSet =
+  res
+    "CreateReplicationSetResponse"
+    "fixture/CreateReplicationSetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateReplicationSet)
+
+responseCreateResponsePlan :: CreateResponsePlanResponse -> TestTree
+responseCreateResponsePlan =
+  res
+    "CreateResponsePlanResponse"
+    "fixture/CreateResponsePlanResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateResponsePlan)
+
+responseCreateTimelineEvent :: CreateTimelineEventResponse -> TestTree
+responseCreateTimelineEvent =
+  res
+    "CreateTimelineEventResponse"
+    "fixture/CreateTimelineEventResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateTimelineEvent)
+
+responseDeleteIncidentRecord :: DeleteIncidentRecordResponse -> TestTree
+responseDeleteIncidentRecord =
+  res
+    "DeleteIncidentRecordResponse"
+    "fixture/DeleteIncidentRecordResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteIncidentRecord)
+
+responseDeleteReplicationSet :: DeleteReplicationSetResponse -> TestTree
+responseDeleteReplicationSet =
+  res
+    "DeleteReplicationSetResponse"
+    "fixture/DeleteReplicationSetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteReplicationSet)
+
+responseDeleteResourcePolicy :: DeleteResourcePolicyResponse -> TestTree
+responseDeleteResourcePolicy =
+  res
+    "DeleteResourcePolicyResponse"
+    "fixture/DeleteResourcePolicyResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteResourcePolicy)
+
+responseDeleteResponsePlan :: DeleteResponsePlanResponse -> TestTree
+responseDeleteResponsePlan =
+  res
+    "DeleteResponsePlanResponse"
+    "fixture/DeleteResponsePlanResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteResponsePlan)
+
+responseDeleteTimelineEvent :: DeleteTimelineEventResponse -> TestTree
+responseDeleteTimelineEvent =
+  res
+    "DeleteTimelineEventResponse"
+    "fixture/DeleteTimelineEventResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteTimelineEvent)
+
+responseGetIncidentRecord :: GetIncidentRecordResponse -> TestTree
+responseGetIncidentRecord =
+  res
+    "GetIncidentRecordResponse"
+    "fixture/GetIncidentRecordResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetIncidentRecord)
+
+responseGetReplicationSet :: GetReplicationSetResponse -> TestTree
+responseGetReplicationSet =
+  res
+    "GetReplicationSetResponse"
+    "fixture/GetReplicationSetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetReplicationSet)
+
+responseGetResourcePolicies :: GetResourcePoliciesResponse -> TestTree
+responseGetResourcePolicies =
+  res
+    "GetResourcePoliciesResponse"
+    "fixture/GetResourcePoliciesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetResourcePolicies)
+
+responseGetResponsePlan :: GetResponsePlanResponse -> TestTree
+responseGetResponsePlan =
+  res
+    "GetResponsePlanResponse"
+    "fixture/GetResponsePlanResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetResponsePlan)
+
+responseGetTimelineEvent :: GetTimelineEventResponse -> TestTree
+responseGetTimelineEvent =
+  res
+    "GetTimelineEventResponse"
+    "fixture/GetTimelineEventResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetTimelineEvent)
+
+responseListIncidentRecords :: ListIncidentRecordsResponse -> TestTree
+responseListIncidentRecords =
+  res
+    "ListIncidentRecordsResponse"
+    "fixture/ListIncidentRecordsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListIncidentRecords)
+
+responseListRelatedItems :: ListRelatedItemsResponse -> TestTree
+responseListRelatedItems =
+  res
+    "ListRelatedItemsResponse"
+    "fixture/ListRelatedItemsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListRelatedItems)
+
+responseListReplicationSets :: ListReplicationSetsResponse -> TestTree
+responseListReplicationSets =
+  res
+    "ListReplicationSetsResponse"
+    "fixture/ListReplicationSetsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListReplicationSets)
+
+responseListResponsePlans :: ListResponsePlansResponse -> TestTree
+responseListResponsePlans =
+  res
+    "ListResponsePlansResponse"
+    "fixture/ListResponsePlansResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListResponsePlans)
+
+responseListTagsForResource :: ListTagsForResourceResponse -> TestTree
+responseListTagsForResource =
+  res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)
+
+responseListTimelineEvents :: ListTimelineEventsResponse -> TestTree
+responseListTimelineEvents =
+  res
+    "ListTimelineEventsResponse"
+    "fixture/ListTimelineEventsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTimelineEvents)
+
+responsePutResourcePolicy :: PutResourcePolicyResponse -> TestTree
+responsePutResourcePolicy =
+  res
+    "PutResourcePolicyResponse"
+    "fixture/PutResourcePolicyResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy PutResourcePolicy)
+
+responseStartIncident :: StartIncidentResponse -> TestTree
+responseStartIncident =
+  res
+    "StartIncidentResponse"
+    "fixture/StartIncidentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StartIncident)
+
+responseTagResource :: TagResourceResponse -> TestTree
+responseTagResource =
+  res
+    "TagResourceResponse"
+    "fixture/TagResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy TagResource)
+
+responseUntagResource :: UntagResourceResponse -> TestTree
+responseUntagResource =
+  res
+    "UntagResourceResponse"
+    "fixture/UntagResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UntagResource)
+
+responseUpdateDeletionProtection :: UpdateDeletionProtectionResponse -> TestTree
+responseUpdateDeletionProtection =
+  res
+    "UpdateDeletionProtectionResponse"
+    "fixture/UpdateDeletionProtectionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateDeletionProtection)
+
+responseUpdateIncidentRecord :: UpdateIncidentRecordResponse -> TestTree
+responseUpdateIncidentRecord =
+  res
+    "UpdateIncidentRecordResponse"
+    "fixture/UpdateIncidentRecordResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateIncidentRecord)
+
+responseUpdateRelatedItems :: UpdateRelatedItemsResponse -> TestTree
+responseUpdateRelatedItems =
+  res
+    "UpdateRelatedItemsResponse"
+    "fixture/UpdateRelatedItemsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateRelatedItems)
+
+responseUpdateReplicationSet :: UpdateReplicationSetResponse -> TestTree
+responseUpdateReplicationSet =
+  res
+    "UpdateReplicationSetResponse"
+    "fixture/UpdateReplicationSetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateReplicationSet)
+
+responseUpdateResponsePlan :: UpdateResponsePlanResponse -> TestTree
+responseUpdateResponsePlan =
+  res
+    "UpdateResponsePlanResponse"
+    "fixture/UpdateResponsePlanResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateResponsePlan)
+
+responseUpdateTimelineEvent :: UpdateTimelineEventResponse -> TestTree
+responseUpdateTimelineEvent =
+  res
+    "UpdateTimelineEventResponse"
+    "fixture/UpdateTimelineEventResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateTimelineEvent)
diff --git a/test/Test/Amazonka/SSMIncidents.hs b/test/Test/Amazonka/SSMIncidents.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/SSMIncidents.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.SSMIncidents
+-- 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.SSMIncidents
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/SSMIncidents/Internal.hs b/test/Test/Amazonka/SSMIncidents/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/SSMIncidents/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.SSMIncidents.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.SSMIncidents.Internal where
