packages feed

amazonka-customer-profiles (empty) → 2.0

raw patch · 198 files changed

+23113/−0 lines, 198 filesdep +amazonka-coredep +amazonka-customer-profilesdep +amazonka-test

Dependencies added: amazonka-core, amazonka-customer-profiles, amazonka-test, base, bytestring, case-insensitive, tasty, tasty-hunit, text, time, unordered-containers

Files

+ LICENSE view
@@ -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.
+ README.md view
@@ -0,0 +1,44 @@+# Amazon Connect Customer Profiles SDK++* [Version](#version)+* [Description](#description)+* [Contribute](#contribute)+* [Licence](#licence)+++## Version+ +`2.0` - Derived from API version @2020-08-15@ of the AWS service descriptions, licensed under Apache 2.0.++## Description++Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-customer-profiles)+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.CustomerProfiles](http://hackage.haskell.org/package/amazonka-customer-profiles/docs/Amazonka-CustomerProfiles.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-customer-profiles` 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.
+ amazonka-customer-profiles.cabal view
@@ -0,0 +1,193 @@+cabal-version:      2.2+name:               amazonka-customer-profiles+version:            2.0+synopsis:           Amazon Connect Customer Profiles 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 @2020-08-15@ 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.CustomerProfiles.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.CustomerProfiles" 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-customer-profiles++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.CustomerProfiles+    Amazonka.CustomerProfiles.AddProfileKey+    Amazonka.CustomerProfiles.CreateDomain+    Amazonka.CustomerProfiles.CreateIntegrationWorkflow+    Amazonka.CustomerProfiles.CreateProfile+    Amazonka.CustomerProfiles.DeleteDomain+    Amazonka.CustomerProfiles.DeleteIntegration+    Amazonka.CustomerProfiles.DeleteProfile+    Amazonka.CustomerProfiles.DeleteProfileKey+    Amazonka.CustomerProfiles.DeleteProfileObject+    Amazonka.CustomerProfiles.DeleteProfileObjectType+    Amazonka.CustomerProfiles.DeleteWorkflow+    Amazonka.CustomerProfiles.GetAutoMergingPreview+    Amazonka.CustomerProfiles.GetDomain+    Amazonka.CustomerProfiles.GetIdentityResolutionJob+    Amazonka.CustomerProfiles.GetIntegration+    Amazonka.CustomerProfiles.GetMatches+    Amazonka.CustomerProfiles.GetProfileObjectType+    Amazonka.CustomerProfiles.GetProfileObjectTypeTemplate+    Amazonka.CustomerProfiles.GetWorkflow+    Amazonka.CustomerProfiles.GetWorkflowSteps+    Amazonka.CustomerProfiles.Lens+    Amazonka.CustomerProfiles.ListAccountIntegrations+    Amazonka.CustomerProfiles.ListDomains+    Amazonka.CustomerProfiles.ListIdentityResolutionJobs+    Amazonka.CustomerProfiles.ListIntegrations+    Amazonka.CustomerProfiles.ListProfileObjects+    Amazonka.CustomerProfiles.ListProfileObjectTypes+    Amazonka.CustomerProfiles.ListProfileObjectTypeTemplates+    Amazonka.CustomerProfiles.ListTagsForResource+    Amazonka.CustomerProfiles.ListWorkflows+    Amazonka.CustomerProfiles.MergeProfiles+    Amazonka.CustomerProfiles.PutIntegration+    Amazonka.CustomerProfiles.PutProfileObject+    Amazonka.CustomerProfiles.PutProfileObjectType+    Amazonka.CustomerProfiles.SearchProfiles+    Amazonka.CustomerProfiles.TagResource+    Amazonka.CustomerProfiles.Types+    Amazonka.CustomerProfiles.Types.AdditionalSearchKey+    Amazonka.CustomerProfiles.Types.Address+    Amazonka.CustomerProfiles.Types.AppflowIntegration+    Amazonka.CustomerProfiles.Types.AppflowIntegrationWorkflowAttributes+    Amazonka.CustomerProfiles.Types.AppflowIntegrationWorkflowMetrics+    Amazonka.CustomerProfiles.Types.AppflowIntegrationWorkflowStep+    Amazonka.CustomerProfiles.Types.AutoMerging+    Amazonka.CustomerProfiles.Types.Batch+    Amazonka.CustomerProfiles.Types.ConflictResolution+    Amazonka.CustomerProfiles.Types.ConflictResolvingModel+    Amazonka.CustomerProfiles.Types.ConnectorOperator+    Amazonka.CustomerProfiles.Types.Consolidation+    Amazonka.CustomerProfiles.Types.DataPullMode+    Amazonka.CustomerProfiles.Types.DomainStats+    Amazonka.CustomerProfiles.Types.ExportingConfig+    Amazonka.CustomerProfiles.Types.ExportingLocation+    Amazonka.CustomerProfiles.Types.FieldContentType+    Amazonka.CustomerProfiles.Types.FieldSourceProfileIds+    Amazonka.CustomerProfiles.Types.FlowDefinition+    Amazonka.CustomerProfiles.Types.FoundByKeyValue+    Amazonka.CustomerProfiles.Types.Gender+    Amazonka.CustomerProfiles.Types.IdentityResolutionJob+    Amazonka.CustomerProfiles.Types.IdentityResolutionJobStatus+    Amazonka.CustomerProfiles.Types.IncrementalPullConfig+    Amazonka.CustomerProfiles.Types.IntegrationConfig+    Amazonka.CustomerProfiles.Types.JobSchedule+    Amazonka.CustomerProfiles.Types.JobScheduleDayOfTheWeek+    Amazonka.CustomerProfiles.Types.JobStats+    Amazonka.CustomerProfiles.Types.ListDomainItem+    Amazonka.CustomerProfiles.Types.ListIntegrationItem+    Amazonka.CustomerProfiles.Types.ListProfileObjectsItem+    Amazonka.CustomerProfiles.Types.ListProfileObjectTypeItem+    Amazonka.CustomerProfiles.Types.ListProfileObjectTypeTemplateItem+    Amazonka.CustomerProfiles.Types.ListWorkflowsItem+    Amazonka.CustomerProfiles.Types.LogicalOperator+    Amazonka.CustomerProfiles.Types.MarketoConnectorOperator+    Amazonka.CustomerProfiles.Types.MarketoSourceProperties+    Amazonka.CustomerProfiles.Types.MatchingRequest+    Amazonka.CustomerProfiles.Types.MatchingResponse+    Amazonka.CustomerProfiles.Types.MatchItem+    Amazonka.CustomerProfiles.Types.ObjectFilter+    Amazonka.CustomerProfiles.Types.ObjectTypeField+    Amazonka.CustomerProfiles.Types.ObjectTypeKey+    Amazonka.CustomerProfiles.Types.OperatorPropertiesKeys+    Amazonka.CustomerProfiles.Types.PartyType+    Amazonka.CustomerProfiles.Types.Profile+    Amazonka.CustomerProfiles.Types.S3ConnectorOperator+    Amazonka.CustomerProfiles.Types.S3ExportingConfig+    Amazonka.CustomerProfiles.Types.S3ExportingLocation+    Amazonka.CustomerProfiles.Types.S3SourceProperties+    Amazonka.CustomerProfiles.Types.SalesforceConnectorOperator+    Amazonka.CustomerProfiles.Types.SalesforceSourceProperties+    Amazonka.CustomerProfiles.Types.ScheduledTriggerProperties+    Amazonka.CustomerProfiles.Types.ServiceNowConnectorOperator+    Amazonka.CustomerProfiles.Types.ServiceNowSourceProperties+    Amazonka.CustomerProfiles.Types.SourceConnectorProperties+    Amazonka.CustomerProfiles.Types.SourceConnectorType+    Amazonka.CustomerProfiles.Types.SourceFlowConfig+    Amazonka.CustomerProfiles.Types.StandardIdentifier+    Amazonka.CustomerProfiles.Types.Status+    Amazonka.CustomerProfiles.Types.Task+    Amazonka.CustomerProfiles.Types.TaskType+    Amazonka.CustomerProfiles.Types.TriggerConfig+    Amazonka.CustomerProfiles.Types.TriggerProperties+    Amazonka.CustomerProfiles.Types.TriggerType+    Amazonka.CustomerProfiles.Types.UpdateAddress+    Amazonka.CustomerProfiles.Types.WorkflowAttributes+    Amazonka.CustomerProfiles.Types.WorkflowMetrics+    Amazonka.CustomerProfiles.Types.WorkflowStepItem+    Amazonka.CustomerProfiles.Types.WorkflowType+    Amazonka.CustomerProfiles.Types.ZendeskConnectorOperator+    Amazonka.CustomerProfiles.Types.ZendeskSourceProperties+    Amazonka.CustomerProfiles.UntagResource+    Amazonka.CustomerProfiles.UpdateDomain+    Amazonka.CustomerProfiles.UpdateProfile+    Amazonka.CustomerProfiles.Waiters++  build-depends:+    , amazonka-core  >=2.0  && <2.1+    , base           >=4.12 && <5++test-suite amazonka-customer-profiles-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.CustomerProfiles+    Test.Amazonka.CustomerProfiles.Internal+    Test.Amazonka.Gen.CustomerProfiles++  build-depends:+    , amazonka-core               >=2.0 && <2.1+    , amazonka-customer-profiles+    , amazonka-test               >=2.0 && <2.1+    , base+    , bytestring+    , case-insensitive+    , tasty+    , tasty-hunit+    , text+    , time+    , unordered-containers
+ fixture/AddProfileKey.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/AddProfileKeyResponse.proto view
+ fixture/CreateDomain.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/CreateDomainResponse.proto view
+ fixture/CreateIntegrationWorkflow.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/CreateIntegrationWorkflowResponse.proto view
+ fixture/CreateProfile.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/CreateProfileResponse.proto view
+ fixture/DeleteDomain.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DeleteDomainResponse.proto view
+ fixture/DeleteIntegration.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DeleteIntegrationResponse.proto view
+ fixture/DeleteProfile.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DeleteProfileKey.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DeleteProfileKeyResponse.proto view
+ fixture/DeleteProfileObject.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DeleteProfileObjectResponse.proto view
+ fixture/DeleteProfileObjectType.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DeleteProfileObjectTypeResponse.proto view
+ fixture/DeleteProfileResponse.proto view
+ fixture/DeleteWorkflow.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DeleteWorkflowResponse.proto view
+ fixture/GetAutoMergingPreview.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/GetAutoMergingPreviewResponse.proto view
+ fixture/GetDomain.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/GetDomainResponse.proto view
+ fixture/GetIdentityResolutionJob.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/GetIdentityResolutionJobResponse.proto view
+ fixture/GetIntegration.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/GetIntegrationResponse.proto view
+ fixture/GetMatches.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/GetMatchesResponse.proto view
+ fixture/GetProfileObjectType.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/GetProfileObjectTypeResponse.proto view
+ fixture/GetProfileObjectTypeTemplate.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/GetProfileObjectTypeTemplateResponse.proto view
+ fixture/GetWorkflow.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/GetWorkflowResponse.proto view
+ fixture/GetWorkflowSteps.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/GetWorkflowStepsResponse.proto view
+ fixture/ListAccountIntegrations.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListAccountIntegrationsResponse.proto view
+ fixture/ListDomains.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListDomainsResponse.proto view
+ fixture/ListIdentityResolutionJobs.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListIdentityResolutionJobsResponse.proto view
+ fixture/ListIntegrations.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListIntegrationsResponse.proto view
+ fixture/ListProfileObjectTypeTemplates.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListProfileObjectTypeTemplatesResponse.proto view
+ fixture/ListProfileObjectTypes.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListProfileObjectTypesResponse.proto view
+ fixture/ListProfileObjects.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListProfileObjectsResponse.proto view
+ fixture/ListTagsForResource.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListTagsForResourceResponse.proto view
+ fixture/ListWorkflows.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListWorkflowsResponse.proto view
+ fixture/MergeProfiles.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/MergeProfilesResponse.proto view
+ fixture/PutIntegration.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/PutIntegrationResponse.proto view
+ fixture/PutProfileObject.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/PutProfileObjectResponse.proto view
+ fixture/PutProfileObjectType.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/PutProfileObjectTypeResponse.proto view
+ fixture/SearchProfiles.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/SearchProfilesResponse.proto view
+ fixture/TagResource.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/TagResourceResponse.proto view
+ fixture/UntagResource.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/UntagResourceResponse.proto view
+ fixture/UpdateDomain.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/UpdateDomainResponse.proto view
+ fixture/UpdateProfile.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/profile/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  profile.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/UpdateProfileResponse.proto view
+ gen/Amazonka/CustomerProfiles.hs view
@@ -0,0 +1,619 @@+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Amazonka.CustomerProfiles+-- 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 @2020-08-15@ of the AWS service descriptions, licensed under Apache 2.0.+--+-- Amazon Connect Customer Profiles+--+-- Amazon Connect Customer Profiles is a unified customer profile for your+-- contact center that has pre-built connectors powered by AppFlow that+-- make it easy to combine customer information from third party+-- applications, such as Salesforce (CRM), ServiceNow (ITSM), and your+-- enterprise resource planning (ERP), with contact history from your+-- Amazon Connect contact center. If you\'re new to Amazon Connect, you+-- might find it helpful to review the+-- <https://docs.aws.amazon.com/connect/latest/adminguide/ Amazon Connect Administrator Guide>.+module Amazonka.CustomerProfiles+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    -- $errors++    -- ** AccessDeniedException+    _AccessDeniedException,++    -- ** BadRequestException+    _BadRequestException,++    -- ** InternalServerException+    _InternalServerException,++    -- ** ResourceNotFoundException+    _ResourceNotFoundException,++    -- ** ThrottlingException+    _ThrottlingException,++    -- * Waiters+    -- $waiters++    -- * Operations+    -- $operations++    -- ** AddProfileKey+    AddProfileKey (AddProfileKey'),+    newAddProfileKey,+    AddProfileKeyResponse (AddProfileKeyResponse'),+    newAddProfileKeyResponse,++    -- ** CreateDomain+    CreateDomain (CreateDomain'),+    newCreateDomain,+    CreateDomainResponse (CreateDomainResponse'),+    newCreateDomainResponse,++    -- ** CreateIntegrationWorkflow+    CreateIntegrationWorkflow (CreateIntegrationWorkflow'),+    newCreateIntegrationWorkflow,+    CreateIntegrationWorkflowResponse (CreateIntegrationWorkflowResponse'),+    newCreateIntegrationWorkflowResponse,++    -- ** CreateProfile+    CreateProfile (CreateProfile'),+    newCreateProfile,+    CreateProfileResponse (CreateProfileResponse'),+    newCreateProfileResponse,++    -- ** DeleteDomain+    DeleteDomain (DeleteDomain'),+    newDeleteDomain,+    DeleteDomainResponse (DeleteDomainResponse'),+    newDeleteDomainResponse,++    -- ** DeleteIntegration+    DeleteIntegration (DeleteIntegration'),+    newDeleteIntegration,+    DeleteIntegrationResponse (DeleteIntegrationResponse'),+    newDeleteIntegrationResponse,++    -- ** DeleteProfile+    DeleteProfile (DeleteProfile'),+    newDeleteProfile,+    DeleteProfileResponse (DeleteProfileResponse'),+    newDeleteProfileResponse,++    -- ** DeleteProfileKey+    DeleteProfileKey (DeleteProfileKey'),+    newDeleteProfileKey,+    DeleteProfileKeyResponse (DeleteProfileKeyResponse'),+    newDeleteProfileKeyResponse,++    -- ** DeleteProfileObject+    DeleteProfileObject (DeleteProfileObject'),+    newDeleteProfileObject,+    DeleteProfileObjectResponse (DeleteProfileObjectResponse'),+    newDeleteProfileObjectResponse,++    -- ** DeleteProfileObjectType+    DeleteProfileObjectType (DeleteProfileObjectType'),+    newDeleteProfileObjectType,+    DeleteProfileObjectTypeResponse (DeleteProfileObjectTypeResponse'),+    newDeleteProfileObjectTypeResponse,++    -- ** DeleteWorkflow+    DeleteWorkflow (DeleteWorkflow'),+    newDeleteWorkflow,+    DeleteWorkflowResponse (DeleteWorkflowResponse'),+    newDeleteWorkflowResponse,++    -- ** GetAutoMergingPreview+    GetAutoMergingPreview (GetAutoMergingPreview'),+    newGetAutoMergingPreview,+    GetAutoMergingPreviewResponse (GetAutoMergingPreviewResponse'),+    newGetAutoMergingPreviewResponse,++    -- ** GetDomain+    GetDomain (GetDomain'),+    newGetDomain,+    GetDomainResponse (GetDomainResponse'),+    newGetDomainResponse,++    -- ** GetIdentityResolutionJob+    GetIdentityResolutionJob (GetIdentityResolutionJob'),+    newGetIdentityResolutionJob,+    GetIdentityResolutionJobResponse (GetIdentityResolutionJobResponse'),+    newGetIdentityResolutionJobResponse,++    -- ** GetIntegration+    GetIntegration (GetIntegration'),+    newGetIntegration,+    GetIntegrationResponse (GetIntegrationResponse'),+    newGetIntegrationResponse,++    -- ** GetMatches+    GetMatches (GetMatches'),+    newGetMatches,+    GetMatchesResponse (GetMatchesResponse'),+    newGetMatchesResponse,++    -- ** GetProfileObjectType+    GetProfileObjectType (GetProfileObjectType'),+    newGetProfileObjectType,+    GetProfileObjectTypeResponse (GetProfileObjectTypeResponse'),+    newGetProfileObjectTypeResponse,++    -- ** GetProfileObjectTypeTemplate+    GetProfileObjectTypeTemplate (GetProfileObjectTypeTemplate'),+    newGetProfileObjectTypeTemplate,+    GetProfileObjectTypeTemplateResponse (GetProfileObjectTypeTemplateResponse'),+    newGetProfileObjectTypeTemplateResponse,++    -- ** GetWorkflow+    GetWorkflow (GetWorkflow'),+    newGetWorkflow,+    GetWorkflowResponse (GetWorkflowResponse'),+    newGetWorkflowResponse,++    -- ** GetWorkflowSteps+    GetWorkflowSteps (GetWorkflowSteps'),+    newGetWorkflowSteps,+    GetWorkflowStepsResponse (GetWorkflowStepsResponse'),+    newGetWorkflowStepsResponse,++    -- ** ListAccountIntegrations+    ListAccountIntegrations (ListAccountIntegrations'),+    newListAccountIntegrations,+    ListAccountIntegrationsResponse (ListAccountIntegrationsResponse'),+    newListAccountIntegrationsResponse,++    -- ** ListDomains+    ListDomains (ListDomains'),+    newListDomains,+    ListDomainsResponse (ListDomainsResponse'),+    newListDomainsResponse,++    -- ** ListIdentityResolutionJobs+    ListIdentityResolutionJobs (ListIdentityResolutionJobs'),+    newListIdentityResolutionJobs,+    ListIdentityResolutionJobsResponse (ListIdentityResolutionJobsResponse'),+    newListIdentityResolutionJobsResponse,++    -- ** ListIntegrations+    ListIntegrations (ListIntegrations'),+    newListIntegrations,+    ListIntegrationsResponse (ListIntegrationsResponse'),+    newListIntegrationsResponse,++    -- ** ListProfileObjectTypeTemplates+    ListProfileObjectTypeTemplates (ListProfileObjectTypeTemplates'),+    newListProfileObjectTypeTemplates,+    ListProfileObjectTypeTemplatesResponse (ListProfileObjectTypeTemplatesResponse'),+    newListProfileObjectTypeTemplatesResponse,++    -- ** ListProfileObjectTypes+    ListProfileObjectTypes (ListProfileObjectTypes'),+    newListProfileObjectTypes,+    ListProfileObjectTypesResponse (ListProfileObjectTypesResponse'),+    newListProfileObjectTypesResponse,++    -- ** ListProfileObjects+    ListProfileObjects (ListProfileObjects'),+    newListProfileObjects,+    ListProfileObjectsResponse (ListProfileObjectsResponse'),+    newListProfileObjectsResponse,++    -- ** ListTagsForResource+    ListTagsForResource (ListTagsForResource'),+    newListTagsForResource,+    ListTagsForResourceResponse (ListTagsForResourceResponse'),+    newListTagsForResourceResponse,++    -- ** ListWorkflows+    ListWorkflows (ListWorkflows'),+    newListWorkflows,+    ListWorkflowsResponse (ListWorkflowsResponse'),+    newListWorkflowsResponse,++    -- ** MergeProfiles+    MergeProfiles (MergeProfiles'),+    newMergeProfiles,+    MergeProfilesResponse (MergeProfilesResponse'),+    newMergeProfilesResponse,++    -- ** PutIntegration+    PutIntegration (PutIntegration'),+    newPutIntegration,+    PutIntegrationResponse (PutIntegrationResponse'),+    newPutIntegrationResponse,++    -- ** PutProfileObject+    PutProfileObject (PutProfileObject'),+    newPutProfileObject,+    PutProfileObjectResponse (PutProfileObjectResponse'),+    newPutProfileObjectResponse,++    -- ** PutProfileObjectType+    PutProfileObjectType (PutProfileObjectType'),+    newPutProfileObjectType,+    PutProfileObjectTypeResponse (PutProfileObjectTypeResponse'),+    newPutProfileObjectTypeResponse,++    -- ** SearchProfiles+    SearchProfiles (SearchProfiles'),+    newSearchProfiles,+    SearchProfilesResponse (SearchProfilesResponse'),+    newSearchProfilesResponse,++    -- ** TagResource+    TagResource (TagResource'),+    newTagResource,+    TagResourceResponse (TagResourceResponse'),+    newTagResourceResponse,++    -- ** UntagResource+    UntagResource (UntagResource'),+    newUntagResource,+    UntagResourceResponse (UntagResourceResponse'),+    newUntagResourceResponse,++    -- ** UpdateDomain+    UpdateDomain (UpdateDomain'),+    newUpdateDomain,+    UpdateDomainResponse (UpdateDomainResponse'),+    newUpdateDomainResponse,++    -- ** UpdateProfile+    UpdateProfile (UpdateProfile'),+    newUpdateProfile,+    UpdateProfileResponse (UpdateProfileResponse'),+    newUpdateProfileResponse,++    -- * Types++    -- ** ConflictResolvingModel+    ConflictResolvingModel (..),++    -- ** DataPullMode+    DataPullMode (..),++    -- ** FieldContentType+    FieldContentType (..),++    -- ** Gender+    Gender (..),++    -- ** IdentityResolutionJobStatus+    IdentityResolutionJobStatus (..),++    -- ** JobScheduleDayOfTheWeek+    JobScheduleDayOfTheWeek (..),++    -- ** LogicalOperator+    LogicalOperator (..),++    -- ** MarketoConnectorOperator+    MarketoConnectorOperator (..),++    -- ** OperatorPropertiesKeys+    OperatorPropertiesKeys (..),++    -- ** PartyType+    PartyType (..),++    -- ** S3ConnectorOperator+    S3ConnectorOperator (..),++    -- ** SalesforceConnectorOperator+    SalesforceConnectorOperator (..),++    -- ** ServiceNowConnectorOperator+    ServiceNowConnectorOperator (..),++    -- ** SourceConnectorType+    SourceConnectorType (..),++    -- ** StandardIdentifier+    StandardIdentifier (..),++    -- ** Status+    Status (..),++    -- ** TaskType+    TaskType (..),++    -- ** TriggerType+    TriggerType (..),++    -- ** WorkflowType+    WorkflowType (..),++    -- ** ZendeskConnectorOperator+    ZendeskConnectorOperator (..),++    -- ** AdditionalSearchKey+    AdditionalSearchKey (AdditionalSearchKey'),+    newAdditionalSearchKey,++    -- ** Address+    Address (Address'),+    newAddress,++    -- ** AppflowIntegration+    AppflowIntegration (AppflowIntegration'),+    newAppflowIntegration,++    -- ** AppflowIntegrationWorkflowAttributes+    AppflowIntegrationWorkflowAttributes (AppflowIntegrationWorkflowAttributes'),+    newAppflowIntegrationWorkflowAttributes,++    -- ** AppflowIntegrationWorkflowMetrics+    AppflowIntegrationWorkflowMetrics (AppflowIntegrationWorkflowMetrics'),+    newAppflowIntegrationWorkflowMetrics,++    -- ** AppflowIntegrationWorkflowStep+    AppflowIntegrationWorkflowStep (AppflowIntegrationWorkflowStep'),+    newAppflowIntegrationWorkflowStep,++    -- ** AutoMerging+    AutoMerging (AutoMerging'),+    newAutoMerging,++    -- ** Batch+    Batch (Batch'),+    newBatch,++    -- ** ConflictResolution+    ConflictResolution (ConflictResolution'),+    newConflictResolution,++    -- ** ConnectorOperator+    ConnectorOperator (ConnectorOperator'),+    newConnectorOperator,++    -- ** Consolidation+    Consolidation (Consolidation'),+    newConsolidation,++    -- ** DomainStats+    DomainStats (DomainStats'),+    newDomainStats,++    -- ** ExportingConfig+    ExportingConfig (ExportingConfig'),+    newExportingConfig,++    -- ** ExportingLocation+    ExportingLocation (ExportingLocation'),+    newExportingLocation,++    -- ** FieldSourceProfileIds+    FieldSourceProfileIds (FieldSourceProfileIds'),+    newFieldSourceProfileIds,++    -- ** FlowDefinition+    FlowDefinition (FlowDefinition'),+    newFlowDefinition,++    -- ** FoundByKeyValue+    FoundByKeyValue (FoundByKeyValue'),+    newFoundByKeyValue,++    -- ** IdentityResolutionJob+    IdentityResolutionJob (IdentityResolutionJob'),+    newIdentityResolutionJob,++    -- ** IncrementalPullConfig+    IncrementalPullConfig (IncrementalPullConfig'),+    newIncrementalPullConfig,++    -- ** IntegrationConfig+    IntegrationConfig (IntegrationConfig'),+    newIntegrationConfig,++    -- ** JobSchedule+    JobSchedule (JobSchedule'),+    newJobSchedule,++    -- ** JobStats+    JobStats (JobStats'),+    newJobStats,++    -- ** ListDomainItem+    ListDomainItem (ListDomainItem'),+    newListDomainItem,++    -- ** ListIntegrationItem+    ListIntegrationItem (ListIntegrationItem'),+    newListIntegrationItem,++    -- ** ListProfileObjectTypeItem+    ListProfileObjectTypeItem (ListProfileObjectTypeItem'),+    newListProfileObjectTypeItem,++    -- ** ListProfileObjectTypeTemplateItem+    ListProfileObjectTypeTemplateItem (ListProfileObjectTypeTemplateItem'),+    newListProfileObjectTypeTemplateItem,++    -- ** ListProfileObjectsItem+    ListProfileObjectsItem (ListProfileObjectsItem'),+    newListProfileObjectsItem,++    -- ** ListWorkflowsItem+    ListWorkflowsItem (ListWorkflowsItem'),+    newListWorkflowsItem,++    -- ** MarketoSourceProperties+    MarketoSourceProperties (MarketoSourceProperties'),+    newMarketoSourceProperties,++    -- ** MatchItem+    MatchItem (MatchItem'),+    newMatchItem,++    -- ** MatchingRequest+    MatchingRequest (MatchingRequest'),+    newMatchingRequest,++    -- ** MatchingResponse+    MatchingResponse (MatchingResponse'),+    newMatchingResponse,++    -- ** ObjectFilter+    ObjectFilter (ObjectFilter'),+    newObjectFilter,++    -- ** ObjectTypeField+    ObjectTypeField (ObjectTypeField'),+    newObjectTypeField,++    -- ** ObjectTypeKey+    ObjectTypeKey (ObjectTypeKey'),+    newObjectTypeKey,++    -- ** Profile+    Profile (Profile'),+    newProfile,++    -- ** S3ExportingConfig+    S3ExportingConfig (S3ExportingConfig'),+    newS3ExportingConfig,++    -- ** S3ExportingLocation+    S3ExportingLocation (S3ExportingLocation'),+    newS3ExportingLocation,++    -- ** S3SourceProperties+    S3SourceProperties (S3SourceProperties'),+    newS3SourceProperties,++    -- ** SalesforceSourceProperties+    SalesforceSourceProperties (SalesforceSourceProperties'),+    newSalesforceSourceProperties,++    -- ** ScheduledTriggerProperties+    ScheduledTriggerProperties (ScheduledTriggerProperties'),+    newScheduledTriggerProperties,++    -- ** ServiceNowSourceProperties+    ServiceNowSourceProperties (ServiceNowSourceProperties'),+    newServiceNowSourceProperties,++    -- ** SourceConnectorProperties+    SourceConnectorProperties (SourceConnectorProperties'),+    newSourceConnectorProperties,++    -- ** SourceFlowConfig+    SourceFlowConfig (SourceFlowConfig'),+    newSourceFlowConfig,++    -- ** Task+    Task (Task'),+    newTask,++    -- ** TriggerConfig+    TriggerConfig (TriggerConfig'),+    newTriggerConfig,++    -- ** TriggerProperties+    TriggerProperties (TriggerProperties'),+    newTriggerProperties,++    -- ** UpdateAddress+    UpdateAddress (UpdateAddress'),+    newUpdateAddress,++    -- ** WorkflowAttributes+    WorkflowAttributes (WorkflowAttributes'),+    newWorkflowAttributes,++    -- ** WorkflowMetrics+    WorkflowMetrics (WorkflowMetrics'),+    newWorkflowMetrics,++    -- ** WorkflowStepItem+    WorkflowStepItem (WorkflowStepItem'),+    newWorkflowStepItem,++    -- ** ZendeskSourceProperties+    ZendeskSourceProperties (ZendeskSourceProperties'),+    newZendeskSourceProperties,+  )+where++import Amazonka.CustomerProfiles.AddProfileKey+import Amazonka.CustomerProfiles.CreateDomain+import Amazonka.CustomerProfiles.CreateIntegrationWorkflow+import Amazonka.CustomerProfiles.CreateProfile+import Amazonka.CustomerProfiles.DeleteDomain+import Amazonka.CustomerProfiles.DeleteIntegration+import Amazonka.CustomerProfiles.DeleteProfile+import Amazonka.CustomerProfiles.DeleteProfileKey+import Amazonka.CustomerProfiles.DeleteProfileObject+import Amazonka.CustomerProfiles.DeleteProfileObjectType+import Amazonka.CustomerProfiles.DeleteWorkflow+import Amazonka.CustomerProfiles.GetAutoMergingPreview+import Amazonka.CustomerProfiles.GetDomain+import Amazonka.CustomerProfiles.GetIdentityResolutionJob+import Amazonka.CustomerProfiles.GetIntegration+import Amazonka.CustomerProfiles.GetMatches+import Amazonka.CustomerProfiles.GetProfileObjectType+import Amazonka.CustomerProfiles.GetProfileObjectTypeTemplate+import Amazonka.CustomerProfiles.GetWorkflow+import Amazonka.CustomerProfiles.GetWorkflowSteps+import Amazonka.CustomerProfiles.Lens+import Amazonka.CustomerProfiles.ListAccountIntegrations+import Amazonka.CustomerProfiles.ListDomains+import Amazonka.CustomerProfiles.ListIdentityResolutionJobs+import Amazonka.CustomerProfiles.ListIntegrations+import Amazonka.CustomerProfiles.ListProfileObjectTypeTemplates+import Amazonka.CustomerProfiles.ListProfileObjectTypes+import Amazonka.CustomerProfiles.ListProfileObjects+import Amazonka.CustomerProfiles.ListTagsForResource+import Amazonka.CustomerProfiles.ListWorkflows+import Amazonka.CustomerProfiles.MergeProfiles+import Amazonka.CustomerProfiles.PutIntegration+import Amazonka.CustomerProfiles.PutProfileObject+import Amazonka.CustomerProfiles.PutProfileObjectType+import Amazonka.CustomerProfiles.SearchProfiles+import Amazonka.CustomerProfiles.TagResource+import Amazonka.CustomerProfiles.Types+import Amazonka.CustomerProfiles.UntagResource+import Amazonka.CustomerProfiles.UpdateDomain+import Amazonka.CustomerProfiles.UpdateProfile+import Amazonka.CustomerProfiles.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 'CustomerProfiles'.++-- $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.
+ gen/Amazonka/CustomerProfiles/AddProfileKey.hs view
@@ -0,0 +1,247 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.AddProfileKey+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Associates a new key value with a specific profile, such as a Contact+-- Record ContactId.+--+-- A profile object can have a single unique key and any number of+-- additional keys that can be used to identify the profile that it belongs+-- to.+module Amazonka.CustomerProfiles.AddProfileKey+  ( -- * Creating a Request+    AddProfileKey (..),+    newAddProfileKey,++    -- * Request Lenses+    addProfileKey_profileId,+    addProfileKey_keyName,+    addProfileKey_values,+    addProfileKey_domainName,++    -- * Destructuring the Response+    AddProfileKeyResponse (..),+    newAddProfileKeyResponse,++    -- * Response Lenses+    addProfileKeyResponse_keyName,+    addProfileKeyResponse_values,+    addProfileKeyResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newAddProfileKey' smart constructor.+data AddProfileKey = AddProfileKey'+  { -- | The unique identifier of a customer profile.+    profileId :: Prelude.Text,+    -- | A searchable identifier of a customer profile. The predefined keys you+    -- can use include: _account, _profileId, _assetId, _caseId, _orderId,+    -- _fullName, _phone, _email, _ctrContactId, _marketoLeadId,+    -- _salesforceAccountId, _salesforceContactId, _salesforceAssetId,+    -- _zendeskUserId, _zendeskExternalId, _zendeskTicketId,+    -- _serviceNowSystemId, _serviceNowIncidentId, _segmentUserId,+    -- _shopifyCustomerId, _shopifyOrderId.+    keyName :: Prelude.Text,+    -- | A list of key values.+    values :: [Prelude.Text],+    -- | The unique name of the domain.+    domainName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AddProfileKey' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'profileId', 'addProfileKey_profileId' - The unique identifier of a customer profile.+--+-- 'keyName', 'addProfileKey_keyName' - A searchable identifier of a customer profile. The predefined keys you+-- can use include: _account, _profileId, _assetId, _caseId, _orderId,+-- _fullName, _phone, _email, _ctrContactId, _marketoLeadId,+-- _salesforceAccountId, _salesforceContactId, _salesforceAssetId,+-- _zendeskUserId, _zendeskExternalId, _zendeskTicketId,+-- _serviceNowSystemId, _serviceNowIncidentId, _segmentUserId,+-- _shopifyCustomerId, _shopifyOrderId.+--+-- 'values', 'addProfileKey_values' - A list of key values.+--+-- 'domainName', 'addProfileKey_domainName' - The unique name of the domain.+newAddProfileKey ::+  -- | 'profileId'+  Prelude.Text ->+  -- | 'keyName'+  Prelude.Text ->+  -- | 'domainName'+  Prelude.Text ->+  AddProfileKey+newAddProfileKey pProfileId_ pKeyName_ pDomainName_ =+  AddProfileKey'+    { profileId = pProfileId_,+      keyName = pKeyName_,+      values = Prelude.mempty,+      domainName = pDomainName_+    }++-- | The unique identifier of a customer profile.+addProfileKey_profileId :: Lens.Lens' AddProfileKey Prelude.Text+addProfileKey_profileId = Lens.lens (\AddProfileKey' {profileId} -> profileId) (\s@AddProfileKey' {} a -> s {profileId = a} :: AddProfileKey)++-- | A searchable identifier of a customer profile. The predefined keys you+-- can use include: _account, _profileId, _assetId, _caseId, _orderId,+-- _fullName, _phone, _email, _ctrContactId, _marketoLeadId,+-- _salesforceAccountId, _salesforceContactId, _salesforceAssetId,+-- _zendeskUserId, _zendeskExternalId, _zendeskTicketId,+-- _serviceNowSystemId, _serviceNowIncidentId, _segmentUserId,+-- _shopifyCustomerId, _shopifyOrderId.+addProfileKey_keyName :: Lens.Lens' AddProfileKey Prelude.Text+addProfileKey_keyName = Lens.lens (\AddProfileKey' {keyName} -> keyName) (\s@AddProfileKey' {} a -> s {keyName = a} :: AddProfileKey)++-- | A list of key values.+addProfileKey_values :: Lens.Lens' AddProfileKey [Prelude.Text]+addProfileKey_values = Lens.lens (\AddProfileKey' {values} -> values) (\s@AddProfileKey' {} a -> s {values = a} :: AddProfileKey) Prelude.. Lens.coerced++-- | The unique name of the domain.+addProfileKey_domainName :: Lens.Lens' AddProfileKey Prelude.Text+addProfileKey_domainName = Lens.lens (\AddProfileKey' {domainName} -> domainName) (\s@AddProfileKey' {} a -> s {domainName = a} :: AddProfileKey)++instance Core.AWSRequest AddProfileKey where+  type+    AWSResponse AddProfileKey =+      AddProfileKeyResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          AddProfileKeyResponse'+            Prelude.<$> (x Data..?> "KeyName")+            Prelude.<*> (x Data..?> "Values" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable AddProfileKey where+  hashWithSalt _salt AddProfileKey' {..} =+    _salt+      `Prelude.hashWithSalt` profileId+      `Prelude.hashWithSalt` keyName+      `Prelude.hashWithSalt` values+      `Prelude.hashWithSalt` domainName++instance Prelude.NFData AddProfileKey where+  rnf AddProfileKey' {..} =+    Prelude.rnf profileId+      `Prelude.seq` Prelude.rnf keyName+      `Prelude.seq` Prelude.rnf values+      `Prelude.seq` Prelude.rnf domainName++instance Data.ToHeaders AddProfileKey where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON AddProfileKey where+  toJSON AddProfileKey' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("ProfileId" Data..= profileId),+            Prelude.Just ("KeyName" Data..= keyName),+            Prelude.Just ("Values" Data..= values)+          ]+      )++instance Data.ToPath AddProfileKey where+  toPath AddProfileKey' {..} =+    Prelude.mconcat+      ["/domains/", Data.toBS domainName, "/profiles/keys"]++instance Data.ToQuery AddProfileKey where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newAddProfileKeyResponse' smart constructor.+data AddProfileKeyResponse = AddProfileKeyResponse'+  { -- | A searchable identifier of a customer profile.+    keyName :: Prelude.Maybe Prelude.Text,+    -- | A list of key values.+    values :: Prelude.Maybe [Prelude.Text],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AddProfileKeyResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'keyName', 'addProfileKeyResponse_keyName' - A searchable identifier of a customer profile.+--+-- 'values', 'addProfileKeyResponse_values' - A list of key values.+--+-- 'httpStatus', 'addProfileKeyResponse_httpStatus' - The response's http status code.+newAddProfileKeyResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  AddProfileKeyResponse+newAddProfileKeyResponse pHttpStatus_ =+  AddProfileKeyResponse'+    { keyName = Prelude.Nothing,+      values = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A searchable identifier of a customer profile.+addProfileKeyResponse_keyName :: Lens.Lens' AddProfileKeyResponse (Prelude.Maybe Prelude.Text)+addProfileKeyResponse_keyName = Lens.lens (\AddProfileKeyResponse' {keyName} -> keyName) (\s@AddProfileKeyResponse' {} a -> s {keyName = a} :: AddProfileKeyResponse)++-- | A list of key values.+addProfileKeyResponse_values :: Lens.Lens' AddProfileKeyResponse (Prelude.Maybe [Prelude.Text])+addProfileKeyResponse_values = Lens.lens (\AddProfileKeyResponse' {values} -> values) (\s@AddProfileKeyResponse' {} a -> s {values = a} :: AddProfileKeyResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+addProfileKeyResponse_httpStatus :: Lens.Lens' AddProfileKeyResponse Prelude.Int+addProfileKeyResponse_httpStatus = Lens.lens (\AddProfileKeyResponse' {httpStatus} -> httpStatus) (\s@AddProfileKeyResponse' {} a -> s {httpStatus = a} :: AddProfileKeyResponse)++instance Prelude.NFData AddProfileKeyResponse where+  rnf AddProfileKeyResponse' {..} =+    Prelude.rnf keyName+      `Prelude.seq` Prelude.rnf values+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/CustomerProfiles/CreateDomain.hs view
@@ -0,0 +1,439 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.CreateDomain+-- 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 domain, which is a container for all customer data, such as+-- customer profile attributes, object types, profile keys, and encryption+-- keys. You can create multiple domains, and each domain can have multiple+-- third-party integrations.+--+-- Each Amazon Connect instance can be associated with only one domain.+-- Multiple Amazon Connect instances can be associated with one domain.+--+-- Use this API or+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_UpdateDomain.html UpdateDomain>+-- to enable+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_GetMatches.html identity resolution>:+-- set @Matching@ to true.+--+-- To prevent cross-service impersonation when you call this API, see+-- <https://docs.aws.amazon.com/connect/latest/adminguide/cross-service-confused-deputy-prevention.html Cross-service confused deputy prevention>+-- for sample policies that you should apply.+module Amazonka.CustomerProfiles.CreateDomain+  ( -- * Creating a Request+    CreateDomain (..),+    newCreateDomain,++    -- * Request Lenses+    createDomain_deadLetterQueueUrl,+    createDomain_defaultEncryptionKey,+    createDomain_matching,+    createDomain_tags,+    createDomain_domainName,+    createDomain_defaultExpirationDays,++    -- * Destructuring the Response+    CreateDomainResponse (..),+    newCreateDomainResponse,++    -- * Response Lenses+    createDomainResponse_deadLetterQueueUrl,+    createDomainResponse_defaultEncryptionKey,+    createDomainResponse_matching,+    createDomainResponse_tags,+    createDomainResponse_httpStatus,+    createDomainResponse_domainName,+    createDomainResponse_defaultExpirationDays,+    createDomainResponse_createdAt,+    createDomainResponse_lastUpdatedAt,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateDomain' smart constructor.+data CreateDomain = CreateDomain'+  { -- | The URL of the SQS dead letter queue, which is used for reporting errors+    -- associated with ingesting data from third party applications. You must+    -- set up a policy on the DeadLetterQueue for the SendMessage operation to+    -- enable Amazon Connect Customer Profiles to send messages to the+    -- DeadLetterQueue.+    deadLetterQueueUrl :: Prelude.Maybe Prelude.Text,+    -- | The default encryption key, which is an AWS managed key, is used when no+    -- specific type of encryption key is specified. It is used to encrypt all+    -- data before it is placed in permanent or semi-permanent storage.+    defaultEncryptionKey :: Prelude.Maybe Prelude.Text,+    -- | The process of matching duplicate profiles. If @Matching@ = @true@,+    -- Amazon Connect Customer Profiles starts a weekly batch process called+    -- Identity Resolution Job. If you do not specify a date and time for+    -- Identity Resolution Job to run, by default it runs every Saturday at+    -- 12AM UTC to detect duplicate profiles in your domains.+    --+    -- After the Identity Resolution Job completes, use the+    -- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_GetMatches.html GetMatches>+    -- API to return and review the results. Or, if you have configured+    -- @ExportingConfig@ in the @MatchingRequest@, you can download the results+    -- from S3.+    matching :: Prelude.Maybe MatchingRequest,+    -- | The tags used to organize, track, or control access for this resource.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The unique name of the domain.+    domainName :: Prelude.Text,+    -- | The default number of days until the data within the domain expires.+    defaultExpirationDays :: Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateDomain' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'deadLetterQueueUrl', 'createDomain_deadLetterQueueUrl' - The URL of the SQS dead letter queue, which is used for reporting errors+-- associated with ingesting data from third party applications. You must+-- set up a policy on the DeadLetterQueue for the SendMessage operation to+-- enable Amazon Connect Customer Profiles to send messages to the+-- DeadLetterQueue.+--+-- 'defaultEncryptionKey', 'createDomain_defaultEncryptionKey' - The default encryption key, which is an AWS managed key, is used when no+-- specific type of encryption key is specified. It is used to encrypt all+-- data before it is placed in permanent or semi-permanent storage.+--+-- 'matching', 'createDomain_matching' - The process of matching duplicate profiles. If @Matching@ = @true@,+-- Amazon Connect Customer Profiles starts a weekly batch process called+-- Identity Resolution Job. If you do not specify a date and time for+-- Identity Resolution Job to run, by default it runs every Saturday at+-- 12AM UTC to detect duplicate profiles in your domains.+--+-- After the Identity Resolution Job completes, use the+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_GetMatches.html GetMatches>+-- API to return and review the results. Or, if you have configured+-- @ExportingConfig@ in the @MatchingRequest@, you can download the results+-- from S3.+--+-- 'tags', 'createDomain_tags' - The tags used to organize, track, or control access for this resource.+--+-- 'domainName', 'createDomain_domainName' - The unique name of the domain.+--+-- 'defaultExpirationDays', 'createDomain_defaultExpirationDays' - The default number of days until the data within the domain expires.+newCreateDomain ::+  -- | 'domainName'+  Prelude.Text ->+  -- | 'defaultExpirationDays'+  Prelude.Natural ->+  CreateDomain+newCreateDomain pDomainName_ pDefaultExpirationDays_ =+  CreateDomain'+    { deadLetterQueueUrl = Prelude.Nothing,+      defaultEncryptionKey = Prelude.Nothing,+      matching = Prelude.Nothing,+      tags = Prelude.Nothing,+      domainName = pDomainName_,+      defaultExpirationDays = pDefaultExpirationDays_+    }++-- | The URL of the SQS dead letter queue, which is used for reporting errors+-- associated with ingesting data from third party applications. You must+-- set up a policy on the DeadLetterQueue for the SendMessage operation to+-- enable Amazon Connect Customer Profiles to send messages to the+-- DeadLetterQueue.+createDomain_deadLetterQueueUrl :: Lens.Lens' CreateDomain (Prelude.Maybe Prelude.Text)+createDomain_deadLetterQueueUrl = Lens.lens (\CreateDomain' {deadLetterQueueUrl} -> deadLetterQueueUrl) (\s@CreateDomain' {} a -> s {deadLetterQueueUrl = a} :: CreateDomain)++-- | The default encryption key, which is an AWS managed key, is used when no+-- specific type of encryption key is specified. It is used to encrypt all+-- data before it is placed in permanent or semi-permanent storage.+createDomain_defaultEncryptionKey :: Lens.Lens' CreateDomain (Prelude.Maybe Prelude.Text)+createDomain_defaultEncryptionKey = Lens.lens (\CreateDomain' {defaultEncryptionKey} -> defaultEncryptionKey) (\s@CreateDomain' {} a -> s {defaultEncryptionKey = a} :: CreateDomain)++-- | The process of matching duplicate profiles. If @Matching@ = @true@,+-- Amazon Connect Customer Profiles starts a weekly batch process called+-- Identity Resolution Job. If you do not specify a date and time for+-- Identity Resolution Job to run, by default it runs every Saturday at+-- 12AM UTC to detect duplicate profiles in your domains.+--+-- After the Identity Resolution Job completes, use the+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_GetMatches.html GetMatches>+-- API to return and review the results. Or, if you have configured+-- @ExportingConfig@ in the @MatchingRequest@, you can download the results+-- from S3.+createDomain_matching :: Lens.Lens' CreateDomain (Prelude.Maybe MatchingRequest)+createDomain_matching = Lens.lens (\CreateDomain' {matching} -> matching) (\s@CreateDomain' {} a -> s {matching = a} :: CreateDomain)++-- | The tags used to organize, track, or control access for this resource.+createDomain_tags :: Lens.Lens' CreateDomain (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createDomain_tags = Lens.lens (\CreateDomain' {tags} -> tags) (\s@CreateDomain' {} a -> s {tags = a} :: CreateDomain) Prelude.. Lens.mapping Lens.coerced++-- | The unique name of the domain.+createDomain_domainName :: Lens.Lens' CreateDomain Prelude.Text+createDomain_domainName = Lens.lens (\CreateDomain' {domainName} -> domainName) (\s@CreateDomain' {} a -> s {domainName = a} :: CreateDomain)++-- | The default number of days until the data within the domain expires.+createDomain_defaultExpirationDays :: Lens.Lens' CreateDomain Prelude.Natural+createDomain_defaultExpirationDays = Lens.lens (\CreateDomain' {defaultExpirationDays} -> defaultExpirationDays) (\s@CreateDomain' {} a -> s {defaultExpirationDays = a} :: CreateDomain)++instance Core.AWSRequest CreateDomain where+  type AWSResponse CreateDomain = CreateDomainResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateDomainResponse'+            Prelude.<$> (x Data..?> "DeadLetterQueueUrl")+            Prelude.<*> (x Data..?> "DefaultEncryptionKey")+            Prelude.<*> (x Data..?> "Matching")+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "DomainName")+            Prelude.<*> (x Data..:> "DefaultExpirationDays")+            Prelude.<*> (x Data..:> "CreatedAt")+            Prelude.<*> (x Data..:> "LastUpdatedAt")+      )++instance Prelude.Hashable CreateDomain where+  hashWithSalt _salt CreateDomain' {..} =+    _salt+      `Prelude.hashWithSalt` deadLetterQueueUrl+      `Prelude.hashWithSalt` defaultEncryptionKey+      `Prelude.hashWithSalt` matching+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` domainName+      `Prelude.hashWithSalt` defaultExpirationDays++instance Prelude.NFData CreateDomain where+  rnf CreateDomain' {..} =+    Prelude.rnf deadLetterQueueUrl+      `Prelude.seq` Prelude.rnf defaultEncryptionKey+      `Prelude.seq` Prelude.rnf matching+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf domainName+      `Prelude.seq` Prelude.rnf defaultExpirationDays++instance Data.ToHeaders CreateDomain where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateDomain where+  toJSON CreateDomain' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("DeadLetterQueueUrl" Data..=)+              Prelude.<$> deadLetterQueueUrl,+            ("DefaultEncryptionKey" Data..=)+              Prelude.<$> defaultEncryptionKey,+            ("Matching" Data..=) Prelude.<$> matching,+            ("Tags" Data..=) Prelude.<$> tags,+            Prelude.Just+              ( "DefaultExpirationDays"+                  Data..= defaultExpirationDays+              )+          ]+      )++instance Data.ToPath CreateDomain where+  toPath CreateDomain' {..} =+    Prelude.mconcat ["/domains/", Data.toBS domainName]++instance Data.ToQuery CreateDomain where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateDomainResponse' smart constructor.+data CreateDomainResponse = CreateDomainResponse'+  { -- | The URL of the SQS dead letter queue, which is used for reporting errors+    -- associated with ingesting data from third party applications.+    deadLetterQueueUrl :: Prelude.Maybe Prelude.Text,+    -- | The default encryption key, which is an AWS managed key, is used when no+    -- specific type of encryption key is specified. It is used to encrypt all+    -- data before it is placed in permanent or semi-permanent storage.+    defaultEncryptionKey :: Prelude.Maybe Prelude.Text,+    -- | The process of matching duplicate profiles. If @Matching@ = @true@,+    -- Amazon Connect Customer Profiles starts a weekly batch process called+    -- Identity Resolution Job. If you do not specify a date and time for+    -- Identity Resolution Job to run, by default it runs every Saturday at+    -- 12AM UTC to detect duplicate profiles in your domains.+    --+    -- After the Identity Resolution Job completes, use the+    -- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_GetMatches.html GetMatches>+    -- API to return and review the results. Or, if you have configured+    -- @ExportingConfig@ in the @MatchingRequest@, you can download the results+    -- from S3.+    matching :: Prelude.Maybe MatchingResponse,+    -- | The tags used to organize, track, or control access for this resource.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The unique name of the domain.+    domainName :: Prelude.Text,+    -- | The default number of days until the data within the domain expires.+    defaultExpirationDays :: Prelude.Natural,+    -- | The timestamp of when the domain was created.+    createdAt :: Data.POSIX,+    -- | The timestamp of when the domain was most recently edited.+    lastUpdatedAt :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateDomainResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'deadLetterQueueUrl', 'createDomainResponse_deadLetterQueueUrl' - The URL of the SQS dead letter queue, which is used for reporting errors+-- associated with ingesting data from third party applications.+--+-- 'defaultEncryptionKey', 'createDomainResponse_defaultEncryptionKey' - The default encryption key, which is an AWS managed key, is used when no+-- specific type of encryption key is specified. It is used to encrypt all+-- data before it is placed in permanent or semi-permanent storage.+--+-- 'matching', 'createDomainResponse_matching' - The process of matching duplicate profiles. If @Matching@ = @true@,+-- Amazon Connect Customer Profiles starts a weekly batch process called+-- Identity Resolution Job. If you do not specify a date and time for+-- Identity Resolution Job to run, by default it runs every Saturday at+-- 12AM UTC to detect duplicate profiles in your domains.+--+-- After the Identity Resolution Job completes, use the+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_GetMatches.html GetMatches>+-- API to return and review the results. Or, if you have configured+-- @ExportingConfig@ in the @MatchingRequest@, you can download the results+-- from S3.+--+-- 'tags', 'createDomainResponse_tags' - The tags used to organize, track, or control access for this resource.+--+-- 'httpStatus', 'createDomainResponse_httpStatus' - The response's http status code.+--+-- 'domainName', 'createDomainResponse_domainName' - The unique name of the domain.+--+-- 'defaultExpirationDays', 'createDomainResponse_defaultExpirationDays' - The default number of days until the data within the domain expires.+--+-- 'createdAt', 'createDomainResponse_createdAt' - The timestamp of when the domain was created.+--+-- 'lastUpdatedAt', 'createDomainResponse_lastUpdatedAt' - The timestamp of when the domain was most recently edited.+newCreateDomainResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'domainName'+  Prelude.Text ->+  -- | 'defaultExpirationDays'+  Prelude.Natural ->+  -- | 'createdAt'+  Prelude.UTCTime ->+  -- | 'lastUpdatedAt'+  Prelude.UTCTime ->+  CreateDomainResponse+newCreateDomainResponse+  pHttpStatus_+  pDomainName_+  pDefaultExpirationDays_+  pCreatedAt_+  pLastUpdatedAt_ =+    CreateDomainResponse'+      { deadLetterQueueUrl =+          Prelude.Nothing,+        defaultEncryptionKey = Prelude.Nothing,+        matching = Prelude.Nothing,+        tags = Prelude.Nothing,+        httpStatus = pHttpStatus_,+        domainName = pDomainName_,+        defaultExpirationDays = pDefaultExpirationDays_,+        createdAt = Data._Time Lens.# pCreatedAt_,+        lastUpdatedAt = Data._Time Lens.# pLastUpdatedAt_+      }++-- | The URL of the SQS dead letter queue, which is used for reporting errors+-- associated with ingesting data from third party applications.+createDomainResponse_deadLetterQueueUrl :: Lens.Lens' CreateDomainResponse (Prelude.Maybe Prelude.Text)+createDomainResponse_deadLetterQueueUrl = Lens.lens (\CreateDomainResponse' {deadLetterQueueUrl} -> deadLetterQueueUrl) (\s@CreateDomainResponse' {} a -> s {deadLetterQueueUrl = a} :: CreateDomainResponse)++-- | The default encryption key, which is an AWS managed key, is used when no+-- specific type of encryption key is specified. It is used to encrypt all+-- data before it is placed in permanent or semi-permanent storage.+createDomainResponse_defaultEncryptionKey :: Lens.Lens' CreateDomainResponse (Prelude.Maybe Prelude.Text)+createDomainResponse_defaultEncryptionKey = Lens.lens (\CreateDomainResponse' {defaultEncryptionKey} -> defaultEncryptionKey) (\s@CreateDomainResponse' {} a -> s {defaultEncryptionKey = a} :: CreateDomainResponse)++-- | The process of matching duplicate profiles. If @Matching@ = @true@,+-- Amazon Connect Customer Profiles starts a weekly batch process called+-- Identity Resolution Job. If you do not specify a date and time for+-- Identity Resolution Job to run, by default it runs every Saturday at+-- 12AM UTC to detect duplicate profiles in your domains.+--+-- After the Identity Resolution Job completes, use the+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_GetMatches.html GetMatches>+-- API to return and review the results. Or, if you have configured+-- @ExportingConfig@ in the @MatchingRequest@, you can download the results+-- from S3.+createDomainResponse_matching :: Lens.Lens' CreateDomainResponse (Prelude.Maybe MatchingResponse)+createDomainResponse_matching = Lens.lens (\CreateDomainResponse' {matching} -> matching) (\s@CreateDomainResponse' {} a -> s {matching = a} :: CreateDomainResponse)++-- | The tags used to organize, track, or control access for this resource.+createDomainResponse_tags :: Lens.Lens' CreateDomainResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createDomainResponse_tags = Lens.lens (\CreateDomainResponse' {tags} -> tags) (\s@CreateDomainResponse' {} a -> s {tags = a} :: CreateDomainResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+createDomainResponse_httpStatus :: Lens.Lens' CreateDomainResponse Prelude.Int+createDomainResponse_httpStatus = Lens.lens (\CreateDomainResponse' {httpStatus} -> httpStatus) (\s@CreateDomainResponse' {} a -> s {httpStatus = a} :: CreateDomainResponse)++-- | The unique name of the domain.+createDomainResponse_domainName :: Lens.Lens' CreateDomainResponse Prelude.Text+createDomainResponse_domainName = Lens.lens (\CreateDomainResponse' {domainName} -> domainName) (\s@CreateDomainResponse' {} a -> s {domainName = a} :: CreateDomainResponse)++-- | The default number of days until the data within the domain expires.+createDomainResponse_defaultExpirationDays :: Lens.Lens' CreateDomainResponse Prelude.Natural+createDomainResponse_defaultExpirationDays = Lens.lens (\CreateDomainResponse' {defaultExpirationDays} -> defaultExpirationDays) (\s@CreateDomainResponse' {} a -> s {defaultExpirationDays = a} :: CreateDomainResponse)++-- | The timestamp of when the domain was created.+createDomainResponse_createdAt :: Lens.Lens' CreateDomainResponse Prelude.UTCTime+createDomainResponse_createdAt = Lens.lens (\CreateDomainResponse' {createdAt} -> createdAt) (\s@CreateDomainResponse' {} a -> s {createdAt = a} :: CreateDomainResponse) Prelude.. Data._Time++-- | The timestamp of when the domain was most recently edited.+createDomainResponse_lastUpdatedAt :: Lens.Lens' CreateDomainResponse Prelude.UTCTime+createDomainResponse_lastUpdatedAt = Lens.lens (\CreateDomainResponse' {lastUpdatedAt} -> lastUpdatedAt) (\s@CreateDomainResponse' {} a -> s {lastUpdatedAt = a} :: CreateDomainResponse) Prelude.. Data._Time++instance Prelude.NFData CreateDomainResponse where+  rnf CreateDomainResponse' {..} =+    Prelude.rnf deadLetterQueueUrl+      `Prelude.seq` Prelude.rnf defaultEncryptionKey+      `Prelude.seq` Prelude.rnf matching+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf domainName+      `Prelude.seq` Prelude.rnf defaultExpirationDays+      `Prelude.seq` Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf lastUpdatedAt
+ gen/Amazonka/CustomerProfiles/CreateIntegrationWorkflow.hs view
@@ -0,0 +1,284 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.CreateIntegrationWorkflow+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates an integration workflow. An integration workflow is an async+-- process which ingests historic data and sets up an integration for+-- ongoing updates. The supported Amazon AppFlow sources are Salesforce,+-- ServiceNow, and Marketo.+module Amazonka.CustomerProfiles.CreateIntegrationWorkflow+  ( -- * Creating a Request+    CreateIntegrationWorkflow (..),+    newCreateIntegrationWorkflow,++    -- * Request Lenses+    createIntegrationWorkflow_tags,+    createIntegrationWorkflow_domainName,+    createIntegrationWorkflow_workflowType,+    createIntegrationWorkflow_integrationConfig,+    createIntegrationWorkflow_objectTypeName,+    createIntegrationWorkflow_roleArn,++    -- * Destructuring the Response+    CreateIntegrationWorkflowResponse (..),+    newCreateIntegrationWorkflowResponse,++    -- * Response Lenses+    createIntegrationWorkflowResponse_httpStatus,+    createIntegrationWorkflowResponse_workflowId,+    createIntegrationWorkflowResponse_message,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateIntegrationWorkflow' smart constructor.+data CreateIntegrationWorkflow = CreateIntegrationWorkflow'+  { -- | The tags used to organize, track, or control access for this resource.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The unique name of the domain.+    domainName :: Prelude.Text,+    -- | The type of workflow. The only supported value is APPFLOW_INTEGRATION.+    workflowType :: WorkflowType,+    -- | Configuration data for integration workflow.+    integrationConfig :: IntegrationConfig,+    -- | The name of the profile object type.+    objectTypeName :: Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the IAM role. Customer Profiles+    -- assumes this role to create resources on your behalf as part of workflow+    -- execution.+    roleArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateIntegrationWorkflow' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'tags', 'createIntegrationWorkflow_tags' - The tags used to organize, track, or control access for this resource.+--+-- 'domainName', 'createIntegrationWorkflow_domainName' - The unique name of the domain.+--+-- 'workflowType', 'createIntegrationWorkflow_workflowType' - The type of workflow. The only supported value is APPFLOW_INTEGRATION.+--+-- 'integrationConfig', 'createIntegrationWorkflow_integrationConfig' - Configuration data for integration workflow.+--+-- 'objectTypeName', 'createIntegrationWorkflow_objectTypeName' - The name of the profile object type.+--+-- 'roleArn', 'createIntegrationWorkflow_roleArn' - The Amazon Resource Name (ARN) of the IAM role. Customer Profiles+-- assumes this role to create resources on your behalf as part of workflow+-- execution.+newCreateIntegrationWorkflow ::+  -- | 'domainName'+  Prelude.Text ->+  -- | 'workflowType'+  WorkflowType ->+  -- | 'integrationConfig'+  IntegrationConfig ->+  -- | 'objectTypeName'+  Prelude.Text ->+  -- | 'roleArn'+  Prelude.Text ->+  CreateIntegrationWorkflow+newCreateIntegrationWorkflow+  pDomainName_+  pWorkflowType_+  pIntegrationConfig_+  pObjectTypeName_+  pRoleArn_ =+    CreateIntegrationWorkflow'+      { tags = Prelude.Nothing,+        domainName = pDomainName_,+        workflowType = pWorkflowType_,+        integrationConfig = pIntegrationConfig_,+        objectTypeName = pObjectTypeName_,+        roleArn = pRoleArn_+      }++-- | The tags used to organize, track, or control access for this resource.+createIntegrationWorkflow_tags :: Lens.Lens' CreateIntegrationWorkflow (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createIntegrationWorkflow_tags = Lens.lens (\CreateIntegrationWorkflow' {tags} -> tags) (\s@CreateIntegrationWorkflow' {} a -> s {tags = a} :: CreateIntegrationWorkflow) Prelude.. Lens.mapping Lens.coerced++-- | The unique name of the domain.+createIntegrationWorkflow_domainName :: Lens.Lens' CreateIntegrationWorkflow Prelude.Text+createIntegrationWorkflow_domainName = Lens.lens (\CreateIntegrationWorkflow' {domainName} -> domainName) (\s@CreateIntegrationWorkflow' {} a -> s {domainName = a} :: CreateIntegrationWorkflow)++-- | The type of workflow. The only supported value is APPFLOW_INTEGRATION.+createIntegrationWorkflow_workflowType :: Lens.Lens' CreateIntegrationWorkflow WorkflowType+createIntegrationWorkflow_workflowType = Lens.lens (\CreateIntegrationWorkflow' {workflowType} -> workflowType) (\s@CreateIntegrationWorkflow' {} a -> s {workflowType = a} :: CreateIntegrationWorkflow)++-- | Configuration data for integration workflow.+createIntegrationWorkflow_integrationConfig :: Lens.Lens' CreateIntegrationWorkflow IntegrationConfig+createIntegrationWorkflow_integrationConfig = Lens.lens (\CreateIntegrationWorkflow' {integrationConfig} -> integrationConfig) (\s@CreateIntegrationWorkflow' {} a -> s {integrationConfig = a} :: CreateIntegrationWorkflow)++-- | The name of the profile object type.+createIntegrationWorkflow_objectTypeName :: Lens.Lens' CreateIntegrationWorkflow Prelude.Text+createIntegrationWorkflow_objectTypeName = Lens.lens (\CreateIntegrationWorkflow' {objectTypeName} -> objectTypeName) (\s@CreateIntegrationWorkflow' {} a -> s {objectTypeName = a} :: CreateIntegrationWorkflow)++-- | The Amazon Resource Name (ARN) of the IAM role. Customer Profiles+-- assumes this role to create resources on your behalf as part of workflow+-- execution.+createIntegrationWorkflow_roleArn :: Lens.Lens' CreateIntegrationWorkflow Prelude.Text+createIntegrationWorkflow_roleArn = Lens.lens (\CreateIntegrationWorkflow' {roleArn} -> roleArn) (\s@CreateIntegrationWorkflow' {} a -> s {roleArn = a} :: CreateIntegrationWorkflow)++instance Core.AWSRequest CreateIntegrationWorkflow where+  type+    AWSResponse CreateIntegrationWorkflow =+      CreateIntegrationWorkflowResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateIntegrationWorkflowResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "WorkflowId")+            Prelude.<*> (x Data..:> "Message")+      )++instance Prelude.Hashable CreateIntegrationWorkflow where+  hashWithSalt _salt CreateIntegrationWorkflow' {..} =+    _salt+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` domainName+      `Prelude.hashWithSalt` workflowType+      `Prelude.hashWithSalt` integrationConfig+      `Prelude.hashWithSalt` objectTypeName+      `Prelude.hashWithSalt` roleArn++instance Prelude.NFData CreateIntegrationWorkflow where+  rnf CreateIntegrationWorkflow' {..} =+    Prelude.rnf tags+      `Prelude.seq` Prelude.rnf domainName+      `Prelude.seq` Prelude.rnf workflowType+      `Prelude.seq` Prelude.rnf integrationConfig+      `Prelude.seq` Prelude.rnf objectTypeName+      `Prelude.seq` Prelude.rnf roleArn++instance Data.ToHeaders CreateIntegrationWorkflow where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateIntegrationWorkflow where+  toJSON CreateIntegrationWorkflow' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("WorkflowType" Data..= workflowType),+            Prelude.Just+              ("IntegrationConfig" Data..= integrationConfig),+            Prelude.Just+              ("ObjectTypeName" Data..= objectTypeName),+            Prelude.Just ("RoleArn" Data..= roleArn)+          ]+      )++instance Data.ToPath CreateIntegrationWorkflow where+  toPath CreateIntegrationWorkflow' {..} =+    Prelude.mconcat+      [ "/domains/",+        Data.toBS domainName,+        "/workflows/integrations"+      ]++instance Data.ToQuery CreateIntegrationWorkflow where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateIntegrationWorkflowResponse' smart constructor.+data CreateIntegrationWorkflowResponse = CreateIntegrationWorkflowResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | Unique identifier for the workflow.+    workflowId :: Prelude.Text,+    -- | A message indicating create request was received.+    message :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateIntegrationWorkflowResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createIntegrationWorkflowResponse_httpStatus' - The response's http status code.+--+-- 'workflowId', 'createIntegrationWorkflowResponse_workflowId' - Unique identifier for the workflow.+--+-- 'message', 'createIntegrationWorkflowResponse_message' - A message indicating create request was received.+newCreateIntegrationWorkflowResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'workflowId'+  Prelude.Text ->+  -- | 'message'+  Prelude.Text ->+  CreateIntegrationWorkflowResponse+newCreateIntegrationWorkflowResponse+  pHttpStatus_+  pWorkflowId_+  pMessage_ =+    CreateIntegrationWorkflowResponse'+      { httpStatus =+          pHttpStatus_,+        workflowId = pWorkflowId_,+        message = pMessage_+      }++-- | The response's http status code.+createIntegrationWorkflowResponse_httpStatus :: Lens.Lens' CreateIntegrationWorkflowResponse Prelude.Int+createIntegrationWorkflowResponse_httpStatus = Lens.lens (\CreateIntegrationWorkflowResponse' {httpStatus} -> httpStatus) (\s@CreateIntegrationWorkflowResponse' {} a -> s {httpStatus = a} :: CreateIntegrationWorkflowResponse)++-- | Unique identifier for the workflow.+createIntegrationWorkflowResponse_workflowId :: Lens.Lens' CreateIntegrationWorkflowResponse Prelude.Text+createIntegrationWorkflowResponse_workflowId = Lens.lens (\CreateIntegrationWorkflowResponse' {workflowId} -> workflowId) (\s@CreateIntegrationWorkflowResponse' {} a -> s {workflowId = a} :: CreateIntegrationWorkflowResponse)++-- | A message indicating create request was received.+createIntegrationWorkflowResponse_message :: Lens.Lens' CreateIntegrationWorkflowResponse Prelude.Text+createIntegrationWorkflowResponse_message = Lens.lens (\CreateIntegrationWorkflowResponse' {message} -> message) (\s@CreateIntegrationWorkflowResponse' {} a -> s {message = a} :: CreateIntegrationWorkflowResponse)++instance+  Prelude.NFData+    CreateIntegrationWorkflowResponse+  where+  rnf CreateIntegrationWorkflowResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf workflowId+      `Prelude.seq` Prelude.rnf message
+ gen/Amazonka/CustomerProfiles/CreateProfile.hs view
@@ -0,0 +1,494 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.CreateProfile+-- 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 standard profile.+--+-- A standard profile represents the following attributes for a customer+-- profile in a domain.+module Amazonka.CustomerProfiles.CreateProfile+  ( -- * Creating a Request+    CreateProfile (..),+    newCreateProfile,++    -- * Request Lenses+    createProfile_accountNumber,+    createProfile_additionalInformation,+    createProfile_address,+    createProfile_attributes,+    createProfile_billingAddress,+    createProfile_birthDate,+    createProfile_businessEmailAddress,+    createProfile_businessName,+    createProfile_businessPhoneNumber,+    createProfile_emailAddress,+    createProfile_firstName,+    createProfile_gender,+    createProfile_genderString,+    createProfile_homePhoneNumber,+    createProfile_lastName,+    createProfile_mailingAddress,+    createProfile_middleName,+    createProfile_mobilePhoneNumber,+    createProfile_partyType,+    createProfile_partyTypeString,+    createProfile_personalEmailAddress,+    createProfile_phoneNumber,+    createProfile_shippingAddress,+    createProfile_domainName,++    -- * Destructuring the Response+    CreateProfileResponse (..),+    newCreateProfileResponse,++    -- * Response Lenses+    createProfileResponse_httpStatus,+    createProfileResponse_profileId,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateProfile' smart constructor.+data CreateProfile = CreateProfile'+  { -- | A unique account number that you have given to the customer.+    accountNumber :: Prelude.Maybe Prelude.Text,+    -- | Any additional information relevant to the customer’s profile.+    additionalInformation :: Prelude.Maybe Prelude.Text,+    -- | A generic address associated with the customer that is not mailing,+    -- shipping, or billing.+    address :: Prelude.Maybe Address,+    -- | A key value pair of attributes of a customer profile.+    attributes :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The customer’s billing address.+    billingAddress :: Prelude.Maybe Address,+    -- | The customer’s birth date.+    birthDate :: Prelude.Maybe Prelude.Text,+    -- | The customer’s business email address.+    businessEmailAddress :: Prelude.Maybe Prelude.Text,+    -- | The name of the customer’s business.+    businessName :: Prelude.Maybe Prelude.Text,+    -- | The customer’s business phone number.+    businessPhoneNumber :: Prelude.Maybe Prelude.Text,+    -- | The customer’s email address, which has not been specified as a personal+    -- or business address.+    emailAddress :: Prelude.Maybe Prelude.Text,+    -- | The customer’s first name.+    firstName :: Prelude.Maybe Prelude.Text,+    -- | The gender with which the customer identifies.+    gender :: Prelude.Maybe Gender,+    -- | An alternative to @Gender@ which accepts any string as input.+    genderString :: Prelude.Maybe Prelude.Text,+    -- | The customer’s home phone number.+    homePhoneNumber :: Prelude.Maybe Prelude.Text,+    -- | The customer’s last name.+    lastName :: Prelude.Maybe Prelude.Text,+    -- | The customer’s mailing address.+    mailingAddress :: Prelude.Maybe Address,+    -- | The customer’s middle name.+    middleName :: Prelude.Maybe Prelude.Text,+    -- | The customer’s mobile phone number.+    mobilePhoneNumber :: Prelude.Maybe Prelude.Text,+    -- | The type of profile used to describe the customer.+    partyType :: Prelude.Maybe PartyType,+    -- | An alternative to @PartyType@ which accepts any string as input.+    partyTypeString :: Prelude.Maybe Prelude.Text,+    -- | The customer’s personal email address.+    personalEmailAddress :: Prelude.Maybe Prelude.Text,+    -- | The customer’s phone number, which has not been specified as a mobile,+    -- home, or business number.+    phoneNumber :: Prelude.Maybe Prelude.Text,+    -- | The customer’s shipping address.+    shippingAddress :: Prelude.Maybe Address,+    -- | The unique name of the domain.+    domainName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateProfile' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accountNumber', 'createProfile_accountNumber' - A unique account number that you have given to the customer.+--+-- 'additionalInformation', 'createProfile_additionalInformation' - Any additional information relevant to the customer’s profile.+--+-- 'address', 'createProfile_address' - A generic address associated with the customer that is not mailing,+-- shipping, or billing.+--+-- 'attributes', 'createProfile_attributes' - A key value pair of attributes of a customer profile.+--+-- 'billingAddress', 'createProfile_billingAddress' - The customer’s billing address.+--+-- 'birthDate', 'createProfile_birthDate' - The customer’s birth date.+--+-- 'businessEmailAddress', 'createProfile_businessEmailAddress' - The customer’s business email address.+--+-- 'businessName', 'createProfile_businessName' - The name of the customer’s business.+--+-- 'businessPhoneNumber', 'createProfile_businessPhoneNumber' - The customer’s business phone number.+--+-- 'emailAddress', 'createProfile_emailAddress' - The customer’s email address, which has not been specified as a personal+-- or business address.+--+-- 'firstName', 'createProfile_firstName' - The customer’s first name.+--+-- 'gender', 'createProfile_gender' - The gender with which the customer identifies.+--+-- 'genderString', 'createProfile_genderString' - An alternative to @Gender@ which accepts any string as input.+--+-- 'homePhoneNumber', 'createProfile_homePhoneNumber' - The customer’s home phone number.+--+-- 'lastName', 'createProfile_lastName' - The customer’s last name.+--+-- 'mailingAddress', 'createProfile_mailingAddress' - The customer’s mailing address.+--+-- 'middleName', 'createProfile_middleName' - The customer’s middle name.+--+-- 'mobilePhoneNumber', 'createProfile_mobilePhoneNumber' - The customer’s mobile phone number.+--+-- 'partyType', 'createProfile_partyType' - The type of profile used to describe the customer.+--+-- 'partyTypeString', 'createProfile_partyTypeString' - An alternative to @PartyType@ which accepts any string as input.+--+-- 'personalEmailAddress', 'createProfile_personalEmailAddress' - The customer’s personal email address.+--+-- 'phoneNumber', 'createProfile_phoneNumber' - The customer’s phone number, which has not been specified as a mobile,+-- home, or business number.+--+-- 'shippingAddress', 'createProfile_shippingAddress' - The customer’s shipping address.+--+-- 'domainName', 'createProfile_domainName' - The unique name of the domain.+newCreateProfile ::+  -- | 'domainName'+  Prelude.Text ->+  CreateProfile+newCreateProfile pDomainName_ =+  CreateProfile'+    { accountNumber = Prelude.Nothing,+      additionalInformation = Prelude.Nothing,+      address = Prelude.Nothing,+      attributes = Prelude.Nothing,+      billingAddress = Prelude.Nothing,+      birthDate = Prelude.Nothing,+      businessEmailAddress = Prelude.Nothing,+      businessName = Prelude.Nothing,+      businessPhoneNumber = Prelude.Nothing,+      emailAddress = Prelude.Nothing,+      firstName = Prelude.Nothing,+      gender = Prelude.Nothing,+      genderString = Prelude.Nothing,+      homePhoneNumber = Prelude.Nothing,+      lastName = Prelude.Nothing,+      mailingAddress = Prelude.Nothing,+      middleName = Prelude.Nothing,+      mobilePhoneNumber = Prelude.Nothing,+      partyType = Prelude.Nothing,+      partyTypeString = Prelude.Nothing,+      personalEmailAddress = Prelude.Nothing,+      phoneNumber = Prelude.Nothing,+      shippingAddress = Prelude.Nothing,+      domainName = pDomainName_+    }++-- | A unique account number that you have given to the customer.+createProfile_accountNumber :: Lens.Lens' CreateProfile (Prelude.Maybe Prelude.Text)+createProfile_accountNumber = Lens.lens (\CreateProfile' {accountNumber} -> accountNumber) (\s@CreateProfile' {} a -> s {accountNumber = a} :: CreateProfile)++-- | Any additional information relevant to the customer’s profile.+createProfile_additionalInformation :: Lens.Lens' CreateProfile (Prelude.Maybe Prelude.Text)+createProfile_additionalInformation = Lens.lens (\CreateProfile' {additionalInformation} -> additionalInformation) (\s@CreateProfile' {} a -> s {additionalInformation = a} :: CreateProfile)++-- | A generic address associated with the customer that is not mailing,+-- shipping, or billing.+createProfile_address :: Lens.Lens' CreateProfile (Prelude.Maybe Address)+createProfile_address = Lens.lens (\CreateProfile' {address} -> address) (\s@CreateProfile' {} a -> s {address = a} :: CreateProfile)++-- | A key value pair of attributes of a customer profile.+createProfile_attributes :: Lens.Lens' CreateProfile (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createProfile_attributes = Lens.lens (\CreateProfile' {attributes} -> attributes) (\s@CreateProfile' {} a -> s {attributes = a} :: CreateProfile) Prelude.. Lens.mapping Lens.coerced++-- | The customer’s billing address.+createProfile_billingAddress :: Lens.Lens' CreateProfile (Prelude.Maybe Address)+createProfile_billingAddress = Lens.lens (\CreateProfile' {billingAddress} -> billingAddress) (\s@CreateProfile' {} a -> s {billingAddress = a} :: CreateProfile)++-- | The customer’s birth date.+createProfile_birthDate :: Lens.Lens' CreateProfile (Prelude.Maybe Prelude.Text)+createProfile_birthDate = Lens.lens (\CreateProfile' {birthDate} -> birthDate) (\s@CreateProfile' {} a -> s {birthDate = a} :: CreateProfile)++-- | The customer’s business email address.+createProfile_businessEmailAddress :: Lens.Lens' CreateProfile (Prelude.Maybe Prelude.Text)+createProfile_businessEmailAddress = Lens.lens (\CreateProfile' {businessEmailAddress} -> businessEmailAddress) (\s@CreateProfile' {} a -> s {businessEmailAddress = a} :: CreateProfile)++-- | The name of the customer’s business.+createProfile_businessName :: Lens.Lens' CreateProfile (Prelude.Maybe Prelude.Text)+createProfile_businessName = Lens.lens (\CreateProfile' {businessName} -> businessName) (\s@CreateProfile' {} a -> s {businessName = a} :: CreateProfile)++-- | The customer’s business phone number.+createProfile_businessPhoneNumber :: Lens.Lens' CreateProfile (Prelude.Maybe Prelude.Text)+createProfile_businessPhoneNumber = Lens.lens (\CreateProfile' {businessPhoneNumber} -> businessPhoneNumber) (\s@CreateProfile' {} a -> s {businessPhoneNumber = a} :: CreateProfile)++-- | The customer’s email address, which has not been specified as a personal+-- or business address.+createProfile_emailAddress :: Lens.Lens' CreateProfile (Prelude.Maybe Prelude.Text)+createProfile_emailAddress = Lens.lens (\CreateProfile' {emailAddress} -> emailAddress) (\s@CreateProfile' {} a -> s {emailAddress = a} :: CreateProfile)++-- | The customer’s first name.+createProfile_firstName :: Lens.Lens' CreateProfile (Prelude.Maybe Prelude.Text)+createProfile_firstName = Lens.lens (\CreateProfile' {firstName} -> firstName) (\s@CreateProfile' {} a -> s {firstName = a} :: CreateProfile)++-- | The gender with which the customer identifies.+createProfile_gender :: Lens.Lens' CreateProfile (Prelude.Maybe Gender)+createProfile_gender = Lens.lens (\CreateProfile' {gender} -> gender) (\s@CreateProfile' {} a -> s {gender = a} :: CreateProfile)++-- | An alternative to @Gender@ which accepts any string as input.+createProfile_genderString :: Lens.Lens' CreateProfile (Prelude.Maybe Prelude.Text)+createProfile_genderString = Lens.lens (\CreateProfile' {genderString} -> genderString) (\s@CreateProfile' {} a -> s {genderString = a} :: CreateProfile)++-- | The customer’s home phone number.+createProfile_homePhoneNumber :: Lens.Lens' CreateProfile (Prelude.Maybe Prelude.Text)+createProfile_homePhoneNumber = Lens.lens (\CreateProfile' {homePhoneNumber} -> homePhoneNumber) (\s@CreateProfile' {} a -> s {homePhoneNumber = a} :: CreateProfile)++-- | The customer’s last name.+createProfile_lastName :: Lens.Lens' CreateProfile (Prelude.Maybe Prelude.Text)+createProfile_lastName = Lens.lens (\CreateProfile' {lastName} -> lastName) (\s@CreateProfile' {} a -> s {lastName = a} :: CreateProfile)++-- | The customer’s mailing address.+createProfile_mailingAddress :: Lens.Lens' CreateProfile (Prelude.Maybe Address)+createProfile_mailingAddress = Lens.lens (\CreateProfile' {mailingAddress} -> mailingAddress) (\s@CreateProfile' {} a -> s {mailingAddress = a} :: CreateProfile)++-- | The customer’s middle name.+createProfile_middleName :: Lens.Lens' CreateProfile (Prelude.Maybe Prelude.Text)+createProfile_middleName = Lens.lens (\CreateProfile' {middleName} -> middleName) (\s@CreateProfile' {} a -> s {middleName = a} :: CreateProfile)++-- | The customer’s mobile phone number.+createProfile_mobilePhoneNumber :: Lens.Lens' CreateProfile (Prelude.Maybe Prelude.Text)+createProfile_mobilePhoneNumber = Lens.lens (\CreateProfile' {mobilePhoneNumber} -> mobilePhoneNumber) (\s@CreateProfile' {} a -> s {mobilePhoneNumber = a} :: CreateProfile)++-- | The type of profile used to describe the customer.+createProfile_partyType :: Lens.Lens' CreateProfile (Prelude.Maybe PartyType)+createProfile_partyType = Lens.lens (\CreateProfile' {partyType} -> partyType) (\s@CreateProfile' {} a -> s {partyType = a} :: CreateProfile)++-- | An alternative to @PartyType@ which accepts any string as input.+createProfile_partyTypeString :: Lens.Lens' CreateProfile (Prelude.Maybe Prelude.Text)+createProfile_partyTypeString = Lens.lens (\CreateProfile' {partyTypeString} -> partyTypeString) (\s@CreateProfile' {} a -> s {partyTypeString = a} :: CreateProfile)++-- | The customer’s personal email address.+createProfile_personalEmailAddress :: Lens.Lens' CreateProfile (Prelude.Maybe Prelude.Text)+createProfile_personalEmailAddress = Lens.lens (\CreateProfile' {personalEmailAddress} -> personalEmailAddress) (\s@CreateProfile' {} a -> s {personalEmailAddress = a} :: CreateProfile)++-- | The customer’s phone number, which has not been specified as a mobile,+-- home, or business number.+createProfile_phoneNumber :: Lens.Lens' CreateProfile (Prelude.Maybe Prelude.Text)+createProfile_phoneNumber = Lens.lens (\CreateProfile' {phoneNumber} -> phoneNumber) (\s@CreateProfile' {} a -> s {phoneNumber = a} :: CreateProfile)++-- | The customer’s shipping address.+createProfile_shippingAddress :: Lens.Lens' CreateProfile (Prelude.Maybe Address)+createProfile_shippingAddress = Lens.lens (\CreateProfile' {shippingAddress} -> shippingAddress) (\s@CreateProfile' {} a -> s {shippingAddress = a} :: CreateProfile)++-- | The unique name of the domain.+createProfile_domainName :: Lens.Lens' CreateProfile Prelude.Text+createProfile_domainName = Lens.lens (\CreateProfile' {domainName} -> domainName) (\s@CreateProfile' {} a -> s {domainName = a} :: CreateProfile)++instance Core.AWSRequest CreateProfile where+  type+    AWSResponse CreateProfile =+      CreateProfileResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateProfileResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "ProfileId")+      )++instance Prelude.Hashable CreateProfile where+  hashWithSalt _salt CreateProfile' {..} =+    _salt+      `Prelude.hashWithSalt` accountNumber+      `Prelude.hashWithSalt` additionalInformation+      `Prelude.hashWithSalt` address+      `Prelude.hashWithSalt` attributes+      `Prelude.hashWithSalt` billingAddress+      `Prelude.hashWithSalt` birthDate+      `Prelude.hashWithSalt` businessEmailAddress+      `Prelude.hashWithSalt` businessName+      `Prelude.hashWithSalt` businessPhoneNumber+      `Prelude.hashWithSalt` emailAddress+      `Prelude.hashWithSalt` firstName+      `Prelude.hashWithSalt` gender+      `Prelude.hashWithSalt` genderString+      `Prelude.hashWithSalt` homePhoneNumber+      `Prelude.hashWithSalt` lastName+      `Prelude.hashWithSalt` mailingAddress+      `Prelude.hashWithSalt` middleName+      `Prelude.hashWithSalt` mobilePhoneNumber+      `Prelude.hashWithSalt` partyType+      `Prelude.hashWithSalt` partyTypeString+      `Prelude.hashWithSalt` personalEmailAddress+      `Prelude.hashWithSalt` phoneNumber+      `Prelude.hashWithSalt` shippingAddress+      `Prelude.hashWithSalt` domainName++instance Prelude.NFData CreateProfile where+  rnf CreateProfile' {..} =+    Prelude.rnf accountNumber+      `Prelude.seq` Prelude.rnf additionalInformation+      `Prelude.seq` Prelude.rnf address+      `Prelude.seq` Prelude.rnf attributes+      `Prelude.seq` Prelude.rnf billingAddress+      `Prelude.seq` Prelude.rnf birthDate+      `Prelude.seq` Prelude.rnf businessEmailAddress+      `Prelude.seq` Prelude.rnf businessName+      `Prelude.seq` Prelude.rnf businessPhoneNumber+      `Prelude.seq` Prelude.rnf emailAddress+      `Prelude.seq` Prelude.rnf firstName+      `Prelude.seq` Prelude.rnf gender+      `Prelude.seq` Prelude.rnf genderString+      `Prelude.seq` Prelude.rnf homePhoneNumber+      `Prelude.seq` Prelude.rnf lastName+      `Prelude.seq` Prelude.rnf mailingAddress+      `Prelude.seq` Prelude.rnf middleName+      `Prelude.seq` Prelude.rnf mobilePhoneNumber+      `Prelude.seq` Prelude.rnf partyType+      `Prelude.seq` Prelude.rnf partyTypeString+      `Prelude.seq` Prelude.rnf+        personalEmailAddress+      `Prelude.seq` Prelude.rnf phoneNumber+      `Prelude.seq` Prelude.rnf+        shippingAddress+      `Prelude.seq` Prelude.rnf domainName++instance Data.ToHeaders CreateProfile where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateProfile where+  toJSON CreateProfile' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("AccountNumber" Data..=) Prelude.<$> accountNumber,+            ("AdditionalInformation" Data..=)+              Prelude.<$> additionalInformation,+            ("Address" Data..=) Prelude.<$> address,+            ("Attributes" Data..=) Prelude.<$> attributes,+            ("BillingAddress" Data..=)+              Prelude.<$> billingAddress,+            ("BirthDate" Data..=) Prelude.<$> birthDate,+            ("BusinessEmailAddress" Data..=)+              Prelude.<$> businessEmailAddress,+            ("BusinessName" Data..=) Prelude.<$> businessName,+            ("BusinessPhoneNumber" Data..=)+              Prelude.<$> businessPhoneNumber,+            ("EmailAddress" Data..=) Prelude.<$> emailAddress,+            ("FirstName" Data..=) Prelude.<$> firstName,+            ("Gender" Data..=) Prelude.<$> gender,+            ("GenderString" Data..=) Prelude.<$> genderString,+            ("HomePhoneNumber" Data..=)+              Prelude.<$> homePhoneNumber,+            ("LastName" Data..=) Prelude.<$> lastName,+            ("MailingAddress" Data..=)+              Prelude.<$> mailingAddress,+            ("MiddleName" Data..=) Prelude.<$> middleName,+            ("MobilePhoneNumber" Data..=)+              Prelude.<$> mobilePhoneNumber,+            ("PartyType" Data..=) Prelude.<$> partyType,+            ("PartyTypeString" Data..=)+              Prelude.<$> partyTypeString,+            ("PersonalEmailAddress" Data..=)+              Prelude.<$> personalEmailAddress,+            ("PhoneNumber" Data..=) Prelude.<$> phoneNumber,+            ("ShippingAddress" Data..=)+              Prelude.<$> shippingAddress+          ]+      )++instance Data.ToPath CreateProfile where+  toPath CreateProfile' {..} =+    Prelude.mconcat+      ["/domains/", Data.toBS domainName, "/profiles"]++instance Data.ToQuery CreateProfile where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateProfileResponse' smart constructor.+data CreateProfileResponse = CreateProfileResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The unique identifier of a customer profile.+    profileId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateProfileResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createProfileResponse_httpStatus' - The response's http status code.+--+-- 'profileId', 'createProfileResponse_profileId' - The unique identifier of a customer profile.+newCreateProfileResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'profileId'+  Prelude.Text ->+  CreateProfileResponse+newCreateProfileResponse pHttpStatus_ pProfileId_ =+  CreateProfileResponse'+    { httpStatus = pHttpStatus_,+      profileId = pProfileId_+    }++-- | The response's http status code.+createProfileResponse_httpStatus :: Lens.Lens' CreateProfileResponse Prelude.Int+createProfileResponse_httpStatus = Lens.lens (\CreateProfileResponse' {httpStatus} -> httpStatus) (\s@CreateProfileResponse' {} a -> s {httpStatus = a} :: CreateProfileResponse)++-- | The unique identifier of a customer profile.+createProfileResponse_profileId :: Lens.Lens' CreateProfileResponse Prelude.Text+createProfileResponse_profileId = Lens.lens (\CreateProfileResponse' {profileId} -> profileId) (\s@CreateProfileResponse' {} a -> s {profileId = a} :: CreateProfileResponse)++instance Prelude.NFData CreateProfileResponse where+  rnf CreateProfileResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf profileId
+ gen/Amazonka/CustomerProfiles/DeleteDomain.hs view
@@ -0,0 +1,158 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.DeleteDomain+-- 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 specific domain and all of its customer data, such as customer+-- profile attributes and their related objects.+module Amazonka.CustomerProfiles.DeleteDomain+  ( -- * Creating a Request+    DeleteDomain (..),+    newDeleteDomain,++    -- * Request Lenses+    deleteDomain_domainName,++    -- * Destructuring the Response+    DeleteDomainResponse (..),+    newDeleteDomainResponse,++    -- * Response Lenses+    deleteDomainResponse_httpStatus,+    deleteDomainResponse_message,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteDomain' smart constructor.+data DeleteDomain = DeleteDomain'+  { -- | The unique name of the domain.+    domainName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteDomain' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'domainName', 'deleteDomain_domainName' - The unique name of the domain.+newDeleteDomain ::+  -- | 'domainName'+  Prelude.Text ->+  DeleteDomain+newDeleteDomain pDomainName_ =+  DeleteDomain' {domainName = pDomainName_}++-- | The unique name of the domain.+deleteDomain_domainName :: Lens.Lens' DeleteDomain Prelude.Text+deleteDomain_domainName = Lens.lens (\DeleteDomain' {domainName} -> domainName) (\s@DeleteDomain' {} a -> s {domainName = a} :: DeleteDomain)++instance Core.AWSRequest DeleteDomain where+  type AWSResponse DeleteDomain = DeleteDomainResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteDomainResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "Message")+      )++instance Prelude.Hashable DeleteDomain where+  hashWithSalt _salt DeleteDomain' {..} =+    _salt `Prelude.hashWithSalt` domainName++instance Prelude.NFData DeleteDomain where+  rnf DeleteDomain' {..} = Prelude.rnf domainName++instance Data.ToHeaders DeleteDomain where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteDomain where+  toPath DeleteDomain' {..} =+    Prelude.mconcat ["/domains/", Data.toBS domainName]++instance Data.ToQuery DeleteDomain where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteDomainResponse' smart constructor.+data DeleteDomainResponse = DeleteDomainResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A message that indicates the delete request is done.+    message :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteDomainResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteDomainResponse_httpStatus' - The response's http status code.+--+-- 'message', 'deleteDomainResponse_message' - A message that indicates the delete request is done.+newDeleteDomainResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'message'+  Prelude.Text ->+  DeleteDomainResponse+newDeleteDomainResponse pHttpStatus_ pMessage_ =+  DeleteDomainResponse'+    { httpStatus = pHttpStatus_,+      message = pMessage_+    }++-- | The response's http status code.+deleteDomainResponse_httpStatus :: Lens.Lens' DeleteDomainResponse Prelude.Int+deleteDomainResponse_httpStatus = Lens.lens (\DeleteDomainResponse' {httpStatus} -> httpStatus) (\s@DeleteDomainResponse' {} a -> s {httpStatus = a} :: DeleteDomainResponse)++-- | A message that indicates the delete request is done.+deleteDomainResponse_message :: Lens.Lens' DeleteDomainResponse Prelude.Text+deleteDomainResponse_message = Lens.lens (\DeleteDomainResponse' {message} -> message) (\s@DeleteDomainResponse' {} a -> s {message = a} :: DeleteDomainResponse)++instance Prelude.NFData DeleteDomainResponse where+  rnf DeleteDomainResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf message
+ gen/Amazonka/CustomerProfiles/DeleteIntegration.hs view
@@ -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.CustomerProfiles.DeleteIntegration+-- 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 an integration from a specific domain.+module Amazonka.CustomerProfiles.DeleteIntegration+  ( -- * Creating a Request+    DeleteIntegration (..),+    newDeleteIntegration,++    -- * Request Lenses+    deleteIntegration_domainName,+    deleteIntegration_uri,++    -- * Destructuring the Response+    DeleteIntegrationResponse (..),+    newDeleteIntegrationResponse,++    -- * Response Lenses+    deleteIntegrationResponse_httpStatus,+    deleteIntegrationResponse_message,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteIntegration' smart constructor.+data DeleteIntegration = DeleteIntegration'+  { -- | The unique name of the domain.+    domainName :: Prelude.Text,+    -- | The URI of the S3 bucket or any other type of data source.+    uri :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteIntegration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'domainName', 'deleteIntegration_domainName' - The unique name of the domain.+--+-- 'uri', 'deleteIntegration_uri' - The URI of the S3 bucket or any other type of data source.+newDeleteIntegration ::+  -- | 'domainName'+  Prelude.Text ->+  -- | 'uri'+  Prelude.Text ->+  DeleteIntegration+newDeleteIntegration pDomainName_ pUri_ =+  DeleteIntegration'+    { domainName = pDomainName_,+      uri = pUri_+    }++-- | The unique name of the domain.+deleteIntegration_domainName :: Lens.Lens' DeleteIntegration Prelude.Text+deleteIntegration_domainName = Lens.lens (\DeleteIntegration' {domainName} -> domainName) (\s@DeleteIntegration' {} a -> s {domainName = a} :: DeleteIntegration)++-- | The URI of the S3 bucket or any other type of data source.+deleteIntegration_uri :: Lens.Lens' DeleteIntegration Prelude.Text+deleteIntegration_uri = Lens.lens (\DeleteIntegration' {uri} -> uri) (\s@DeleteIntegration' {} a -> s {uri = a} :: DeleteIntegration)++instance Core.AWSRequest DeleteIntegration where+  type+    AWSResponse DeleteIntegration =+      DeleteIntegrationResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteIntegrationResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "Message")+      )++instance Prelude.Hashable DeleteIntegration where+  hashWithSalt _salt DeleteIntegration' {..} =+    _salt+      `Prelude.hashWithSalt` domainName+      `Prelude.hashWithSalt` uri++instance Prelude.NFData DeleteIntegration where+  rnf DeleteIntegration' {..} =+    Prelude.rnf domainName+      `Prelude.seq` Prelude.rnf uri++instance Data.ToHeaders DeleteIntegration where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeleteIntegration where+  toJSON DeleteIntegration' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("Uri" Data..= uri)]+      )++instance Data.ToPath DeleteIntegration where+  toPath DeleteIntegration' {..} =+    Prelude.mconcat+      [ "/domains/",+        Data.toBS domainName,+        "/integrations/delete"+      ]++instance Data.ToQuery DeleteIntegration where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteIntegrationResponse' smart constructor.+data DeleteIntegrationResponse = DeleteIntegrationResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A message that indicates the delete request is done.+    message :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteIntegrationResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteIntegrationResponse_httpStatus' - The response's http status code.+--+-- 'message', 'deleteIntegrationResponse_message' - A message that indicates the delete request is done.+newDeleteIntegrationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'message'+  Prelude.Text ->+  DeleteIntegrationResponse+newDeleteIntegrationResponse pHttpStatus_ pMessage_ =+  DeleteIntegrationResponse'+    { httpStatus =+        pHttpStatus_,+      message = pMessage_+    }++-- | The response's http status code.+deleteIntegrationResponse_httpStatus :: Lens.Lens' DeleteIntegrationResponse Prelude.Int+deleteIntegrationResponse_httpStatus = Lens.lens (\DeleteIntegrationResponse' {httpStatus} -> httpStatus) (\s@DeleteIntegrationResponse' {} a -> s {httpStatus = a} :: DeleteIntegrationResponse)++-- | A message that indicates the delete request is done.+deleteIntegrationResponse_message :: Lens.Lens' DeleteIntegrationResponse Prelude.Text+deleteIntegrationResponse_message = Lens.lens (\DeleteIntegrationResponse' {message} -> message) (\s@DeleteIntegrationResponse' {} a -> s {message = a} :: DeleteIntegrationResponse)++instance Prelude.NFData DeleteIntegrationResponse where+  rnf DeleteIntegrationResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf message
+ gen/Amazonka/CustomerProfiles/DeleteProfile.hs view
@@ -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.CustomerProfiles.DeleteProfile+-- 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 standard customer profile and all data pertaining to the+-- profile.+module Amazonka.CustomerProfiles.DeleteProfile+  ( -- * Creating a Request+    DeleteProfile (..),+    newDeleteProfile,++    -- * Request Lenses+    deleteProfile_profileId,+    deleteProfile_domainName,++    -- * Destructuring the Response+    DeleteProfileResponse (..),+    newDeleteProfileResponse,++    -- * Response Lenses+    deleteProfileResponse_message,+    deleteProfileResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteProfile' smart constructor.+data DeleteProfile = DeleteProfile'+  { -- | The unique identifier of a customer profile.+    profileId :: Prelude.Text,+    -- | The unique name of the domain.+    domainName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteProfile' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'profileId', 'deleteProfile_profileId' - The unique identifier of a customer profile.+--+-- 'domainName', 'deleteProfile_domainName' - The unique name of the domain.+newDeleteProfile ::+  -- | 'profileId'+  Prelude.Text ->+  -- | 'domainName'+  Prelude.Text ->+  DeleteProfile+newDeleteProfile pProfileId_ pDomainName_ =+  DeleteProfile'+    { profileId = pProfileId_,+      domainName = pDomainName_+    }++-- | The unique identifier of a customer profile.+deleteProfile_profileId :: Lens.Lens' DeleteProfile Prelude.Text+deleteProfile_profileId = Lens.lens (\DeleteProfile' {profileId} -> profileId) (\s@DeleteProfile' {} a -> s {profileId = a} :: DeleteProfile)++-- | The unique name of the domain.+deleteProfile_domainName :: Lens.Lens' DeleteProfile Prelude.Text+deleteProfile_domainName = Lens.lens (\DeleteProfile' {domainName} -> domainName) (\s@DeleteProfile' {} a -> s {domainName = a} :: DeleteProfile)++instance Core.AWSRequest DeleteProfile where+  type+    AWSResponse DeleteProfile =+      DeleteProfileResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteProfileResponse'+            Prelude.<$> (x Data..?> "Message")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteProfile where+  hashWithSalt _salt DeleteProfile' {..} =+    _salt+      `Prelude.hashWithSalt` profileId+      `Prelude.hashWithSalt` domainName++instance Prelude.NFData DeleteProfile where+  rnf DeleteProfile' {..} =+    Prelude.rnf profileId+      `Prelude.seq` Prelude.rnf domainName++instance Data.ToHeaders DeleteProfile where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeleteProfile where+  toJSON DeleteProfile' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("ProfileId" Data..= profileId)]+      )++instance Data.ToPath DeleteProfile where+  toPath DeleteProfile' {..} =+    Prelude.mconcat+      [ "/domains/",+        Data.toBS domainName,+        "/profiles/delete"+      ]++instance Data.ToQuery DeleteProfile where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteProfileResponse' smart constructor.+data DeleteProfileResponse = DeleteProfileResponse'+  { -- | A message that indicates the delete request is done.+    message :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteProfileResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'message', 'deleteProfileResponse_message' - A message that indicates the delete request is done.+--+-- 'httpStatus', 'deleteProfileResponse_httpStatus' - The response's http status code.+newDeleteProfileResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteProfileResponse+newDeleteProfileResponse pHttpStatus_ =+  DeleteProfileResponse'+    { message = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A message that indicates the delete request is done.+deleteProfileResponse_message :: Lens.Lens' DeleteProfileResponse (Prelude.Maybe Prelude.Text)+deleteProfileResponse_message = Lens.lens (\DeleteProfileResponse' {message} -> message) (\s@DeleteProfileResponse' {} a -> s {message = a} :: DeleteProfileResponse)++-- | The response's http status code.+deleteProfileResponse_httpStatus :: Lens.Lens' DeleteProfileResponse Prelude.Int+deleteProfileResponse_httpStatus = Lens.lens (\DeleteProfileResponse' {httpStatus} -> httpStatus) (\s@DeleteProfileResponse' {} a -> s {httpStatus = a} :: DeleteProfileResponse)++instance Prelude.NFData DeleteProfileResponse where+  rnf DeleteProfileResponse' {..} =+    Prelude.rnf message+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/CustomerProfiles/DeleteProfileKey.hs view
@@ -0,0 +1,219 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.DeleteProfileKey+-- 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 searchable key from a customer profile.+module Amazonka.CustomerProfiles.DeleteProfileKey+  ( -- * Creating a Request+    DeleteProfileKey (..),+    newDeleteProfileKey,++    -- * Request Lenses+    deleteProfileKey_profileId,+    deleteProfileKey_keyName,+    deleteProfileKey_values,+    deleteProfileKey_domainName,++    -- * Destructuring the Response+    DeleteProfileKeyResponse (..),+    newDeleteProfileKeyResponse,++    -- * Response Lenses+    deleteProfileKeyResponse_message,+    deleteProfileKeyResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteProfileKey' smart constructor.+data DeleteProfileKey = DeleteProfileKey'+  { -- | The unique identifier of a customer profile.+    profileId :: Prelude.Text,+    -- | A searchable identifier of a customer profile.+    keyName :: Prelude.Text,+    -- | A list of key values.+    values :: [Prelude.Text],+    -- | The unique name of the domain.+    domainName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteProfileKey' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'profileId', 'deleteProfileKey_profileId' - The unique identifier of a customer profile.+--+-- 'keyName', 'deleteProfileKey_keyName' - A searchable identifier of a customer profile.+--+-- 'values', 'deleteProfileKey_values' - A list of key values.+--+-- 'domainName', 'deleteProfileKey_domainName' - The unique name of the domain.+newDeleteProfileKey ::+  -- | 'profileId'+  Prelude.Text ->+  -- | 'keyName'+  Prelude.Text ->+  -- | 'domainName'+  Prelude.Text ->+  DeleteProfileKey+newDeleteProfileKey+  pProfileId_+  pKeyName_+  pDomainName_ =+    DeleteProfileKey'+      { profileId = pProfileId_,+        keyName = pKeyName_,+        values = Prelude.mempty,+        domainName = pDomainName_+      }++-- | The unique identifier of a customer profile.+deleteProfileKey_profileId :: Lens.Lens' DeleteProfileKey Prelude.Text+deleteProfileKey_profileId = Lens.lens (\DeleteProfileKey' {profileId} -> profileId) (\s@DeleteProfileKey' {} a -> s {profileId = a} :: DeleteProfileKey)++-- | A searchable identifier of a customer profile.+deleteProfileKey_keyName :: Lens.Lens' DeleteProfileKey Prelude.Text+deleteProfileKey_keyName = Lens.lens (\DeleteProfileKey' {keyName} -> keyName) (\s@DeleteProfileKey' {} a -> s {keyName = a} :: DeleteProfileKey)++-- | A list of key values.+deleteProfileKey_values :: Lens.Lens' DeleteProfileKey [Prelude.Text]+deleteProfileKey_values = Lens.lens (\DeleteProfileKey' {values} -> values) (\s@DeleteProfileKey' {} a -> s {values = a} :: DeleteProfileKey) Prelude.. Lens.coerced++-- | The unique name of the domain.+deleteProfileKey_domainName :: Lens.Lens' DeleteProfileKey Prelude.Text+deleteProfileKey_domainName = Lens.lens (\DeleteProfileKey' {domainName} -> domainName) (\s@DeleteProfileKey' {} a -> s {domainName = a} :: DeleteProfileKey)++instance Core.AWSRequest DeleteProfileKey where+  type+    AWSResponse DeleteProfileKey =+      DeleteProfileKeyResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteProfileKeyResponse'+            Prelude.<$> (x Data..?> "Message")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteProfileKey where+  hashWithSalt _salt DeleteProfileKey' {..} =+    _salt+      `Prelude.hashWithSalt` profileId+      `Prelude.hashWithSalt` keyName+      `Prelude.hashWithSalt` values+      `Prelude.hashWithSalt` domainName++instance Prelude.NFData DeleteProfileKey where+  rnf DeleteProfileKey' {..} =+    Prelude.rnf profileId+      `Prelude.seq` Prelude.rnf keyName+      `Prelude.seq` Prelude.rnf values+      `Prelude.seq` Prelude.rnf domainName++instance Data.ToHeaders DeleteProfileKey where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeleteProfileKey where+  toJSON DeleteProfileKey' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("ProfileId" Data..= profileId),+            Prelude.Just ("KeyName" Data..= keyName),+            Prelude.Just ("Values" Data..= values)+          ]+      )++instance Data.ToPath DeleteProfileKey where+  toPath DeleteProfileKey' {..} =+    Prelude.mconcat+      [ "/domains/",+        Data.toBS domainName,+        "/profiles/keys/delete"+      ]++instance Data.ToQuery DeleteProfileKey where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteProfileKeyResponse' smart constructor.+data DeleteProfileKeyResponse = DeleteProfileKeyResponse'+  { -- | A message that indicates the delete request is done.+    message :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteProfileKeyResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'message', 'deleteProfileKeyResponse_message' - A message that indicates the delete request is done.+--+-- 'httpStatus', 'deleteProfileKeyResponse_httpStatus' - The response's http status code.+newDeleteProfileKeyResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteProfileKeyResponse+newDeleteProfileKeyResponse pHttpStatus_ =+  DeleteProfileKeyResponse'+    { message =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A message that indicates the delete request is done.+deleteProfileKeyResponse_message :: Lens.Lens' DeleteProfileKeyResponse (Prelude.Maybe Prelude.Text)+deleteProfileKeyResponse_message = Lens.lens (\DeleteProfileKeyResponse' {message} -> message) (\s@DeleteProfileKeyResponse' {} a -> s {message = a} :: DeleteProfileKeyResponse)++-- | The response's http status code.+deleteProfileKeyResponse_httpStatus :: Lens.Lens' DeleteProfileKeyResponse Prelude.Int+deleteProfileKeyResponse_httpStatus = Lens.lens (\DeleteProfileKeyResponse' {httpStatus} -> httpStatus) (\s@DeleteProfileKeyResponse' {} a -> s {httpStatus = a} :: DeleteProfileKeyResponse)++instance Prelude.NFData DeleteProfileKeyResponse where+  rnf DeleteProfileKeyResponse' {..} =+    Prelude.rnf message+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/CustomerProfiles/DeleteProfileObject.hs view
@@ -0,0 +1,227 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.DeleteProfileObject+-- 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 an object associated with a profile of a given+-- ProfileObjectType.+module Amazonka.CustomerProfiles.DeleteProfileObject+  ( -- * Creating a Request+    DeleteProfileObject (..),+    newDeleteProfileObject,++    -- * Request Lenses+    deleteProfileObject_profileId,+    deleteProfileObject_profileObjectUniqueKey,+    deleteProfileObject_objectTypeName,+    deleteProfileObject_domainName,++    -- * Destructuring the Response+    DeleteProfileObjectResponse (..),+    newDeleteProfileObjectResponse,++    -- * Response Lenses+    deleteProfileObjectResponse_message,+    deleteProfileObjectResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteProfileObject' smart constructor.+data DeleteProfileObject = DeleteProfileObject'+  { -- | The unique identifier of a customer profile.+    profileId :: Prelude.Text,+    -- | The unique identifier of the profile object generated by the service.+    profileObjectUniqueKey :: Prelude.Text,+    -- | The name of the profile object type.+    objectTypeName :: Prelude.Text,+    -- | The unique name of the domain.+    domainName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteProfileObject' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'profileId', 'deleteProfileObject_profileId' - The unique identifier of a customer profile.+--+-- 'profileObjectUniqueKey', 'deleteProfileObject_profileObjectUniqueKey' - The unique identifier of the profile object generated by the service.+--+-- 'objectTypeName', 'deleteProfileObject_objectTypeName' - The name of the profile object type.+--+-- 'domainName', 'deleteProfileObject_domainName' - The unique name of the domain.+newDeleteProfileObject ::+  -- | 'profileId'+  Prelude.Text ->+  -- | 'profileObjectUniqueKey'+  Prelude.Text ->+  -- | 'objectTypeName'+  Prelude.Text ->+  -- | 'domainName'+  Prelude.Text ->+  DeleteProfileObject+newDeleteProfileObject+  pProfileId_+  pProfileObjectUniqueKey_+  pObjectTypeName_+  pDomainName_ =+    DeleteProfileObject'+      { profileId = pProfileId_,+        profileObjectUniqueKey = pProfileObjectUniqueKey_,+        objectTypeName = pObjectTypeName_,+        domainName = pDomainName_+      }++-- | The unique identifier of a customer profile.+deleteProfileObject_profileId :: Lens.Lens' DeleteProfileObject Prelude.Text+deleteProfileObject_profileId = Lens.lens (\DeleteProfileObject' {profileId} -> profileId) (\s@DeleteProfileObject' {} a -> s {profileId = a} :: DeleteProfileObject)++-- | The unique identifier of the profile object generated by the service.+deleteProfileObject_profileObjectUniqueKey :: Lens.Lens' DeleteProfileObject Prelude.Text+deleteProfileObject_profileObjectUniqueKey = Lens.lens (\DeleteProfileObject' {profileObjectUniqueKey} -> profileObjectUniqueKey) (\s@DeleteProfileObject' {} a -> s {profileObjectUniqueKey = a} :: DeleteProfileObject)++-- | The name of the profile object type.+deleteProfileObject_objectTypeName :: Lens.Lens' DeleteProfileObject Prelude.Text+deleteProfileObject_objectTypeName = Lens.lens (\DeleteProfileObject' {objectTypeName} -> objectTypeName) (\s@DeleteProfileObject' {} a -> s {objectTypeName = a} :: DeleteProfileObject)++-- | The unique name of the domain.+deleteProfileObject_domainName :: Lens.Lens' DeleteProfileObject Prelude.Text+deleteProfileObject_domainName = Lens.lens (\DeleteProfileObject' {domainName} -> domainName) (\s@DeleteProfileObject' {} a -> s {domainName = a} :: DeleteProfileObject)++instance Core.AWSRequest DeleteProfileObject where+  type+    AWSResponse DeleteProfileObject =+      DeleteProfileObjectResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteProfileObjectResponse'+            Prelude.<$> (x Data..?> "Message")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteProfileObject where+  hashWithSalt _salt DeleteProfileObject' {..} =+    _salt+      `Prelude.hashWithSalt` profileId+      `Prelude.hashWithSalt` profileObjectUniqueKey+      `Prelude.hashWithSalt` objectTypeName+      `Prelude.hashWithSalt` domainName++instance Prelude.NFData DeleteProfileObject where+  rnf DeleteProfileObject' {..} =+    Prelude.rnf profileId+      `Prelude.seq` Prelude.rnf profileObjectUniqueKey+      `Prelude.seq` Prelude.rnf objectTypeName+      `Prelude.seq` Prelude.rnf domainName++instance Data.ToHeaders DeleteProfileObject where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeleteProfileObject where+  toJSON DeleteProfileObject' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("ProfileId" Data..= profileId),+            Prelude.Just+              ( "ProfileObjectUniqueKey"+                  Data..= profileObjectUniqueKey+              ),+            Prelude.Just+              ("ObjectTypeName" Data..= objectTypeName)+          ]+      )++instance Data.ToPath DeleteProfileObject where+  toPath DeleteProfileObject' {..} =+    Prelude.mconcat+      [ "/domains/",+        Data.toBS domainName,+        "/profiles/objects/delete"+      ]++instance Data.ToQuery DeleteProfileObject where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteProfileObjectResponse' smart constructor.+data DeleteProfileObjectResponse = DeleteProfileObjectResponse'+  { -- | A message that indicates the delete request is done.+    message :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteProfileObjectResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'message', 'deleteProfileObjectResponse_message' - A message that indicates the delete request is done.+--+-- 'httpStatus', 'deleteProfileObjectResponse_httpStatus' - The response's http status code.+newDeleteProfileObjectResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteProfileObjectResponse+newDeleteProfileObjectResponse pHttpStatus_ =+  DeleteProfileObjectResponse'+    { message =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A message that indicates the delete request is done.+deleteProfileObjectResponse_message :: Lens.Lens' DeleteProfileObjectResponse (Prelude.Maybe Prelude.Text)+deleteProfileObjectResponse_message = Lens.lens (\DeleteProfileObjectResponse' {message} -> message) (\s@DeleteProfileObjectResponse' {} a -> s {message = a} :: DeleteProfileObjectResponse)++-- | The response's http status code.+deleteProfileObjectResponse_httpStatus :: Lens.Lens' DeleteProfileObjectResponse Prelude.Int+deleteProfileObjectResponse_httpStatus = Lens.lens (\DeleteProfileObjectResponse' {httpStatus} -> httpStatus) (\s@DeleteProfileObjectResponse' {} a -> s {httpStatus = a} :: DeleteProfileObjectResponse)++instance Prelude.NFData DeleteProfileObjectResponse where+  rnf DeleteProfileObjectResponse' {..} =+    Prelude.rnf message+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/CustomerProfiles/DeleteProfileObjectType.hs view
@@ -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.CustomerProfiles.DeleteProfileObjectType+-- 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 ProfileObjectType from a specific domain as well as removes+-- all the ProfileObjects of that type. It also disables integrations from+-- this specific ProfileObjectType. In addition, it scrubs all of the+-- fields of the standard profile that were populated from this+-- ProfileObjectType.+module Amazonka.CustomerProfiles.DeleteProfileObjectType+  ( -- * Creating a Request+    DeleteProfileObjectType (..),+    newDeleteProfileObjectType,++    -- * Request Lenses+    deleteProfileObjectType_domainName,+    deleteProfileObjectType_objectTypeName,++    -- * Destructuring the Response+    DeleteProfileObjectTypeResponse (..),+    newDeleteProfileObjectTypeResponse,++    -- * Response Lenses+    deleteProfileObjectTypeResponse_httpStatus,+    deleteProfileObjectTypeResponse_message,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteProfileObjectType' smart constructor.+data DeleteProfileObjectType = DeleteProfileObjectType'+  { -- | The unique name of the domain.+    domainName :: Prelude.Text,+    -- | The name of the profile object type.+    objectTypeName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteProfileObjectType' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'domainName', 'deleteProfileObjectType_domainName' - The unique name of the domain.+--+-- 'objectTypeName', 'deleteProfileObjectType_objectTypeName' - The name of the profile object type.+newDeleteProfileObjectType ::+  -- | 'domainName'+  Prelude.Text ->+  -- | 'objectTypeName'+  Prelude.Text ->+  DeleteProfileObjectType+newDeleteProfileObjectType+  pDomainName_+  pObjectTypeName_ =+    DeleteProfileObjectType'+      { domainName = pDomainName_,+        objectTypeName = pObjectTypeName_+      }++-- | The unique name of the domain.+deleteProfileObjectType_domainName :: Lens.Lens' DeleteProfileObjectType Prelude.Text+deleteProfileObjectType_domainName = Lens.lens (\DeleteProfileObjectType' {domainName} -> domainName) (\s@DeleteProfileObjectType' {} a -> s {domainName = a} :: DeleteProfileObjectType)++-- | The name of the profile object type.+deleteProfileObjectType_objectTypeName :: Lens.Lens' DeleteProfileObjectType Prelude.Text+deleteProfileObjectType_objectTypeName = Lens.lens (\DeleteProfileObjectType' {objectTypeName} -> objectTypeName) (\s@DeleteProfileObjectType' {} a -> s {objectTypeName = a} :: DeleteProfileObjectType)++instance Core.AWSRequest DeleteProfileObjectType where+  type+    AWSResponse DeleteProfileObjectType =+      DeleteProfileObjectTypeResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteProfileObjectTypeResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "Message")+      )++instance Prelude.Hashable DeleteProfileObjectType where+  hashWithSalt _salt DeleteProfileObjectType' {..} =+    _salt+      `Prelude.hashWithSalt` domainName+      `Prelude.hashWithSalt` objectTypeName++instance Prelude.NFData DeleteProfileObjectType where+  rnf DeleteProfileObjectType' {..} =+    Prelude.rnf domainName+      `Prelude.seq` Prelude.rnf objectTypeName++instance Data.ToHeaders DeleteProfileObjectType where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteProfileObjectType where+  toPath DeleteProfileObjectType' {..} =+    Prelude.mconcat+      [ "/domains/",+        Data.toBS domainName,+        "/object-types/",+        Data.toBS objectTypeName+      ]++instance Data.ToQuery DeleteProfileObjectType where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteProfileObjectTypeResponse' smart constructor.+data DeleteProfileObjectTypeResponse = DeleteProfileObjectTypeResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A message that indicates the delete request is done.+    message :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteProfileObjectTypeResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteProfileObjectTypeResponse_httpStatus' - The response's http status code.+--+-- 'message', 'deleteProfileObjectTypeResponse_message' - A message that indicates the delete request is done.+newDeleteProfileObjectTypeResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'message'+  Prelude.Text ->+  DeleteProfileObjectTypeResponse+newDeleteProfileObjectTypeResponse+  pHttpStatus_+  pMessage_ =+    DeleteProfileObjectTypeResponse'+      { httpStatus =+          pHttpStatus_,+        message = pMessage_+      }++-- | The response's http status code.+deleteProfileObjectTypeResponse_httpStatus :: Lens.Lens' DeleteProfileObjectTypeResponse Prelude.Int+deleteProfileObjectTypeResponse_httpStatus = Lens.lens (\DeleteProfileObjectTypeResponse' {httpStatus} -> httpStatus) (\s@DeleteProfileObjectTypeResponse' {} a -> s {httpStatus = a} :: DeleteProfileObjectTypeResponse)++-- | A message that indicates the delete request is done.+deleteProfileObjectTypeResponse_message :: Lens.Lens' DeleteProfileObjectTypeResponse Prelude.Text+deleteProfileObjectTypeResponse_message = Lens.lens (\DeleteProfileObjectTypeResponse' {message} -> message) (\s@DeleteProfileObjectTypeResponse' {} a -> s {message = a} :: DeleteProfileObjectTypeResponse)++instance+  Prelude.NFData+    DeleteProfileObjectTypeResponse+  where+  rnf DeleteProfileObjectTypeResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf message
+ gen/Amazonka/CustomerProfiles/DeleteWorkflow.hs view
@@ -0,0 +1,167 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.DeleteWorkflow+-- 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 workflow and all its corresponding resources. This+-- is an async process.+module Amazonka.CustomerProfiles.DeleteWorkflow+  ( -- * Creating a Request+    DeleteWorkflow (..),+    newDeleteWorkflow,++    -- * Request Lenses+    deleteWorkflow_domainName,+    deleteWorkflow_workflowId,++    -- * Destructuring the Response+    DeleteWorkflowResponse (..),+    newDeleteWorkflowResponse,++    -- * Response Lenses+    deleteWorkflowResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteWorkflow' smart constructor.+data DeleteWorkflow = DeleteWorkflow'+  { -- | The unique name of the domain.+    domainName :: Prelude.Text,+    -- | Unique identifier for the workflow.+    workflowId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteWorkflow' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'domainName', 'deleteWorkflow_domainName' - The unique name of the domain.+--+-- 'workflowId', 'deleteWorkflow_workflowId' - Unique identifier for the workflow.+newDeleteWorkflow ::+  -- | 'domainName'+  Prelude.Text ->+  -- | 'workflowId'+  Prelude.Text ->+  DeleteWorkflow+newDeleteWorkflow pDomainName_ pWorkflowId_ =+  DeleteWorkflow'+    { domainName = pDomainName_,+      workflowId = pWorkflowId_+    }++-- | The unique name of the domain.+deleteWorkflow_domainName :: Lens.Lens' DeleteWorkflow Prelude.Text+deleteWorkflow_domainName = Lens.lens (\DeleteWorkflow' {domainName} -> domainName) (\s@DeleteWorkflow' {} a -> s {domainName = a} :: DeleteWorkflow)++-- | Unique identifier for the workflow.+deleteWorkflow_workflowId :: Lens.Lens' DeleteWorkflow Prelude.Text+deleteWorkflow_workflowId = Lens.lens (\DeleteWorkflow' {workflowId} -> workflowId) (\s@DeleteWorkflow' {} a -> s {workflowId = a} :: DeleteWorkflow)++instance Core.AWSRequest DeleteWorkflow where+  type+    AWSResponse DeleteWorkflow =+      DeleteWorkflowResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeleteWorkflowResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteWorkflow where+  hashWithSalt _salt DeleteWorkflow' {..} =+    _salt+      `Prelude.hashWithSalt` domainName+      `Prelude.hashWithSalt` workflowId++instance Prelude.NFData DeleteWorkflow where+  rnf DeleteWorkflow' {..} =+    Prelude.rnf domainName+      `Prelude.seq` Prelude.rnf workflowId++instance Data.ToHeaders DeleteWorkflow where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteWorkflow where+  toPath DeleteWorkflow' {..} =+    Prelude.mconcat+      [ "/domains/",+        Data.toBS domainName,+        "/workflows/",+        Data.toBS workflowId+      ]++instance Data.ToQuery DeleteWorkflow where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteWorkflowResponse' smart constructor.+data DeleteWorkflowResponse = DeleteWorkflowResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteWorkflowResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteWorkflowResponse_httpStatus' - The response's http status code.+newDeleteWorkflowResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteWorkflowResponse+newDeleteWorkflowResponse pHttpStatus_ =+  DeleteWorkflowResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+deleteWorkflowResponse_httpStatus :: Lens.Lens' DeleteWorkflowResponse Prelude.Int+deleteWorkflowResponse_httpStatus = Lens.lens (\DeleteWorkflowResponse' {httpStatus} -> httpStatus) (\s@DeleteWorkflowResponse' {} a -> s {httpStatus = a} :: DeleteWorkflowResponse)++instance Prelude.NFData DeleteWorkflowResponse where+  rnf DeleteWorkflowResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/CustomerProfiles/GetAutoMergingPreview.hs view
@@ -0,0 +1,290 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.GetAutoMergingPreview+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Tests the auto-merging settings of your Identity Resolution Job without+-- merging your data. It randomly selects a sample of matching groups from+-- the existing matching results, and applies the automerging settings that+-- you provided. You can then view the number of profiles in the sample,+-- the number of matches, and the number of profiles identified to be+-- merged. This enables you to evaluate the accuracy of the attributes in+-- your matching list.+--+-- You can\'t view which profiles are matched and would be merged.+--+-- We strongly recommend you use this API to do a dry run of the+-- automerging process before running the Identity Resolution Job. Include+-- __at least__ two matching attributes. If your matching list includes too+-- few attributes (such as only @FirstName@ or only @LastName@), there may+-- be a large number of matches. This increases the chances of erroneous+-- merges.+module Amazonka.CustomerProfiles.GetAutoMergingPreview+  ( -- * Creating a Request+    GetAutoMergingPreview (..),+    newGetAutoMergingPreview,++    -- * Request Lenses+    getAutoMergingPreview_minAllowedConfidenceScoreForMerging,+    getAutoMergingPreview_domainName,+    getAutoMergingPreview_consolidation,+    getAutoMergingPreview_conflictResolution,++    -- * Destructuring the Response+    GetAutoMergingPreviewResponse (..),+    newGetAutoMergingPreviewResponse,++    -- * Response Lenses+    getAutoMergingPreviewResponse_numberOfMatchesInSample,+    getAutoMergingPreviewResponse_numberOfProfilesInSample,+    getAutoMergingPreviewResponse_numberOfProfilesWillBeMerged,+    getAutoMergingPreviewResponse_httpStatus,+    getAutoMergingPreviewResponse_domainName,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetAutoMergingPreview' smart constructor.+data GetAutoMergingPreview = GetAutoMergingPreview'+  { -- | Minimum confidence score required for profiles within a matching group+    -- to be merged during the auto-merge process.+    minAllowedConfidenceScoreForMerging :: Prelude.Maybe Prelude.Double,+    -- | The unique name of the domain.+    domainName :: Prelude.Text,+    -- | A list of matching attributes that represent matching criteria.+    consolidation :: Consolidation,+    -- | How the auto-merging process should resolve conflicts between different+    -- profiles.+    conflictResolution :: ConflictResolution+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetAutoMergingPreview' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'minAllowedConfidenceScoreForMerging', 'getAutoMergingPreview_minAllowedConfidenceScoreForMerging' - Minimum confidence score required for profiles within a matching group+-- to be merged during the auto-merge process.+--+-- 'domainName', 'getAutoMergingPreview_domainName' - The unique name of the domain.+--+-- 'consolidation', 'getAutoMergingPreview_consolidation' - A list of matching attributes that represent matching criteria.+--+-- 'conflictResolution', 'getAutoMergingPreview_conflictResolution' - How the auto-merging process should resolve conflicts between different+-- profiles.+newGetAutoMergingPreview ::+  -- | 'domainName'+  Prelude.Text ->+  -- | 'consolidation'+  Consolidation ->+  -- | 'conflictResolution'+  ConflictResolution ->+  GetAutoMergingPreview+newGetAutoMergingPreview+  pDomainName_+  pConsolidation_+  pConflictResolution_ =+    GetAutoMergingPreview'+      { minAllowedConfidenceScoreForMerging =+          Prelude.Nothing,+        domainName = pDomainName_,+        consolidation = pConsolidation_,+        conflictResolution = pConflictResolution_+      }++-- | Minimum confidence score required for profiles within a matching group+-- to be merged during the auto-merge process.+getAutoMergingPreview_minAllowedConfidenceScoreForMerging :: Lens.Lens' GetAutoMergingPreview (Prelude.Maybe Prelude.Double)+getAutoMergingPreview_minAllowedConfidenceScoreForMerging = Lens.lens (\GetAutoMergingPreview' {minAllowedConfidenceScoreForMerging} -> minAllowedConfidenceScoreForMerging) (\s@GetAutoMergingPreview' {} a -> s {minAllowedConfidenceScoreForMerging = a} :: GetAutoMergingPreview)++-- | The unique name of the domain.+getAutoMergingPreview_domainName :: Lens.Lens' GetAutoMergingPreview Prelude.Text+getAutoMergingPreview_domainName = Lens.lens (\GetAutoMergingPreview' {domainName} -> domainName) (\s@GetAutoMergingPreview' {} a -> s {domainName = a} :: GetAutoMergingPreview)++-- | A list of matching attributes that represent matching criteria.+getAutoMergingPreview_consolidation :: Lens.Lens' GetAutoMergingPreview Consolidation+getAutoMergingPreview_consolidation = Lens.lens (\GetAutoMergingPreview' {consolidation} -> consolidation) (\s@GetAutoMergingPreview' {} a -> s {consolidation = a} :: GetAutoMergingPreview)++-- | How the auto-merging process should resolve conflicts between different+-- profiles.+getAutoMergingPreview_conflictResolution :: Lens.Lens' GetAutoMergingPreview ConflictResolution+getAutoMergingPreview_conflictResolution = Lens.lens (\GetAutoMergingPreview' {conflictResolution} -> conflictResolution) (\s@GetAutoMergingPreview' {} a -> s {conflictResolution = a} :: GetAutoMergingPreview)++instance Core.AWSRequest GetAutoMergingPreview where+  type+    AWSResponse GetAutoMergingPreview =+      GetAutoMergingPreviewResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetAutoMergingPreviewResponse'+            Prelude.<$> (x Data..?> "NumberOfMatchesInSample")+            Prelude.<*> (x Data..?> "NumberOfProfilesInSample")+            Prelude.<*> (x Data..?> "NumberOfProfilesWillBeMerged")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "DomainName")+      )++instance Prelude.Hashable GetAutoMergingPreview where+  hashWithSalt _salt GetAutoMergingPreview' {..} =+    _salt+      `Prelude.hashWithSalt` minAllowedConfidenceScoreForMerging+      `Prelude.hashWithSalt` domainName+      `Prelude.hashWithSalt` consolidation+      `Prelude.hashWithSalt` conflictResolution++instance Prelude.NFData GetAutoMergingPreview where+  rnf GetAutoMergingPreview' {..} =+    Prelude.rnf minAllowedConfidenceScoreForMerging+      `Prelude.seq` Prelude.rnf domainName+      `Prelude.seq` Prelude.rnf consolidation+      `Prelude.seq` Prelude.rnf conflictResolution++instance Data.ToHeaders GetAutoMergingPreview where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GetAutoMergingPreview where+  toJSON GetAutoMergingPreview' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("MinAllowedConfidenceScoreForMerging" Data..=)+              Prelude.<$> minAllowedConfidenceScoreForMerging,+            Prelude.Just ("Consolidation" Data..= consolidation),+            Prelude.Just+              ("ConflictResolution" Data..= conflictResolution)+          ]+      )++instance Data.ToPath GetAutoMergingPreview where+  toPath GetAutoMergingPreview' {..} =+    Prelude.mconcat+      [ "/domains/",+        Data.toBS domainName,+        "/identity-resolution-jobs/auto-merging-preview"+      ]++instance Data.ToQuery GetAutoMergingPreview where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetAutoMergingPreviewResponse' smart constructor.+data GetAutoMergingPreviewResponse = GetAutoMergingPreviewResponse'+  { -- | The number of match groups in the domain that have been reviewed in this+    -- preview dry run.+    numberOfMatchesInSample :: Prelude.Maybe Prelude.Integer,+    -- | The number of profiles found in this preview dry run.+    numberOfProfilesInSample :: Prelude.Maybe Prelude.Integer,+    -- | The number of profiles that would be merged if this wasn\'t a preview+    -- dry run.+    numberOfProfilesWillBeMerged :: Prelude.Maybe Prelude.Integer,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The unique name of the domain.+    domainName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetAutoMergingPreviewResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'numberOfMatchesInSample', 'getAutoMergingPreviewResponse_numberOfMatchesInSample' - The number of match groups in the domain that have been reviewed in this+-- preview dry run.+--+-- 'numberOfProfilesInSample', 'getAutoMergingPreviewResponse_numberOfProfilesInSample' - The number of profiles found in this preview dry run.+--+-- 'numberOfProfilesWillBeMerged', 'getAutoMergingPreviewResponse_numberOfProfilesWillBeMerged' - The number of profiles that would be merged if this wasn\'t a preview+-- dry run.+--+-- 'httpStatus', 'getAutoMergingPreviewResponse_httpStatus' - The response's http status code.+--+-- 'domainName', 'getAutoMergingPreviewResponse_domainName' - The unique name of the domain.+newGetAutoMergingPreviewResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'domainName'+  Prelude.Text ->+  GetAutoMergingPreviewResponse+newGetAutoMergingPreviewResponse+  pHttpStatus_+  pDomainName_ =+    GetAutoMergingPreviewResponse'+      { numberOfMatchesInSample =+          Prelude.Nothing,+        numberOfProfilesInSample = Prelude.Nothing,+        numberOfProfilesWillBeMerged =+          Prelude.Nothing,+        httpStatus = pHttpStatus_,+        domainName = pDomainName_+      }++-- | The number of match groups in the domain that have been reviewed in this+-- preview dry run.+getAutoMergingPreviewResponse_numberOfMatchesInSample :: Lens.Lens' GetAutoMergingPreviewResponse (Prelude.Maybe Prelude.Integer)+getAutoMergingPreviewResponse_numberOfMatchesInSample = Lens.lens (\GetAutoMergingPreviewResponse' {numberOfMatchesInSample} -> numberOfMatchesInSample) (\s@GetAutoMergingPreviewResponse' {} a -> s {numberOfMatchesInSample = a} :: GetAutoMergingPreviewResponse)++-- | The number of profiles found in this preview dry run.+getAutoMergingPreviewResponse_numberOfProfilesInSample :: Lens.Lens' GetAutoMergingPreviewResponse (Prelude.Maybe Prelude.Integer)+getAutoMergingPreviewResponse_numberOfProfilesInSample = Lens.lens (\GetAutoMergingPreviewResponse' {numberOfProfilesInSample} -> numberOfProfilesInSample) (\s@GetAutoMergingPreviewResponse' {} a -> s {numberOfProfilesInSample = a} :: GetAutoMergingPreviewResponse)++-- | The number of profiles that would be merged if this wasn\'t a preview+-- dry run.+getAutoMergingPreviewResponse_numberOfProfilesWillBeMerged :: Lens.Lens' GetAutoMergingPreviewResponse (Prelude.Maybe Prelude.Integer)+getAutoMergingPreviewResponse_numberOfProfilesWillBeMerged = Lens.lens (\GetAutoMergingPreviewResponse' {numberOfProfilesWillBeMerged} -> numberOfProfilesWillBeMerged) (\s@GetAutoMergingPreviewResponse' {} a -> s {numberOfProfilesWillBeMerged = a} :: GetAutoMergingPreviewResponse)++-- | The response's http status code.+getAutoMergingPreviewResponse_httpStatus :: Lens.Lens' GetAutoMergingPreviewResponse Prelude.Int+getAutoMergingPreviewResponse_httpStatus = Lens.lens (\GetAutoMergingPreviewResponse' {httpStatus} -> httpStatus) (\s@GetAutoMergingPreviewResponse' {} a -> s {httpStatus = a} :: GetAutoMergingPreviewResponse)++-- | The unique name of the domain.+getAutoMergingPreviewResponse_domainName :: Lens.Lens' GetAutoMergingPreviewResponse Prelude.Text+getAutoMergingPreviewResponse_domainName = Lens.lens (\GetAutoMergingPreviewResponse' {domainName} -> domainName) (\s@GetAutoMergingPreviewResponse' {} a -> s {domainName = a} :: GetAutoMergingPreviewResponse)++instance Prelude.NFData GetAutoMergingPreviewResponse where+  rnf GetAutoMergingPreviewResponse' {..} =+    Prelude.rnf numberOfMatchesInSample+      `Prelude.seq` Prelude.rnf numberOfProfilesInSample+      `Prelude.seq` Prelude.rnf numberOfProfilesWillBeMerged+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf domainName
+ gen/Amazonka/CustomerProfiles/GetDomain.hs view
@@ -0,0 +1,301 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.GetDomain+-- 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 information about a specific domain.+module Amazonka.CustomerProfiles.GetDomain+  ( -- * Creating a Request+    GetDomain (..),+    newGetDomain,++    -- * Request Lenses+    getDomain_domainName,++    -- * Destructuring the Response+    GetDomainResponse (..),+    newGetDomainResponse,++    -- * Response Lenses+    getDomainResponse_deadLetterQueueUrl,+    getDomainResponse_defaultEncryptionKey,+    getDomainResponse_defaultExpirationDays,+    getDomainResponse_matching,+    getDomainResponse_stats,+    getDomainResponse_tags,+    getDomainResponse_httpStatus,+    getDomainResponse_domainName,+    getDomainResponse_createdAt,+    getDomainResponse_lastUpdatedAt,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetDomain' smart constructor.+data GetDomain = GetDomain'+  { -- | The unique name of the domain.+    domainName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetDomain' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'domainName', 'getDomain_domainName' - The unique name of the domain.+newGetDomain ::+  -- | 'domainName'+  Prelude.Text ->+  GetDomain+newGetDomain pDomainName_ =+  GetDomain' {domainName = pDomainName_}++-- | The unique name of the domain.+getDomain_domainName :: Lens.Lens' GetDomain Prelude.Text+getDomain_domainName = Lens.lens (\GetDomain' {domainName} -> domainName) (\s@GetDomain' {} a -> s {domainName = a} :: GetDomain)++instance Core.AWSRequest GetDomain where+  type AWSResponse GetDomain = GetDomainResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetDomainResponse'+            Prelude.<$> (x Data..?> "DeadLetterQueueUrl")+            Prelude.<*> (x Data..?> "DefaultEncryptionKey")+            Prelude.<*> (x Data..?> "DefaultExpirationDays")+            Prelude.<*> (x Data..?> "Matching")+            Prelude.<*> (x Data..?> "Stats")+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "DomainName")+            Prelude.<*> (x Data..:> "CreatedAt")+            Prelude.<*> (x Data..:> "LastUpdatedAt")+      )++instance Prelude.Hashable GetDomain where+  hashWithSalt _salt GetDomain' {..} =+    _salt `Prelude.hashWithSalt` domainName++instance Prelude.NFData GetDomain where+  rnf GetDomain' {..} = Prelude.rnf domainName++instance Data.ToHeaders GetDomain where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetDomain where+  toPath GetDomain' {..} =+    Prelude.mconcat ["/domains/", Data.toBS domainName]++instance Data.ToQuery GetDomain where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetDomainResponse' smart constructor.+data GetDomainResponse = GetDomainResponse'+  { -- | The URL of the SQS dead letter queue, which is used for reporting errors+    -- associated with ingesting data from third party applications.+    deadLetterQueueUrl :: Prelude.Maybe Prelude.Text,+    -- | The default encryption key, which is an AWS managed key, is used when no+    -- specific type of encryption key is specified. It is used to encrypt all+    -- data before it is placed in permanent or semi-permanent storage.+    defaultEncryptionKey :: Prelude.Maybe Prelude.Text,+    -- | The default number of days until the data within the domain expires.+    defaultExpirationDays :: Prelude.Maybe Prelude.Natural,+    -- | The process of matching duplicate profiles. If @Matching@ = @true@,+    -- Amazon Connect Customer Profiles starts a weekly batch process called+    -- Identity Resolution Job. If you do not specify a date and time for+    -- Identity Resolution Job to run, by default it runs every Saturday at+    -- 12AM UTC to detect duplicate profiles in your domains.+    --+    -- After the Identity Resolution Job completes, use the+    -- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_GetMatches.html GetMatches>+    -- API to return and review the results. Or, if you have configured+    -- @ExportingConfig@ in the @MatchingRequest@, you can download the results+    -- from S3.+    matching :: Prelude.Maybe MatchingResponse,+    -- | Usage-specific statistics about the domain.+    stats :: Prelude.Maybe DomainStats,+    -- | The tags used to organize, track, or control access for this resource.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The unique name of the domain.+    domainName :: Prelude.Text,+    -- | The timestamp of when the domain was created.+    createdAt :: Data.POSIX,+    -- | The timestamp of when the domain was most recently edited.+    lastUpdatedAt :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetDomainResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'deadLetterQueueUrl', 'getDomainResponse_deadLetterQueueUrl' - The URL of the SQS dead letter queue, which is used for reporting errors+-- associated with ingesting data from third party applications.+--+-- 'defaultEncryptionKey', 'getDomainResponse_defaultEncryptionKey' - The default encryption key, which is an AWS managed key, is used when no+-- specific type of encryption key is specified. It is used to encrypt all+-- data before it is placed in permanent or semi-permanent storage.+--+-- 'defaultExpirationDays', 'getDomainResponse_defaultExpirationDays' - The default number of days until the data within the domain expires.+--+-- 'matching', 'getDomainResponse_matching' - The process of matching duplicate profiles. If @Matching@ = @true@,+-- Amazon Connect Customer Profiles starts a weekly batch process called+-- Identity Resolution Job. If you do not specify a date and time for+-- Identity Resolution Job to run, by default it runs every Saturday at+-- 12AM UTC to detect duplicate profiles in your domains.+--+-- After the Identity Resolution Job completes, use the+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_GetMatches.html GetMatches>+-- API to return and review the results. Or, if you have configured+-- @ExportingConfig@ in the @MatchingRequest@, you can download the results+-- from S3.+--+-- 'stats', 'getDomainResponse_stats' - Usage-specific statistics about the domain.+--+-- 'tags', 'getDomainResponse_tags' - The tags used to organize, track, or control access for this resource.+--+-- 'httpStatus', 'getDomainResponse_httpStatus' - The response's http status code.+--+-- 'domainName', 'getDomainResponse_domainName' - The unique name of the domain.+--+-- 'createdAt', 'getDomainResponse_createdAt' - The timestamp of when the domain was created.+--+-- 'lastUpdatedAt', 'getDomainResponse_lastUpdatedAt' - The timestamp of when the domain was most recently edited.+newGetDomainResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'domainName'+  Prelude.Text ->+  -- | 'createdAt'+  Prelude.UTCTime ->+  -- | 'lastUpdatedAt'+  Prelude.UTCTime ->+  GetDomainResponse+newGetDomainResponse+  pHttpStatus_+  pDomainName_+  pCreatedAt_+  pLastUpdatedAt_ =+    GetDomainResponse'+      { deadLetterQueueUrl =+          Prelude.Nothing,+        defaultEncryptionKey = Prelude.Nothing,+        defaultExpirationDays = Prelude.Nothing,+        matching = Prelude.Nothing,+        stats = Prelude.Nothing,+        tags = Prelude.Nothing,+        httpStatus = pHttpStatus_,+        domainName = pDomainName_,+        createdAt = Data._Time Lens.# pCreatedAt_,+        lastUpdatedAt = Data._Time Lens.# pLastUpdatedAt_+      }++-- | The URL of the SQS dead letter queue, which is used for reporting errors+-- associated with ingesting data from third party applications.+getDomainResponse_deadLetterQueueUrl :: Lens.Lens' GetDomainResponse (Prelude.Maybe Prelude.Text)+getDomainResponse_deadLetterQueueUrl = Lens.lens (\GetDomainResponse' {deadLetterQueueUrl} -> deadLetterQueueUrl) (\s@GetDomainResponse' {} a -> s {deadLetterQueueUrl = a} :: GetDomainResponse)++-- | The default encryption key, which is an AWS managed key, is used when no+-- specific type of encryption key is specified. It is used to encrypt all+-- data before it is placed in permanent or semi-permanent storage.+getDomainResponse_defaultEncryptionKey :: Lens.Lens' GetDomainResponse (Prelude.Maybe Prelude.Text)+getDomainResponse_defaultEncryptionKey = Lens.lens (\GetDomainResponse' {defaultEncryptionKey} -> defaultEncryptionKey) (\s@GetDomainResponse' {} a -> s {defaultEncryptionKey = a} :: GetDomainResponse)++-- | The default number of days until the data within the domain expires.+getDomainResponse_defaultExpirationDays :: Lens.Lens' GetDomainResponse (Prelude.Maybe Prelude.Natural)+getDomainResponse_defaultExpirationDays = Lens.lens (\GetDomainResponse' {defaultExpirationDays} -> defaultExpirationDays) (\s@GetDomainResponse' {} a -> s {defaultExpirationDays = a} :: GetDomainResponse)++-- | The process of matching duplicate profiles. If @Matching@ = @true@,+-- Amazon Connect Customer Profiles starts a weekly batch process called+-- Identity Resolution Job. If you do not specify a date and time for+-- Identity Resolution Job to run, by default it runs every Saturday at+-- 12AM UTC to detect duplicate profiles in your domains.+--+-- After the Identity Resolution Job completes, use the+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_GetMatches.html GetMatches>+-- API to return and review the results. Or, if you have configured+-- @ExportingConfig@ in the @MatchingRequest@, you can download the results+-- from S3.+getDomainResponse_matching :: Lens.Lens' GetDomainResponse (Prelude.Maybe MatchingResponse)+getDomainResponse_matching = Lens.lens (\GetDomainResponse' {matching} -> matching) (\s@GetDomainResponse' {} a -> s {matching = a} :: GetDomainResponse)++-- | Usage-specific statistics about the domain.+getDomainResponse_stats :: Lens.Lens' GetDomainResponse (Prelude.Maybe DomainStats)+getDomainResponse_stats = Lens.lens (\GetDomainResponse' {stats} -> stats) (\s@GetDomainResponse' {} a -> s {stats = a} :: GetDomainResponse)++-- | The tags used to organize, track, or control access for this resource.+getDomainResponse_tags :: Lens.Lens' GetDomainResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+getDomainResponse_tags = Lens.lens (\GetDomainResponse' {tags} -> tags) (\s@GetDomainResponse' {} a -> s {tags = a} :: GetDomainResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+getDomainResponse_httpStatus :: Lens.Lens' GetDomainResponse Prelude.Int+getDomainResponse_httpStatus = Lens.lens (\GetDomainResponse' {httpStatus} -> httpStatus) (\s@GetDomainResponse' {} a -> s {httpStatus = a} :: GetDomainResponse)++-- | The unique name of the domain.+getDomainResponse_domainName :: Lens.Lens' GetDomainResponse Prelude.Text+getDomainResponse_domainName = Lens.lens (\GetDomainResponse' {domainName} -> domainName) (\s@GetDomainResponse' {} a -> s {domainName = a} :: GetDomainResponse)++-- | The timestamp of when the domain was created.+getDomainResponse_createdAt :: Lens.Lens' GetDomainResponse Prelude.UTCTime+getDomainResponse_createdAt = Lens.lens (\GetDomainResponse' {createdAt} -> createdAt) (\s@GetDomainResponse' {} a -> s {createdAt = a} :: GetDomainResponse) Prelude.. Data._Time++-- | The timestamp of when the domain was most recently edited.+getDomainResponse_lastUpdatedAt :: Lens.Lens' GetDomainResponse Prelude.UTCTime+getDomainResponse_lastUpdatedAt = Lens.lens (\GetDomainResponse' {lastUpdatedAt} -> lastUpdatedAt) (\s@GetDomainResponse' {} a -> s {lastUpdatedAt = a} :: GetDomainResponse) Prelude.. Data._Time++instance Prelude.NFData GetDomainResponse where+  rnf GetDomainResponse' {..} =+    Prelude.rnf deadLetterQueueUrl+      `Prelude.seq` Prelude.rnf defaultEncryptionKey+      `Prelude.seq` Prelude.rnf defaultExpirationDays+      `Prelude.seq` Prelude.rnf matching+      `Prelude.seq` Prelude.rnf stats+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf domainName+      `Prelude.seq` Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf lastUpdatedAt
+ gen/Amazonka/CustomerProfiles/GetIdentityResolutionJob.hs view
@@ -0,0 +1,385 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.GetIdentityResolutionJob+-- 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 information about an Identity Resolution Job in a specific+-- domain.+--+-- Identity Resolution Jobs are set up using the Amazon Connect admin+-- console. For more information, see+-- <https://docs.aws.amazon.com/connect/latest/adminguide/use-identity-resolution.html Use Identity Resolution to consolidate similar profiles>.+module Amazonka.CustomerProfiles.GetIdentityResolutionJob+  ( -- * Creating a Request+    GetIdentityResolutionJob (..),+    newGetIdentityResolutionJob,++    -- * Request Lenses+    getIdentityResolutionJob_domainName,+    getIdentityResolutionJob_jobId,++    -- * Destructuring the Response+    GetIdentityResolutionJobResponse (..),+    newGetIdentityResolutionJobResponse,++    -- * Response Lenses+    getIdentityResolutionJobResponse_autoMerging,+    getIdentityResolutionJobResponse_domainName,+    getIdentityResolutionJobResponse_exportingLocation,+    getIdentityResolutionJobResponse_jobEndTime,+    getIdentityResolutionJobResponse_jobExpirationTime,+    getIdentityResolutionJobResponse_jobId,+    getIdentityResolutionJobResponse_jobStartTime,+    getIdentityResolutionJobResponse_jobStats,+    getIdentityResolutionJobResponse_lastUpdatedAt,+    getIdentityResolutionJobResponse_message,+    getIdentityResolutionJobResponse_status,+    getIdentityResolutionJobResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetIdentityResolutionJob' smart constructor.+data GetIdentityResolutionJob = GetIdentityResolutionJob'+  { -- | The unique name of the domain.+    domainName :: Prelude.Text,+    -- | The unique identifier of the Identity Resolution Job.+    jobId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetIdentityResolutionJob' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'domainName', 'getIdentityResolutionJob_domainName' - The unique name of the domain.+--+-- 'jobId', 'getIdentityResolutionJob_jobId' - The unique identifier of the Identity Resolution Job.+newGetIdentityResolutionJob ::+  -- | 'domainName'+  Prelude.Text ->+  -- | 'jobId'+  Prelude.Text ->+  GetIdentityResolutionJob+newGetIdentityResolutionJob pDomainName_ pJobId_ =+  GetIdentityResolutionJob'+    { domainName =+        pDomainName_,+      jobId = pJobId_+    }++-- | The unique name of the domain.+getIdentityResolutionJob_domainName :: Lens.Lens' GetIdentityResolutionJob Prelude.Text+getIdentityResolutionJob_domainName = Lens.lens (\GetIdentityResolutionJob' {domainName} -> domainName) (\s@GetIdentityResolutionJob' {} a -> s {domainName = a} :: GetIdentityResolutionJob)++-- | The unique identifier of the Identity Resolution Job.+getIdentityResolutionJob_jobId :: Lens.Lens' GetIdentityResolutionJob Prelude.Text+getIdentityResolutionJob_jobId = Lens.lens (\GetIdentityResolutionJob' {jobId} -> jobId) (\s@GetIdentityResolutionJob' {} a -> s {jobId = a} :: GetIdentityResolutionJob)++instance Core.AWSRequest GetIdentityResolutionJob where+  type+    AWSResponse GetIdentityResolutionJob =+      GetIdentityResolutionJobResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetIdentityResolutionJobResponse'+            Prelude.<$> (x Data..?> "AutoMerging")+            Prelude.<*> (x Data..?> "DomainName")+            Prelude.<*> (x Data..?> "ExportingLocation")+            Prelude.<*> (x Data..?> "JobEndTime")+            Prelude.<*> (x Data..?> "JobExpirationTime")+            Prelude.<*> (x Data..?> "JobId")+            Prelude.<*> (x Data..?> "JobStartTime")+            Prelude.<*> (x Data..?> "JobStats")+            Prelude.<*> (x Data..?> "LastUpdatedAt")+            Prelude.<*> (x Data..?> "Message")+            Prelude.<*> (x Data..?> "Status")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetIdentityResolutionJob where+  hashWithSalt _salt GetIdentityResolutionJob' {..} =+    _salt+      `Prelude.hashWithSalt` domainName+      `Prelude.hashWithSalt` jobId++instance Prelude.NFData GetIdentityResolutionJob where+  rnf GetIdentityResolutionJob' {..} =+    Prelude.rnf domainName+      `Prelude.seq` Prelude.rnf jobId++instance Data.ToHeaders GetIdentityResolutionJob where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetIdentityResolutionJob where+  toPath GetIdentityResolutionJob' {..} =+    Prelude.mconcat+      [ "/domains/",+        Data.toBS domainName,+        "/identity-resolution-jobs/",+        Data.toBS jobId+      ]++instance Data.ToQuery GetIdentityResolutionJob where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetIdentityResolutionJobResponse' smart constructor.+data GetIdentityResolutionJobResponse = GetIdentityResolutionJobResponse'+  { -- | Configuration settings for how to perform the auto-merging of profiles.+    autoMerging :: Prelude.Maybe AutoMerging,+    -- | The unique name of the domain.+    domainName :: Prelude.Maybe Prelude.Text,+    -- | The S3 location where the Identity Resolution Job writes result files.+    exportingLocation :: Prelude.Maybe ExportingLocation,+    -- | The timestamp of when the Identity Resolution Job was completed.+    jobEndTime :: Prelude.Maybe Data.POSIX,+    -- | The timestamp of when the Identity Resolution Job will expire.+    jobExpirationTime :: Prelude.Maybe Data.POSIX,+    -- | The unique identifier of the Identity Resolution Job.+    jobId :: Prelude.Maybe Prelude.Text,+    -- | The timestamp of when the Identity Resolution Job was started or will be+    -- started.+    jobStartTime :: Prelude.Maybe Data.POSIX,+    -- | Statistics about the Identity Resolution Job.+    jobStats :: Prelude.Maybe JobStats,+    -- | The timestamp of when the Identity Resolution Job was most recently+    -- edited.+    lastUpdatedAt :: Prelude.Maybe Data.POSIX,+    -- | The error messages that are generated when the Identity Resolution Job+    -- runs.+    message :: Prelude.Maybe Prelude.Text,+    -- | The status of the Identity Resolution Job.+    --+    -- -   @PENDING@: The Identity Resolution Job is scheduled but has not+    --     started yet. If you turn off the Identity Resolution feature in your+    --     domain, jobs in the @PENDING@ state are deleted.+    --+    -- -   @PREPROCESSING@: The Identity Resolution Job is loading your data.+    --+    -- -   @FIND_MATCHING@: The Identity Resolution Job is using the machine+    --     learning model to identify profiles that belong to the same matching+    --     group.+    --+    -- -   @MERGING@: The Identity Resolution Job is merging duplicate+    --     profiles.+    --+    -- -   @COMPLETED@: The Identity Resolution Job completed successfully.+    --+    -- -   @PARTIAL_SUCCESS@: There\'s a system error and not all of the data+    --     is merged. The Identity Resolution Job writes a message indicating+    --     the source of the problem.+    --+    -- -   @FAILED@: The Identity Resolution Job did not merge any data. It+    --     writes a message indicating the source of the problem.+    status :: Prelude.Maybe IdentityResolutionJobStatus,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetIdentityResolutionJobResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'autoMerging', 'getIdentityResolutionJobResponse_autoMerging' - Configuration settings for how to perform the auto-merging of profiles.+--+-- 'domainName', 'getIdentityResolutionJobResponse_domainName' - The unique name of the domain.+--+-- 'exportingLocation', 'getIdentityResolutionJobResponse_exportingLocation' - The S3 location where the Identity Resolution Job writes result files.+--+-- 'jobEndTime', 'getIdentityResolutionJobResponse_jobEndTime' - The timestamp of when the Identity Resolution Job was completed.+--+-- 'jobExpirationTime', 'getIdentityResolutionJobResponse_jobExpirationTime' - The timestamp of when the Identity Resolution Job will expire.+--+-- 'jobId', 'getIdentityResolutionJobResponse_jobId' - The unique identifier of the Identity Resolution Job.+--+-- 'jobStartTime', 'getIdentityResolutionJobResponse_jobStartTime' - The timestamp of when the Identity Resolution Job was started or will be+-- started.+--+-- 'jobStats', 'getIdentityResolutionJobResponse_jobStats' - Statistics about the Identity Resolution Job.+--+-- 'lastUpdatedAt', 'getIdentityResolutionJobResponse_lastUpdatedAt' - The timestamp of when the Identity Resolution Job was most recently+-- edited.+--+-- 'message', 'getIdentityResolutionJobResponse_message' - The error messages that are generated when the Identity Resolution Job+-- runs.+--+-- 'status', 'getIdentityResolutionJobResponse_status' - The status of the Identity Resolution Job.+--+-- -   @PENDING@: The Identity Resolution Job is scheduled but has not+--     started yet. If you turn off the Identity Resolution feature in your+--     domain, jobs in the @PENDING@ state are deleted.+--+-- -   @PREPROCESSING@: The Identity Resolution Job is loading your data.+--+-- -   @FIND_MATCHING@: The Identity Resolution Job is using the machine+--     learning model to identify profiles that belong to the same matching+--     group.+--+-- -   @MERGING@: The Identity Resolution Job is merging duplicate+--     profiles.+--+-- -   @COMPLETED@: The Identity Resolution Job completed successfully.+--+-- -   @PARTIAL_SUCCESS@: There\'s a system error and not all of the data+--     is merged. The Identity Resolution Job writes a message indicating+--     the source of the problem.+--+-- -   @FAILED@: The Identity Resolution Job did not merge any data. It+--     writes a message indicating the source of the problem.+--+-- 'httpStatus', 'getIdentityResolutionJobResponse_httpStatus' - The response's http status code.+newGetIdentityResolutionJobResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetIdentityResolutionJobResponse+newGetIdentityResolutionJobResponse pHttpStatus_ =+  GetIdentityResolutionJobResponse'+    { autoMerging =+        Prelude.Nothing,+      domainName = Prelude.Nothing,+      exportingLocation = Prelude.Nothing,+      jobEndTime = Prelude.Nothing,+      jobExpirationTime = Prelude.Nothing,+      jobId = Prelude.Nothing,+      jobStartTime = Prelude.Nothing,+      jobStats = Prelude.Nothing,+      lastUpdatedAt = Prelude.Nothing,+      message = Prelude.Nothing,+      status = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Configuration settings for how to perform the auto-merging of profiles.+getIdentityResolutionJobResponse_autoMerging :: Lens.Lens' GetIdentityResolutionJobResponse (Prelude.Maybe AutoMerging)+getIdentityResolutionJobResponse_autoMerging = Lens.lens (\GetIdentityResolutionJobResponse' {autoMerging} -> autoMerging) (\s@GetIdentityResolutionJobResponse' {} a -> s {autoMerging = a} :: GetIdentityResolutionJobResponse)++-- | The unique name of the domain.+getIdentityResolutionJobResponse_domainName :: Lens.Lens' GetIdentityResolutionJobResponse (Prelude.Maybe Prelude.Text)+getIdentityResolutionJobResponse_domainName = Lens.lens (\GetIdentityResolutionJobResponse' {domainName} -> domainName) (\s@GetIdentityResolutionJobResponse' {} a -> s {domainName = a} :: GetIdentityResolutionJobResponse)++-- | The S3 location where the Identity Resolution Job writes result files.+getIdentityResolutionJobResponse_exportingLocation :: Lens.Lens' GetIdentityResolutionJobResponse (Prelude.Maybe ExportingLocation)+getIdentityResolutionJobResponse_exportingLocation = Lens.lens (\GetIdentityResolutionJobResponse' {exportingLocation} -> exportingLocation) (\s@GetIdentityResolutionJobResponse' {} a -> s {exportingLocation = a} :: GetIdentityResolutionJobResponse)++-- | The timestamp of when the Identity Resolution Job was completed.+getIdentityResolutionJobResponse_jobEndTime :: Lens.Lens' GetIdentityResolutionJobResponse (Prelude.Maybe Prelude.UTCTime)+getIdentityResolutionJobResponse_jobEndTime = Lens.lens (\GetIdentityResolutionJobResponse' {jobEndTime} -> jobEndTime) (\s@GetIdentityResolutionJobResponse' {} a -> s {jobEndTime = a} :: GetIdentityResolutionJobResponse) Prelude.. Lens.mapping Data._Time++-- | The timestamp of when the Identity Resolution Job will expire.+getIdentityResolutionJobResponse_jobExpirationTime :: Lens.Lens' GetIdentityResolutionJobResponse (Prelude.Maybe Prelude.UTCTime)+getIdentityResolutionJobResponse_jobExpirationTime = Lens.lens (\GetIdentityResolutionJobResponse' {jobExpirationTime} -> jobExpirationTime) (\s@GetIdentityResolutionJobResponse' {} a -> s {jobExpirationTime = a} :: GetIdentityResolutionJobResponse) Prelude.. Lens.mapping Data._Time++-- | The unique identifier of the Identity Resolution Job.+getIdentityResolutionJobResponse_jobId :: Lens.Lens' GetIdentityResolutionJobResponse (Prelude.Maybe Prelude.Text)+getIdentityResolutionJobResponse_jobId = Lens.lens (\GetIdentityResolutionJobResponse' {jobId} -> jobId) (\s@GetIdentityResolutionJobResponse' {} a -> s {jobId = a} :: GetIdentityResolutionJobResponse)++-- | The timestamp of when the Identity Resolution Job was started or will be+-- started.+getIdentityResolutionJobResponse_jobStartTime :: Lens.Lens' GetIdentityResolutionJobResponse (Prelude.Maybe Prelude.UTCTime)+getIdentityResolutionJobResponse_jobStartTime = Lens.lens (\GetIdentityResolutionJobResponse' {jobStartTime} -> jobStartTime) (\s@GetIdentityResolutionJobResponse' {} a -> s {jobStartTime = a} :: GetIdentityResolutionJobResponse) Prelude.. Lens.mapping Data._Time++-- | Statistics about the Identity Resolution Job.+getIdentityResolutionJobResponse_jobStats :: Lens.Lens' GetIdentityResolutionJobResponse (Prelude.Maybe JobStats)+getIdentityResolutionJobResponse_jobStats = Lens.lens (\GetIdentityResolutionJobResponse' {jobStats} -> jobStats) (\s@GetIdentityResolutionJobResponse' {} a -> s {jobStats = a} :: GetIdentityResolutionJobResponse)++-- | The timestamp of when the Identity Resolution Job was most recently+-- edited.+getIdentityResolutionJobResponse_lastUpdatedAt :: Lens.Lens' GetIdentityResolutionJobResponse (Prelude.Maybe Prelude.UTCTime)+getIdentityResolutionJobResponse_lastUpdatedAt = Lens.lens (\GetIdentityResolutionJobResponse' {lastUpdatedAt} -> lastUpdatedAt) (\s@GetIdentityResolutionJobResponse' {} a -> s {lastUpdatedAt = a} :: GetIdentityResolutionJobResponse) Prelude.. Lens.mapping Data._Time++-- | The error messages that are generated when the Identity Resolution Job+-- runs.+getIdentityResolutionJobResponse_message :: Lens.Lens' GetIdentityResolutionJobResponse (Prelude.Maybe Prelude.Text)+getIdentityResolutionJobResponse_message = Lens.lens (\GetIdentityResolutionJobResponse' {message} -> message) (\s@GetIdentityResolutionJobResponse' {} a -> s {message = a} :: GetIdentityResolutionJobResponse)++-- | The status of the Identity Resolution Job.+--+-- -   @PENDING@: The Identity Resolution Job is scheduled but has not+--     started yet. If you turn off the Identity Resolution feature in your+--     domain, jobs in the @PENDING@ state are deleted.+--+-- -   @PREPROCESSING@: The Identity Resolution Job is loading your data.+--+-- -   @FIND_MATCHING@: The Identity Resolution Job is using the machine+--     learning model to identify profiles that belong to the same matching+--     group.+--+-- -   @MERGING@: The Identity Resolution Job is merging duplicate+--     profiles.+--+-- -   @COMPLETED@: The Identity Resolution Job completed successfully.+--+-- -   @PARTIAL_SUCCESS@: There\'s a system error and not all of the data+--     is merged. The Identity Resolution Job writes a message indicating+--     the source of the problem.+--+-- -   @FAILED@: The Identity Resolution Job did not merge any data. It+--     writes a message indicating the source of the problem.+getIdentityResolutionJobResponse_status :: Lens.Lens' GetIdentityResolutionJobResponse (Prelude.Maybe IdentityResolutionJobStatus)+getIdentityResolutionJobResponse_status = Lens.lens (\GetIdentityResolutionJobResponse' {status} -> status) (\s@GetIdentityResolutionJobResponse' {} a -> s {status = a} :: GetIdentityResolutionJobResponse)++-- | The response's http status code.+getIdentityResolutionJobResponse_httpStatus :: Lens.Lens' GetIdentityResolutionJobResponse Prelude.Int+getIdentityResolutionJobResponse_httpStatus = Lens.lens (\GetIdentityResolutionJobResponse' {httpStatus} -> httpStatus) (\s@GetIdentityResolutionJobResponse' {} a -> s {httpStatus = a} :: GetIdentityResolutionJobResponse)++instance+  Prelude.NFData+    GetIdentityResolutionJobResponse+  where+  rnf GetIdentityResolutionJobResponse' {..} =+    Prelude.rnf autoMerging+      `Prelude.seq` Prelude.rnf domainName+      `Prelude.seq` Prelude.rnf exportingLocation+      `Prelude.seq` Prelude.rnf jobEndTime+      `Prelude.seq` Prelude.rnf jobExpirationTime+      `Prelude.seq` Prelude.rnf jobId+      `Prelude.seq` Prelude.rnf jobStartTime+      `Prelude.seq` Prelude.rnf jobStats+      `Prelude.seq` Prelude.rnf lastUpdatedAt+      `Prelude.seq` Prelude.rnf message+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/CustomerProfiles/GetIntegration.hs view
@@ -0,0 +1,320 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.GetIntegration+-- 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 an integration for a domain.+module Amazonka.CustomerProfiles.GetIntegration+  ( -- * Creating a Request+    GetIntegration (..),+    newGetIntegration,++    -- * Request Lenses+    getIntegration_domainName,+    getIntegration_uri,++    -- * Destructuring the Response+    GetIntegrationResponse (..),+    newGetIntegrationResponse,++    -- * Response Lenses+    getIntegrationResponse_isUnstructured,+    getIntegrationResponse_objectTypeName,+    getIntegrationResponse_objectTypeNames,+    getIntegrationResponse_tags,+    getIntegrationResponse_workflowId,+    getIntegrationResponse_httpStatus,+    getIntegrationResponse_domainName,+    getIntegrationResponse_uri,+    getIntegrationResponse_createdAt,+    getIntegrationResponse_lastUpdatedAt,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetIntegration' smart constructor.+data GetIntegration = GetIntegration'+  { -- | The unique name of the domain.+    domainName :: Prelude.Text,+    -- | The URI of the S3 bucket or any other type of data source.+    uri :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetIntegration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'domainName', 'getIntegration_domainName' - The unique name of the domain.+--+-- 'uri', 'getIntegration_uri' - The URI of the S3 bucket or any other type of data source.+newGetIntegration ::+  -- | 'domainName'+  Prelude.Text ->+  -- | 'uri'+  Prelude.Text ->+  GetIntegration+newGetIntegration pDomainName_ pUri_ =+  GetIntegration'+    { domainName = pDomainName_,+      uri = pUri_+    }++-- | The unique name of the domain.+getIntegration_domainName :: Lens.Lens' GetIntegration Prelude.Text+getIntegration_domainName = Lens.lens (\GetIntegration' {domainName} -> domainName) (\s@GetIntegration' {} a -> s {domainName = a} :: GetIntegration)++-- | The URI of the S3 bucket or any other type of data source.+getIntegration_uri :: Lens.Lens' GetIntegration Prelude.Text+getIntegration_uri = Lens.lens (\GetIntegration' {uri} -> uri) (\s@GetIntegration' {} a -> s {uri = a} :: GetIntegration)++instance Core.AWSRequest GetIntegration where+  type+    AWSResponse GetIntegration =+      GetIntegrationResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetIntegrationResponse'+            Prelude.<$> (x Data..?> "IsUnstructured")+            Prelude.<*> (x Data..?> "ObjectTypeName")+            Prelude.<*> ( x+                            Data..?> "ObjectTypeNames"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "WorkflowId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "DomainName")+            Prelude.<*> (x Data..:> "Uri")+            Prelude.<*> (x Data..:> "CreatedAt")+            Prelude.<*> (x Data..:> "LastUpdatedAt")+      )++instance Prelude.Hashable GetIntegration where+  hashWithSalt _salt GetIntegration' {..} =+    _salt+      `Prelude.hashWithSalt` domainName+      `Prelude.hashWithSalt` uri++instance Prelude.NFData GetIntegration where+  rnf GetIntegration' {..} =+    Prelude.rnf domainName+      `Prelude.seq` Prelude.rnf uri++instance Data.ToHeaders GetIntegration where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GetIntegration where+  toJSON GetIntegration' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("Uri" Data..= uri)]+      )++instance Data.ToPath GetIntegration where+  toPath GetIntegration' {..} =+    Prelude.mconcat+      ["/domains/", Data.toBS domainName, "/integrations"]++instance Data.ToQuery GetIntegration where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetIntegrationResponse' smart constructor.+data GetIntegrationResponse = GetIntegrationResponse'+  { -- | Boolean to indicate if the Flow associated with the Integration is+    -- created via Appflow console or with ObjectTypeName equals _unstructured+    -- via API\/CLI in flowDefinition+    isUnstructured :: Prelude.Maybe Prelude.Bool,+    -- | The name of the profile object type.+    objectTypeName :: Prelude.Maybe Prelude.Text,+    -- | A map in which each key is an event type from an external application+    -- such as Segment or Shopify, and each value is an @ObjectTypeName@+    -- (template) used to ingest the event. It supports the following event+    -- types: @SegmentIdentify@, @ShopifyCreateCustomers@,+    -- @ShopifyUpdateCustomers@, @ShopifyCreateDraftOrders@,+    -- @ShopifyUpdateDraftOrders@, @ShopifyCreateOrders@, and+    -- @ShopifyUpdatedOrders@.+    objectTypeNames :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The tags used to organize, track, or control access for this resource.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | Unique identifier for the workflow.+    workflowId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The unique name of the domain.+    domainName :: Prelude.Text,+    -- | The URI of the S3 bucket or any other type of data source.+    uri :: Prelude.Text,+    -- | The timestamp of when the domain was created.+    createdAt :: Data.POSIX,+    -- | The timestamp of when the domain was most recently edited.+    lastUpdatedAt :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetIntegrationResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'isUnstructured', 'getIntegrationResponse_isUnstructured' - Boolean to indicate if the Flow associated with the Integration is+-- created via Appflow console or with ObjectTypeName equals _unstructured+-- via API\/CLI in flowDefinition+--+-- 'objectTypeName', 'getIntegrationResponse_objectTypeName' - The name of the profile object type.+--+-- 'objectTypeNames', 'getIntegrationResponse_objectTypeNames' - A map in which each key is an event type from an external application+-- such as Segment or Shopify, and each value is an @ObjectTypeName@+-- (template) used to ingest the event. It supports the following event+-- types: @SegmentIdentify@, @ShopifyCreateCustomers@,+-- @ShopifyUpdateCustomers@, @ShopifyCreateDraftOrders@,+-- @ShopifyUpdateDraftOrders@, @ShopifyCreateOrders@, and+-- @ShopifyUpdatedOrders@.+--+-- 'tags', 'getIntegrationResponse_tags' - The tags used to organize, track, or control access for this resource.+--+-- 'workflowId', 'getIntegrationResponse_workflowId' - Unique identifier for the workflow.+--+-- 'httpStatus', 'getIntegrationResponse_httpStatus' - The response's http status code.+--+-- 'domainName', 'getIntegrationResponse_domainName' - The unique name of the domain.+--+-- 'uri', 'getIntegrationResponse_uri' - The URI of the S3 bucket or any other type of data source.+--+-- 'createdAt', 'getIntegrationResponse_createdAt' - The timestamp of when the domain was created.+--+-- 'lastUpdatedAt', 'getIntegrationResponse_lastUpdatedAt' - The timestamp of when the domain was most recently edited.+newGetIntegrationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'domainName'+  Prelude.Text ->+  -- | 'uri'+  Prelude.Text ->+  -- | 'createdAt'+  Prelude.UTCTime ->+  -- | 'lastUpdatedAt'+  Prelude.UTCTime ->+  GetIntegrationResponse+newGetIntegrationResponse+  pHttpStatus_+  pDomainName_+  pUri_+  pCreatedAt_+  pLastUpdatedAt_ =+    GetIntegrationResponse'+      { isUnstructured =+          Prelude.Nothing,+        objectTypeName = Prelude.Nothing,+        objectTypeNames = Prelude.Nothing,+        tags = Prelude.Nothing,+        workflowId = Prelude.Nothing,+        httpStatus = pHttpStatus_,+        domainName = pDomainName_,+        uri = pUri_,+        createdAt = Data._Time Lens.# pCreatedAt_,+        lastUpdatedAt = Data._Time Lens.# pLastUpdatedAt_+      }++-- | Boolean to indicate if the Flow associated with the Integration is+-- created via Appflow console or with ObjectTypeName equals _unstructured+-- via API\/CLI in flowDefinition+getIntegrationResponse_isUnstructured :: Lens.Lens' GetIntegrationResponse (Prelude.Maybe Prelude.Bool)+getIntegrationResponse_isUnstructured = Lens.lens (\GetIntegrationResponse' {isUnstructured} -> isUnstructured) (\s@GetIntegrationResponse' {} a -> s {isUnstructured = a} :: GetIntegrationResponse)++-- | The name of the profile object type.+getIntegrationResponse_objectTypeName :: Lens.Lens' GetIntegrationResponse (Prelude.Maybe Prelude.Text)+getIntegrationResponse_objectTypeName = Lens.lens (\GetIntegrationResponse' {objectTypeName} -> objectTypeName) (\s@GetIntegrationResponse' {} a -> s {objectTypeName = a} :: GetIntegrationResponse)++-- | A map in which each key is an event type from an external application+-- such as Segment or Shopify, and each value is an @ObjectTypeName@+-- (template) used to ingest the event. It supports the following event+-- types: @SegmentIdentify@, @ShopifyCreateCustomers@,+-- @ShopifyUpdateCustomers@, @ShopifyCreateDraftOrders@,+-- @ShopifyUpdateDraftOrders@, @ShopifyCreateOrders@, and+-- @ShopifyUpdatedOrders@.+getIntegrationResponse_objectTypeNames :: Lens.Lens' GetIntegrationResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+getIntegrationResponse_objectTypeNames = Lens.lens (\GetIntegrationResponse' {objectTypeNames} -> objectTypeNames) (\s@GetIntegrationResponse' {} a -> s {objectTypeNames = a} :: GetIntegrationResponse) Prelude.. Lens.mapping Lens.coerced++-- | The tags used to organize, track, or control access for this resource.+getIntegrationResponse_tags :: Lens.Lens' GetIntegrationResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+getIntegrationResponse_tags = Lens.lens (\GetIntegrationResponse' {tags} -> tags) (\s@GetIntegrationResponse' {} a -> s {tags = a} :: GetIntegrationResponse) Prelude.. Lens.mapping Lens.coerced++-- | Unique identifier for the workflow.+getIntegrationResponse_workflowId :: Lens.Lens' GetIntegrationResponse (Prelude.Maybe Prelude.Text)+getIntegrationResponse_workflowId = Lens.lens (\GetIntegrationResponse' {workflowId} -> workflowId) (\s@GetIntegrationResponse' {} a -> s {workflowId = a} :: GetIntegrationResponse)++-- | The response's http status code.+getIntegrationResponse_httpStatus :: Lens.Lens' GetIntegrationResponse Prelude.Int+getIntegrationResponse_httpStatus = Lens.lens (\GetIntegrationResponse' {httpStatus} -> httpStatus) (\s@GetIntegrationResponse' {} a -> s {httpStatus = a} :: GetIntegrationResponse)++-- | The unique name of the domain.+getIntegrationResponse_domainName :: Lens.Lens' GetIntegrationResponse Prelude.Text+getIntegrationResponse_domainName = Lens.lens (\GetIntegrationResponse' {domainName} -> domainName) (\s@GetIntegrationResponse' {} a -> s {domainName = a} :: GetIntegrationResponse)++-- | The URI of the S3 bucket or any other type of data source.+getIntegrationResponse_uri :: Lens.Lens' GetIntegrationResponse Prelude.Text+getIntegrationResponse_uri = Lens.lens (\GetIntegrationResponse' {uri} -> uri) (\s@GetIntegrationResponse' {} a -> s {uri = a} :: GetIntegrationResponse)++-- | The timestamp of when the domain was created.+getIntegrationResponse_createdAt :: Lens.Lens' GetIntegrationResponse Prelude.UTCTime+getIntegrationResponse_createdAt = Lens.lens (\GetIntegrationResponse' {createdAt} -> createdAt) (\s@GetIntegrationResponse' {} a -> s {createdAt = a} :: GetIntegrationResponse) Prelude.. Data._Time++-- | The timestamp of when the domain was most recently edited.+getIntegrationResponse_lastUpdatedAt :: Lens.Lens' GetIntegrationResponse Prelude.UTCTime+getIntegrationResponse_lastUpdatedAt = Lens.lens (\GetIntegrationResponse' {lastUpdatedAt} -> lastUpdatedAt) (\s@GetIntegrationResponse' {} a -> s {lastUpdatedAt = a} :: GetIntegrationResponse) Prelude.. Data._Time++instance Prelude.NFData GetIntegrationResponse where+  rnf GetIntegrationResponse' {..} =+    Prelude.rnf isUnstructured+      `Prelude.seq` Prelude.rnf objectTypeName+      `Prelude.seq` Prelude.rnf objectTypeNames+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf workflowId+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf domainName+      `Prelude.seq` Prelude.rnf uri+      `Prelude.seq` Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf lastUpdatedAt
+ gen/Amazonka/CustomerProfiles/GetMatches.hs view
@@ -0,0 +1,279 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.GetMatches+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Before calling this API, use+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_CreateDomain.html CreateDomain>+-- or+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_UpdateDomain.html UpdateDomain>+-- to enable identity resolution: set @Matching@ to true.+--+-- GetMatches returns potentially matching profiles, based on the results+-- of the latest run of a machine learning process.+--+-- The process of matching duplicate profiles. If @Matching@ = @true@,+-- Amazon Connect Customer Profiles starts a weekly batch process called+-- Identity Resolution Job. If you do not specify a date and time for+-- Identity Resolution Job to run, by default it runs every Saturday at+-- 12AM UTC to detect duplicate profiles in your domains.+--+-- After the Identity Resolution Job completes, use the+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_GetMatches.html GetMatches>+-- API to return and review the results. Or, if you have configured+-- @ExportingConfig@ in the @MatchingRequest@, you can download the results+-- from S3.+--+-- Amazon Connect uses the following profile attributes to identify+-- matches:+--+-- -   PhoneNumber+--+-- -   HomePhoneNumber+--+-- -   BusinessPhoneNumber+--+-- -   MobilePhoneNumber+--+-- -   EmailAddress+--+-- -   PersonalEmailAddress+--+-- -   BusinessEmailAddress+--+-- -   FullName+--+-- For example, two or more profiles—with spelling mistakes such as __John+-- Doe__ and __Jhn Doe__, or different casing email addresses such as+-- __JOHN_DOE\@ANYCOMPANY.COM__ and __johndoe\@anycompany.com__, or+-- different phone number formats such as __555-010-0000__ and+-- __+1-555-010-0000__—can be detected as belonging to the same customer+-- __John Doe__ and merged into a unified profile.+module Amazonka.CustomerProfiles.GetMatches+  ( -- * Creating a Request+    GetMatches (..),+    newGetMatches,++    -- * Request Lenses+    getMatches_maxResults,+    getMatches_nextToken,+    getMatches_domainName,++    -- * Destructuring the Response+    GetMatchesResponse (..),+    newGetMatchesResponse,++    -- * Response Lenses+    getMatchesResponse_matchGenerationDate,+    getMatchesResponse_matches,+    getMatchesResponse_nextToken,+    getMatchesResponse_potentialMatches,+    getMatchesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetMatches' smart constructor.+data GetMatches = GetMatches'+  { -- | The maximum number of results to return per page.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token for the next set of results. Use the value returned in the+    -- previous response in the next request to retrieve the next set of+    -- results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The unique name of the domain.+    domainName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetMatches' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getMatches_maxResults' - The maximum number of results to return per page.+--+-- 'nextToken', 'getMatches_nextToken' - The token for the next set of results. Use the value returned in the+-- previous response in the next request to retrieve the next set of+-- results.+--+-- 'domainName', 'getMatches_domainName' - The unique name of the domain.+newGetMatches ::+  -- | 'domainName'+  Prelude.Text ->+  GetMatches+newGetMatches pDomainName_ =+  GetMatches'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      domainName = pDomainName_+    }++-- | The maximum number of results to return per page.+getMatches_maxResults :: Lens.Lens' GetMatches (Prelude.Maybe Prelude.Natural)+getMatches_maxResults = Lens.lens (\GetMatches' {maxResults} -> maxResults) (\s@GetMatches' {} a -> s {maxResults = a} :: GetMatches)++-- | The token for the next set of results. Use the value returned in the+-- previous response in the next request to retrieve the next set of+-- results.+getMatches_nextToken :: Lens.Lens' GetMatches (Prelude.Maybe Prelude.Text)+getMatches_nextToken = Lens.lens (\GetMatches' {nextToken} -> nextToken) (\s@GetMatches' {} a -> s {nextToken = a} :: GetMatches)++-- | The unique name of the domain.+getMatches_domainName :: Lens.Lens' GetMatches Prelude.Text+getMatches_domainName = Lens.lens (\GetMatches' {domainName} -> domainName) (\s@GetMatches' {} a -> s {domainName = a} :: GetMatches)++instance Core.AWSRequest GetMatches where+  type AWSResponse GetMatches = GetMatchesResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetMatchesResponse'+            Prelude.<$> (x Data..?> "MatchGenerationDate")+            Prelude.<*> (x Data..?> "Matches" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (x Data..?> "PotentialMatches")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetMatches where+  hashWithSalt _salt GetMatches' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` domainName++instance Prelude.NFData GetMatches where+  rnf GetMatches' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf domainName++instance Data.ToHeaders GetMatches where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetMatches where+  toPath GetMatches' {..} =+    Prelude.mconcat+      ["/domains/", Data.toBS domainName, "/matches"]++instance Data.ToQuery GetMatches where+  toQuery GetMatches' {..} =+    Prelude.mconcat+      [ "max-results" Data.=: maxResults,+        "next-token" Data.=: nextToken+      ]++-- | /See:/ 'newGetMatchesResponse' smart constructor.+data GetMatchesResponse = GetMatchesResponse'+  { -- | The timestamp this version of Match Result generated.+    matchGenerationDate :: Prelude.Maybe Data.POSIX,+    -- | The list of matched profiles for this instance.+    matches :: Prelude.Maybe [MatchItem],+    -- | If there are additional results, this is the token for the next set of+    -- results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The number of potential matches found.+    potentialMatches :: Prelude.Maybe Prelude.Natural,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetMatchesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'matchGenerationDate', 'getMatchesResponse_matchGenerationDate' - The timestamp this version of Match Result generated.+--+-- 'matches', 'getMatchesResponse_matches' - The list of matched profiles for this instance.+--+-- 'nextToken', 'getMatchesResponse_nextToken' - If there are additional results, this is the token for the next set of+-- results.+--+-- 'potentialMatches', 'getMatchesResponse_potentialMatches' - The number of potential matches found.+--+-- 'httpStatus', 'getMatchesResponse_httpStatus' - The response's http status code.+newGetMatchesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetMatchesResponse+newGetMatchesResponse pHttpStatus_ =+  GetMatchesResponse'+    { matchGenerationDate =+        Prelude.Nothing,+      matches = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      potentialMatches = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The timestamp this version of Match Result generated.+getMatchesResponse_matchGenerationDate :: Lens.Lens' GetMatchesResponse (Prelude.Maybe Prelude.UTCTime)+getMatchesResponse_matchGenerationDate = Lens.lens (\GetMatchesResponse' {matchGenerationDate} -> matchGenerationDate) (\s@GetMatchesResponse' {} a -> s {matchGenerationDate = a} :: GetMatchesResponse) Prelude.. Lens.mapping Data._Time++-- | The list of matched profiles for this instance.+getMatchesResponse_matches :: Lens.Lens' GetMatchesResponse (Prelude.Maybe [MatchItem])+getMatchesResponse_matches = Lens.lens (\GetMatchesResponse' {matches} -> matches) (\s@GetMatchesResponse' {} a -> s {matches = a} :: GetMatchesResponse) Prelude.. Lens.mapping Lens.coerced++-- | If there are additional results, this is the token for the next set of+-- results.+getMatchesResponse_nextToken :: Lens.Lens' GetMatchesResponse (Prelude.Maybe Prelude.Text)+getMatchesResponse_nextToken = Lens.lens (\GetMatchesResponse' {nextToken} -> nextToken) (\s@GetMatchesResponse' {} a -> s {nextToken = a} :: GetMatchesResponse)++-- | The number of potential matches found.+getMatchesResponse_potentialMatches :: Lens.Lens' GetMatchesResponse (Prelude.Maybe Prelude.Natural)+getMatchesResponse_potentialMatches = Lens.lens (\GetMatchesResponse' {potentialMatches} -> potentialMatches) (\s@GetMatchesResponse' {} a -> s {potentialMatches = a} :: GetMatchesResponse)++-- | The response's http status code.+getMatchesResponse_httpStatus :: Lens.Lens' GetMatchesResponse Prelude.Int+getMatchesResponse_httpStatus = Lens.lens (\GetMatchesResponse' {httpStatus} -> httpStatus) (\s@GetMatchesResponse' {} a -> s {httpStatus = a} :: GetMatchesResponse)++instance Prelude.NFData GetMatchesResponse where+  rnf GetMatchesResponse' {..} =+    Prelude.rnf matchGenerationDate+      `Prelude.seq` Prelude.rnf matches+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf potentialMatches+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/CustomerProfiles/GetProfileObjectType.hs view
@@ -0,0 +1,342 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.GetProfileObjectType+-- 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 object types for a specific domain.+module Amazonka.CustomerProfiles.GetProfileObjectType+  ( -- * Creating a Request+    GetProfileObjectType (..),+    newGetProfileObjectType,++    -- * Request Lenses+    getProfileObjectType_domainName,+    getProfileObjectType_objectTypeName,++    -- * Destructuring the Response+    GetProfileObjectTypeResponse (..),+    newGetProfileObjectTypeResponse,++    -- * Response Lenses+    getProfileObjectTypeResponse_allowProfileCreation,+    getProfileObjectTypeResponse_createdAt,+    getProfileObjectTypeResponse_encryptionKey,+    getProfileObjectTypeResponse_expirationDays,+    getProfileObjectTypeResponse_fields,+    getProfileObjectTypeResponse_keys,+    getProfileObjectTypeResponse_lastUpdatedAt,+    getProfileObjectTypeResponse_sourceLastUpdatedTimestampFormat,+    getProfileObjectTypeResponse_tags,+    getProfileObjectTypeResponse_templateId,+    getProfileObjectTypeResponse_httpStatus,+    getProfileObjectTypeResponse_objectTypeName,+    getProfileObjectTypeResponse_description,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetProfileObjectType' smart constructor.+data GetProfileObjectType = GetProfileObjectType'+  { -- | The unique name of the domain.+    domainName :: Prelude.Text,+    -- | The name of the profile object type.+    objectTypeName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetProfileObjectType' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'domainName', 'getProfileObjectType_domainName' - The unique name of the domain.+--+-- 'objectTypeName', 'getProfileObjectType_objectTypeName' - The name of the profile object type.+newGetProfileObjectType ::+  -- | 'domainName'+  Prelude.Text ->+  -- | 'objectTypeName'+  Prelude.Text ->+  GetProfileObjectType+newGetProfileObjectType pDomainName_ pObjectTypeName_ =+  GetProfileObjectType'+    { domainName = pDomainName_,+      objectTypeName = pObjectTypeName_+    }++-- | The unique name of the domain.+getProfileObjectType_domainName :: Lens.Lens' GetProfileObjectType Prelude.Text+getProfileObjectType_domainName = Lens.lens (\GetProfileObjectType' {domainName} -> domainName) (\s@GetProfileObjectType' {} a -> s {domainName = a} :: GetProfileObjectType)++-- | The name of the profile object type.+getProfileObjectType_objectTypeName :: Lens.Lens' GetProfileObjectType Prelude.Text+getProfileObjectType_objectTypeName = Lens.lens (\GetProfileObjectType' {objectTypeName} -> objectTypeName) (\s@GetProfileObjectType' {} a -> s {objectTypeName = a} :: GetProfileObjectType)++instance Core.AWSRequest GetProfileObjectType where+  type+    AWSResponse GetProfileObjectType =+      GetProfileObjectTypeResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetProfileObjectTypeResponse'+            Prelude.<$> (x Data..?> "AllowProfileCreation")+            Prelude.<*> (x Data..?> "CreatedAt")+            Prelude.<*> (x Data..?> "EncryptionKey")+            Prelude.<*> (x Data..?> "ExpirationDays")+            Prelude.<*> (x Data..?> "Fields" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "Keys" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "LastUpdatedAt")+            Prelude.<*> (x Data..?> "SourceLastUpdatedTimestampFormat")+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "TemplateId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "ObjectTypeName")+            Prelude.<*> (x Data..:> "Description")+      )++instance Prelude.Hashable GetProfileObjectType where+  hashWithSalt _salt GetProfileObjectType' {..} =+    _salt+      `Prelude.hashWithSalt` domainName+      `Prelude.hashWithSalt` objectTypeName++instance Prelude.NFData GetProfileObjectType where+  rnf GetProfileObjectType' {..} =+    Prelude.rnf domainName+      `Prelude.seq` Prelude.rnf objectTypeName++instance Data.ToHeaders GetProfileObjectType where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetProfileObjectType where+  toPath GetProfileObjectType' {..} =+    Prelude.mconcat+      [ "/domains/",+        Data.toBS domainName,+        "/object-types/",+        Data.toBS objectTypeName+      ]++instance Data.ToQuery GetProfileObjectType where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetProfileObjectTypeResponse' smart constructor.+data GetProfileObjectTypeResponse = GetProfileObjectTypeResponse'+  { -- | Indicates whether a profile should be created when data is received if+    -- one doesn’t exist for an object of this type. The default is @FALSE@. If+    -- the AllowProfileCreation flag is set to @FALSE@, then the service tries+    -- to fetch a standard profile and associate this object with the profile.+    -- If it is set to @TRUE@, and if no match is found, then the service+    -- creates a new standard profile.+    allowProfileCreation :: Prelude.Maybe Prelude.Bool,+    -- | The timestamp of when the domain was created.+    createdAt :: Prelude.Maybe Data.POSIX,+    -- | The customer-provided key to encrypt the profile object that will be+    -- created in this profile object type.+    encryptionKey :: Prelude.Maybe Prelude.Text,+    -- | The number of days until the data in the object expires.+    expirationDays :: Prelude.Maybe Prelude.Natural,+    -- | A map of the name and ObjectType field.+    fields :: Prelude.Maybe (Prelude.HashMap Prelude.Text ObjectTypeField),+    -- | A list of unique keys that can be used to map data to the profile.+    keys :: Prelude.Maybe (Prelude.HashMap Prelude.Text [ObjectTypeKey]),+    -- | The timestamp of when the domain was most recently edited.+    lastUpdatedAt :: Prelude.Maybe Data.POSIX,+    -- | The format of your @sourceLastUpdatedTimestamp@ that was previously set+    -- up.+    sourceLastUpdatedTimestampFormat :: Prelude.Maybe Prelude.Text,+    -- | The tags used to organize, track, or control access for this resource.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | A unique identifier for the object template.+    templateId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The name of the profile object type.+    objectTypeName :: Prelude.Text,+    -- | The description of the profile object type.+    description :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetProfileObjectTypeResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'allowProfileCreation', 'getProfileObjectTypeResponse_allowProfileCreation' - Indicates whether a profile should be created when data is received if+-- one doesn’t exist for an object of this type. The default is @FALSE@. If+-- the AllowProfileCreation flag is set to @FALSE@, then the service tries+-- to fetch a standard profile and associate this object with the profile.+-- If it is set to @TRUE@, and if no match is found, then the service+-- creates a new standard profile.+--+-- 'createdAt', 'getProfileObjectTypeResponse_createdAt' - The timestamp of when the domain was created.+--+-- 'encryptionKey', 'getProfileObjectTypeResponse_encryptionKey' - The customer-provided key to encrypt the profile object that will be+-- created in this profile object type.+--+-- 'expirationDays', 'getProfileObjectTypeResponse_expirationDays' - The number of days until the data in the object expires.+--+-- 'fields', 'getProfileObjectTypeResponse_fields' - A map of the name and ObjectType field.+--+-- 'keys', 'getProfileObjectTypeResponse_keys' - A list of unique keys that can be used to map data to the profile.+--+-- 'lastUpdatedAt', 'getProfileObjectTypeResponse_lastUpdatedAt' - The timestamp of when the domain was most recently edited.+--+-- 'sourceLastUpdatedTimestampFormat', 'getProfileObjectTypeResponse_sourceLastUpdatedTimestampFormat' - The format of your @sourceLastUpdatedTimestamp@ that was previously set+-- up.+--+-- 'tags', 'getProfileObjectTypeResponse_tags' - The tags used to organize, track, or control access for this resource.+--+-- 'templateId', 'getProfileObjectTypeResponse_templateId' - A unique identifier for the object template.+--+-- 'httpStatus', 'getProfileObjectTypeResponse_httpStatus' - The response's http status code.+--+-- 'objectTypeName', 'getProfileObjectTypeResponse_objectTypeName' - The name of the profile object type.+--+-- 'description', 'getProfileObjectTypeResponse_description' - The description of the profile object type.+newGetProfileObjectTypeResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'objectTypeName'+  Prelude.Text ->+  -- | 'description'+  Prelude.Text ->+  GetProfileObjectTypeResponse+newGetProfileObjectTypeResponse+  pHttpStatus_+  pObjectTypeName_+  pDescription_ =+    GetProfileObjectTypeResponse'+      { allowProfileCreation =+          Prelude.Nothing,+        createdAt = Prelude.Nothing,+        encryptionKey = Prelude.Nothing,+        expirationDays = Prelude.Nothing,+        fields = Prelude.Nothing,+        keys = Prelude.Nothing,+        lastUpdatedAt = Prelude.Nothing,+        sourceLastUpdatedTimestampFormat =+          Prelude.Nothing,+        tags = Prelude.Nothing,+        templateId = Prelude.Nothing,+        httpStatus = pHttpStatus_,+        objectTypeName = pObjectTypeName_,+        description = pDescription_+      }++-- | Indicates whether a profile should be created when data is received if+-- one doesn’t exist for an object of this type. The default is @FALSE@. If+-- the AllowProfileCreation flag is set to @FALSE@, then the service tries+-- to fetch a standard profile and associate this object with the profile.+-- If it is set to @TRUE@, and if no match is found, then the service+-- creates a new standard profile.+getProfileObjectTypeResponse_allowProfileCreation :: Lens.Lens' GetProfileObjectTypeResponse (Prelude.Maybe Prelude.Bool)+getProfileObjectTypeResponse_allowProfileCreation = Lens.lens (\GetProfileObjectTypeResponse' {allowProfileCreation} -> allowProfileCreation) (\s@GetProfileObjectTypeResponse' {} a -> s {allowProfileCreation = a} :: GetProfileObjectTypeResponse)++-- | The timestamp of when the domain was created.+getProfileObjectTypeResponse_createdAt :: Lens.Lens' GetProfileObjectTypeResponse (Prelude.Maybe Prelude.UTCTime)+getProfileObjectTypeResponse_createdAt = Lens.lens (\GetProfileObjectTypeResponse' {createdAt} -> createdAt) (\s@GetProfileObjectTypeResponse' {} a -> s {createdAt = a} :: GetProfileObjectTypeResponse) Prelude.. Lens.mapping Data._Time++-- | The customer-provided key to encrypt the profile object that will be+-- created in this profile object type.+getProfileObjectTypeResponse_encryptionKey :: Lens.Lens' GetProfileObjectTypeResponse (Prelude.Maybe Prelude.Text)+getProfileObjectTypeResponse_encryptionKey = Lens.lens (\GetProfileObjectTypeResponse' {encryptionKey} -> encryptionKey) (\s@GetProfileObjectTypeResponse' {} a -> s {encryptionKey = a} :: GetProfileObjectTypeResponse)++-- | The number of days until the data in the object expires.+getProfileObjectTypeResponse_expirationDays :: Lens.Lens' GetProfileObjectTypeResponse (Prelude.Maybe Prelude.Natural)+getProfileObjectTypeResponse_expirationDays = Lens.lens (\GetProfileObjectTypeResponse' {expirationDays} -> expirationDays) (\s@GetProfileObjectTypeResponse' {} a -> s {expirationDays = a} :: GetProfileObjectTypeResponse)++-- | A map of the name and ObjectType field.+getProfileObjectTypeResponse_fields :: Lens.Lens' GetProfileObjectTypeResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text ObjectTypeField))+getProfileObjectTypeResponse_fields = Lens.lens (\GetProfileObjectTypeResponse' {fields} -> fields) (\s@GetProfileObjectTypeResponse' {} a -> s {fields = a} :: GetProfileObjectTypeResponse) Prelude.. Lens.mapping Lens.coerced++-- | A list of unique keys that can be used to map data to the profile.+getProfileObjectTypeResponse_keys :: Lens.Lens' GetProfileObjectTypeResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text [ObjectTypeKey]))+getProfileObjectTypeResponse_keys = Lens.lens (\GetProfileObjectTypeResponse' {keys} -> keys) (\s@GetProfileObjectTypeResponse' {} a -> s {keys = a} :: GetProfileObjectTypeResponse) Prelude.. Lens.mapping Lens.coerced++-- | The timestamp of when the domain was most recently edited.+getProfileObjectTypeResponse_lastUpdatedAt :: Lens.Lens' GetProfileObjectTypeResponse (Prelude.Maybe Prelude.UTCTime)+getProfileObjectTypeResponse_lastUpdatedAt = Lens.lens (\GetProfileObjectTypeResponse' {lastUpdatedAt} -> lastUpdatedAt) (\s@GetProfileObjectTypeResponse' {} a -> s {lastUpdatedAt = a} :: GetProfileObjectTypeResponse) Prelude.. Lens.mapping Data._Time++-- | The format of your @sourceLastUpdatedTimestamp@ that was previously set+-- up.+getProfileObjectTypeResponse_sourceLastUpdatedTimestampFormat :: Lens.Lens' GetProfileObjectTypeResponse (Prelude.Maybe Prelude.Text)+getProfileObjectTypeResponse_sourceLastUpdatedTimestampFormat = Lens.lens (\GetProfileObjectTypeResponse' {sourceLastUpdatedTimestampFormat} -> sourceLastUpdatedTimestampFormat) (\s@GetProfileObjectTypeResponse' {} a -> s {sourceLastUpdatedTimestampFormat = a} :: GetProfileObjectTypeResponse)++-- | The tags used to organize, track, or control access for this resource.+getProfileObjectTypeResponse_tags :: Lens.Lens' GetProfileObjectTypeResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+getProfileObjectTypeResponse_tags = Lens.lens (\GetProfileObjectTypeResponse' {tags} -> tags) (\s@GetProfileObjectTypeResponse' {} a -> s {tags = a} :: GetProfileObjectTypeResponse) Prelude.. Lens.mapping Lens.coerced++-- | A unique identifier for the object template.+getProfileObjectTypeResponse_templateId :: Lens.Lens' GetProfileObjectTypeResponse (Prelude.Maybe Prelude.Text)+getProfileObjectTypeResponse_templateId = Lens.lens (\GetProfileObjectTypeResponse' {templateId} -> templateId) (\s@GetProfileObjectTypeResponse' {} a -> s {templateId = a} :: GetProfileObjectTypeResponse)++-- | The response's http status code.+getProfileObjectTypeResponse_httpStatus :: Lens.Lens' GetProfileObjectTypeResponse Prelude.Int+getProfileObjectTypeResponse_httpStatus = Lens.lens (\GetProfileObjectTypeResponse' {httpStatus} -> httpStatus) (\s@GetProfileObjectTypeResponse' {} a -> s {httpStatus = a} :: GetProfileObjectTypeResponse)++-- | The name of the profile object type.+getProfileObjectTypeResponse_objectTypeName :: Lens.Lens' GetProfileObjectTypeResponse Prelude.Text+getProfileObjectTypeResponse_objectTypeName = Lens.lens (\GetProfileObjectTypeResponse' {objectTypeName} -> objectTypeName) (\s@GetProfileObjectTypeResponse' {} a -> s {objectTypeName = a} :: GetProfileObjectTypeResponse)++-- | The description of the profile object type.+getProfileObjectTypeResponse_description :: Lens.Lens' GetProfileObjectTypeResponse Prelude.Text+getProfileObjectTypeResponse_description = Lens.lens (\GetProfileObjectTypeResponse' {description} -> description) (\s@GetProfileObjectTypeResponse' {} a -> s {description = a} :: GetProfileObjectTypeResponse)++instance Prelude.NFData GetProfileObjectTypeResponse where+  rnf GetProfileObjectTypeResponse' {..} =+    Prelude.rnf allowProfileCreation+      `Prelude.seq` Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf encryptionKey+      `Prelude.seq` Prelude.rnf expirationDays+      `Prelude.seq` Prelude.rnf fields+      `Prelude.seq` Prelude.rnf keys+      `Prelude.seq` Prelude.rnf lastUpdatedAt+      `Prelude.seq` Prelude.rnf sourceLastUpdatedTimestampFormat+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf templateId+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf objectTypeName+      `Prelude.seq` Prelude.rnf description
+ gen/Amazonka/CustomerProfiles/GetProfileObjectTypeTemplate.hs view
@@ -0,0 +1,266 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.GetProfileObjectTypeTemplate+-- 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 template information for a specific object type.+--+-- A template is a predefined ProfileObjectType, such as+-- “Salesforce-Account” or “Salesforce-Contact.” When a user sends a+-- ProfileObject, using the PutProfileObject API, with an ObjectTypeName+-- that matches one of the TemplateIds, it uses the mappings from the+-- template.+module Amazonka.CustomerProfiles.GetProfileObjectTypeTemplate+  ( -- * Creating a Request+    GetProfileObjectTypeTemplate (..),+    newGetProfileObjectTypeTemplate,++    -- * Request Lenses+    getProfileObjectTypeTemplate_templateId,++    -- * Destructuring the Response+    GetProfileObjectTypeTemplateResponse (..),+    newGetProfileObjectTypeTemplateResponse,++    -- * Response Lenses+    getProfileObjectTypeTemplateResponse_allowProfileCreation,+    getProfileObjectTypeTemplateResponse_fields,+    getProfileObjectTypeTemplateResponse_keys,+    getProfileObjectTypeTemplateResponse_sourceLastUpdatedTimestampFormat,+    getProfileObjectTypeTemplateResponse_sourceName,+    getProfileObjectTypeTemplateResponse_sourceObject,+    getProfileObjectTypeTemplateResponse_templateId,+    getProfileObjectTypeTemplateResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetProfileObjectTypeTemplate' smart constructor.+data GetProfileObjectTypeTemplate = GetProfileObjectTypeTemplate'+  { -- | A unique identifier for the object template.+    templateId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetProfileObjectTypeTemplate' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'templateId', 'getProfileObjectTypeTemplate_templateId' - A unique identifier for the object template.+newGetProfileObjectTypeTemplate ::+  -- | 'templateId'+  Prelude.Text ->+  GetProfileObjectTypeTemplate+newGetProfileObjectTypeTemplate pTemplateId_ =+  GetProfileObjectTypeTemplate'+    { templateId =+        pTemplateId_+    }++-- | A unique identifier for the object template.+getProfileObjectTypeTemplate_templateId :: Lens.Lens' GetProfileObjectTypeTemplate Prelude.Text+getProfileObjectTypeTemplate_templateId = Lens.lens (\GetProfileObjectTypeTemplate' {templateId} -> templateId) (\s@GetProfileObjectTypeTemplate' {} a -> s {templateId = a} :: GetProfileObjectTypeTemplate)++instance Core.AWSRequest GetProfileObjectTypeTemplate where+  type+    AWSResponse GetProfileObjectTypeTemplate =+      GetProfileObjectTypeTemplateResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetProfileObjectTypeTemplateResponse'+            Prelude.<$> (x Data..?> "AllowProfileCreation")+            Prelude.<*> (x Data..?> "Fields" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "Keys" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "SourceLastUpdatedTimestampFormat")+            Prelude.<*> (x Data..?> "SourceName")+            Prelude.<*> (x Data..?> "SourceObject")+            Prelude.<*> (x Data..?> "TemplateId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    GetProfileObjectTypeTemplate+  where+  hashWithSalt _salt GetProfileObjectTypeTemplate' {..} =+    _salt `Prelude.hashWithSalt` templateId++instance Prelude.NFData GetProfileObjectTypeTemplate where+  rnf GetProfileObjectTypeTemplate' {..} =+    Prelude.rnf templateId++instance Data.ToHeaders GetProfileObjectTypeTemplate where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetProfileObjectTypeTemplate where+  toPath GetProfileObjectTypeTemplate' {..} =+    Prelude.mconcat+      ["/templates/", Data.toBS templateId]++instance Data.ToQuery GetProfileObjectTypeTemplate where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetProfileObjectTypeTemplateResponse' smart constructor.+data GetProfileObjectTypeTemplateResponse = GetProfileObjectTypeTemplateResponse'+  { -- | Indicates whether a profile should be created when data is received if+    -- one doesn’t exist for an object of this type. The default is @FALSE@. If+    -- the AllowProfileCreation flag is set to @FALSE@, then the service tries+    -- to fetch a standard profile and associate this object with the profile.+    -- If it is set to @TRUE@, and if no match is found, then the service+    -- creates a new standard profile.+    allowProfileCreation :: Prelude.Maybe Prelude.Bool,+    -- | A map of the name and ObjectType field.+    fields :: Prelude.Maybe (Prelude.HashMap Prelude.Text ObjectTypeField),+    -- | A list of unique keys that can be used to map data to the profile.+    keys :: Prelude.Maybe (Prelude.HashMap Prelude.Text [ObjectTypeKey]),+    -- | The format of your @sourceLastUpdatedTimestamp@ that was previously set+    -- up.+    sourceLastUpdatedTimestampFormat :: Prelude.Maybe Prelude.Text,+    -- | The name of the source of the object template.+    sourceName :: Prelude.Maybe Prelude.Text,+    -- | The source of the object template.+    sourceObject :: Prelude.Maybe Prelude.Text,+    -- | A unique identifier for the object template.+    templateId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetProfileObjectTypeTemplateResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'allowProfileCreation', 'getProfileObjectTypeTemplateResponse_allowProfileCreation' - Indicates whether a profile should be created when data is received if+-- one doesn’t exist for an object of this type. The default is @FALSE@. If+-- the AllowProfileCreation flag is set to @FALSE@, then the service tries+-- to fetch a standard profile and associate this object with the profile.+-- If it is set to @TRUE@, and if no match is found, then the service+-- creates a new standard profile.+--+-- 'fields', 'getProfileObjectTypeTemplateResponse_fields' - A map of the name and ObjectType field.+--+-- 'keys', 'getProfileObjectTypeTemplateResponse_keys' - A list of unique keys that can be used to map data to the profile.+--+-- 'sourceLastUpdatedTimestampFormat', 'getProfileObjectTypeTemplateResponse_sourceLastUpdatedTimestampFormat' - The format of your @sourceLastUpdatedTimestamp@ that was previously set+-- up.+--+-- 'sourceName', 'getProfileObjectTypeTemplateResponse_sourceName' - The name of the source of the object template.+--+-- 'sourceObject', 'getProfileObjectTypeTemplateResponse_sourceObject' - The source of the object template.+--+-- 'templateId', 'getProfileObjectTypeTemplateResponse_templateId' - A unique identifier for the object template.+--+-- 'httpStatus', 'getProfileObjectTypeTemplateResponse_httpStatus' - The response's http status code.+newGetProfileObjectTypeTemplateResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetProfileObjectTypeTemplateResponse+newGetProfileObjectTypeTemplateResponse pHttpStatus_ =+  GetProfileObjectTypeTemplateResponse'+    { allowProfileCreation =+        Prelude.Nothing,+      fields = Prelude.Nothing,+      keys = Prelude.Nothing,+      sourceLastUpdatedTimestampFormat =+        Prelude.Nothing,+      sourceName = Prelude.Nothing,+      sourceObject = Prelude.Nothing,+      templateId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Indicates whether a profile should be created when data is received if+-- one doesn’t exist for an object of this type. The default is @FALSE@. If+-- the AllowProfileCreation flag is set to @FALSE@, then the service tries+-- to fetch a standard profile and associate this object with the profile.+-- If it is set to @TRUE@, and if no match is found, then the service+-- creates a new standard profile.+getProfileObjectTypeTemplateResponse_allowProfileCreation :: Lens.Lens' GetProfileObjectTypeTemplateResponse (Prelude.Maybe Prelude.Bool)+getProfileObjectTypeTemplateResponse_allowProfileCreation = Lens.lens (\GetProfileObjectTypeTemplateResponse' {allowProfileCreation} -> allowProfileCreation) (\s@GetProfileObjectTypeTemplateResponse' {} a -> s {allowProfileCreation = a} :: GetProfileObjectTypeTemplateResponse)++-- | A map of the name and ObjectType field.+getProfileObjectTypeTemplateResponse_fields :: Lens.Lens' GetProfileObjectTypeTemplateResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text ObjectTypeField))+getProfileObjectTypeTemplateResponse_fields = Lens.lens (\GetProfileObjectTypeTemplateResponse' {fields} -> fields) (\s@GetProfileObjectTypeTemplateResponse' {} a -> s {fields = a} :: GetProfileObjectTypeTemplateResponse) Prelude.. Lens.mapping Lens.coerced++-- | A list of unique keys that can be used to map data to the profile.+getProfileObjectTypeTemplateResponse_keys :: Lens.Lens' GetProfileObjectTypeTemplateResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text [ObjectTypeKey]))+getProfileObjectTypeTemplateResponse_keys = Lens.lens (\GetProfileObjectTypeTemplateResponse' {keys} -> keys) (\s@GetProfileObjectTypeTemplateResponse' {} a -> s {keys = a} :: GetProfileObjectTypeTemplateResponse) Prelude.. Lens.mapping Lens.coerced++-- | The format of your @sourceLastUpdatedTimestamp@ that was previously set+-- up.+getProfileObjectTypeTemplateResponse_sourceLastUpdatedTimestampFormat :: Lens.Lens' GetProfileObjectTypeTemplateResponse (Prelude.Maybe Prelude.Text)+getProfileObjectTypeTemplateResponse_sourceLastUpdatedTimestampFormat = Lens.lens (\GetProfileObjectTypeTemplateResponse' {sourceLastUpdatedTimestampFormat} -> sourceLastUpdatedTimestampFormat) (\s@GetProfileObjectTypeTemplateResponse' {} a -> s {sourceLastUpdatedTimestampFormat = a} :: GetProfileObjectTypeTemplateResponse)++-- | The name of the source of the object template.+getProfileObjectTypeTemplateResponse_sourceName :: Lens.Lens' GetProfileObjectTypeTemplateResponse (Prelude.Maybe Prelude.Text)+getProfileObjectTypeTemplateResponse_sourceName = Lens.lens (\GetProfileObjectTypeTemplateResponse' {sourceName} -> sourceName) (\s@GetProfileObjectTypeTemplateResponse' {} a -> s {sourceName = a} :: GetProfileObjectTypeTemplateResponse)++-- | The source of the object template.+getProfileObjectTypeTemplateResponse_sourceObject :: Lens.Lens' GetProfileObjectTypeTemplateResponse (Prelude.Maybe Prelude.Text)+getProfileObjectTypeTemplateResponse_sourceObject = Lens.lens (\GetProfileObjectTypeTemplateResponse' {sourceObject} -> sourceObject) (\s@GetProfileObjectTypeTemplateResponse' {} a -> s {sourceObject = a} :: GetProfileObjectTypeTemplateResponse)++-- | A unique identifier for the object template.+getProfileObjectTypeTemplateResponse_templateId :: Lens.Lens' GetProfileObjectTypeTemplateResponse (Prelude.Maybe Prelude.Text)+getProfileObjectTypeTemplateResponse_templateId = Lens.lens (\GetProfileObjectTypeTemplateResponse' {templateId} -> templateId) (\s@GetProfileObjectTypeTemplateResponse' {} a -> s {templateId = a} :: GetProfileObjectTypeTemplateResponse)++-- | The response's http status code.+getProfileObjectTypeTemplateResponse_httpStatus :: Lens.Lens' GetProfileObjectTypeTemplateResponse Prelude.Int+getProfileObjectTypeTemplateResponse_httpStatus = Lens.lens (\GetProfileObjectTypeTemplateResponse' {httpStatus} -> httpStatus) (\s@GetProfileObjectTypeTemplateResponse' {} a -> s {httpStatus = a} :: GetProfileObjectTypeTemplateResponse)++instance+  Prelude.NFData+    GetProfileObjectTypeTemplateResponse+  where+  rnf GetProfileObjectTypeTemplateResponse' {..} =+    Prelude.rnf allowProfileCreation+      `Prelude.seq` Prelude.rnf fields+      `Prelude.seq` Prelude.rnf keys+      `Prelude.seq` Prelude.rnf sourceLastUpdatedTimestampFormat+      `Prelude.seq` Prelude.rnf sourceName+      `Prelude.seq` Prelude.rnf sourceObject+      `Prelude.seq` Prelude.rnf templateId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/CustomerProfiles/GetWorkflow.hs view
@@ -0,0 +1,262 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.GetWorkflow+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Get details of specified workflow.+module Amazonka.CustomerProfiles.GetWorkflow+  ( -- * Creating a Request+    GetWorkflow (..),+    newGetWorkflow,++    -- * Request Lenses+    getWorkflow_domainName,+    getWorkflow_workflowId,++    -- * Destructuring the Response+    GetWorkflowResponse (..),+    newGetWorkflowResponse,++    -- * Response Lenses+    getWorkflowResponse_attributes,+    getWorkflowResponse_errorDescription,+    getWorkflowResponse_lastUpdatedAt,+    getWorkflowResponse_metrics,+    getWorkflowResponse_startDate,+    getWorkflowResponse_status,+    getWorkflowResponse_workflowId,+    getWorkflowResponse_workflowType,+    getWorkflowResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetWorkflow' smart constructor.+data GetWorkflow = GetWorkflow'+  { -- | The unique name of the domain.+    domainName :: Prelude.Text,+    -- | Unique identifier for the workflow.+    workflowId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetWorkflow' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'domainName', 'getWorkflow_domainName' - The unique name of the domain.+--+-- 'workflowId', 'getWorkflow_workflowId' - Unique identifier for the workflow.+newGetWorkflow ::+  -- | 'domainName'+  Prelude.Text ->+  -- | 'workflowId'+  Prelude.Text ->+  GetWorkflow+newGetWorkflow pDomainName_ pWorkflowId_ =+  GetWorkflow'+    { domainName = pDomainName_,+      workflowId = pWorkflowId_+    }++-- | The unique name of the domain.+getWorkflow_domainName :: Lens.Lens' GetWorkflow Prelude.Text+getWorkflow_domainName = Lens.lens (\GetWorkflow' {domainName} -> domainName) (\s@GetWorkflow' {} a -> s {domainName = a} :: GetWorkflow)++-- | Unique identifier for the workflow.+getWorkflow_workflowId :: Lens.Lens' GetWorkflow Prelude.Text+getWorkflow_workflowId = Lens.lens (\GetWorkflow' {workflowId} -> workflowId) (\s@GetWorkflow' {} a -> s {workflowId = a} :: GetWorkflow)++instance Core.AWSRequest GetWorkflow where+  type AWSResponse GetWorkflow = GetWorkflowResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetWorkflowResponse'+            Prelude.<$> (x Data..?> "Attributes")+            Prelude.<*> (x Data..?> "ErrorDescription")+            Prelude.<*> (x Data..?> "LastUpdatedAt")+            Prelude.<*> (x Data..?> "Metrics")+            Prelude.<*> (x Data..?> "StartDate")+            Prelude.<*> (x Data..?> "Status")+            Prelude.<*> (x Data..?> "WorkflowId")+            Prelude.<*> (x Data..?> "WorkflowType")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetWorkflow where+  hashWithSalt _salt GetWorkflow' {..} =+    _salt+      `Prelude.hashWithSalt` domainName+      `Prelude.hashWithSalt` workflowId++instance Prelude.NFData GetWorkflow where+  rnf GetWorkflow' {..} =+    Prelude.rnf domainName+      `Prelude.seq` Prelude.rnf workflowId++instance Data.ToHeaders GetWorkflow where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetWorkflow where+  toPath GetWorkflow' {..} =+    Prelude.mconcat+      [ "/domains/",+        Data.toBS domainName,+        "/workflows/",+        Data.toBS workflowId+      ]++instance Data.ToQuery GetWorkflow where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetWorkflowResponse' smart constructor.+data GetWorkflowResponse = GetWorkflowResponse'+  { -- | Attributes provided for workflow execution.+    attributes :: Prelude.Maybe WorkflowAttributes,+    -- | Workflow error messages during execution (if any).+    errorDescription :: Prelude.Maybe Prelude.Text,+    -- | The timestamp that represents when workflow execution last updated.+    lastUpdatedAt :: Prelude.Maybe Data.POSIX,+    -- | Workflow specific execution metrics.+    metrics :: Prelude.Maybe WorkflowMetrics,+    -- | The timestamp that represents when workflow execution started.+    startDate :: Prelude.Maybe Data.POSIX,+    -- | Status of workflow execution.+    status :: Prelude.Maybe Status,+    -- | Unique identifier for the workflow.+    workflowId :: Prelude.Maybe Prelude.Text,+    -- | The type of workflow. The only supported value is APPFLOW_INTEGRATION.+    workflowType :: Prelude.Maybe WorkflowType,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetWorkflowResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'attributes', 'getWorkflowResponse_attributes' - Attributes provided for workflow execution.+--+-- 'errorDescription', 'getWorkflowResponse_errorDescription' - Workflow error messages during execution (if any).+--+-- 'lastUpdatedAt', 'getWorkflowResponse_lastUpdatedAt' - The timestamp that represents when workflow execution last updated.+--+-- 'metrics', 'getWorkflowResponse_metrics' - Workflow specific execution metrics.+--+-- 'startDate', 'getWorkflowResponse_startDate' - The timestamp that represents when workflow execution started.+--+-- 'status', 'getWorkflowResponse_status' - Status of workflow execution.+--+-- 'workflowId', 'getWorkflowResponse_workflowId' - Unique identifier for the workflow.+--+-- 'workflowType', 'getWorkflowResponse_workflowType' - The type of workflow. The only supported value is APPFLOW_INTEGRATION.+--+-- 'httpStatus', 'getWorkflowResponse_httpStatus' - The response's http status code.+newGetWorkflowResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetWorkflowResponse+newGetWorkflowResponse pHttpStatus_ =+  GetWorkflowResponse'+    { attributes = Prelude.Nothing,+      errorDescription = Prelude.Nothing,+      lastUpdatedAt = Prelude.Nothing,+      metrics = Prelude.Nothing,+      startDate = Prelude.Nothing,+      status = Prelude.Nothing,+      workflowId = Prelude.Nothing,+      workflowType = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Attributes provided for workflow execution.+getWorkflowResponse_attributes :: Lens.Lens' GetWorkflowResponse (Prelude.Maybe WorkflowAttributes)+getWorkflowResponse_attributes = Lens.lens (\GetWorkflowResponse' {attributes} -> attributes) (\s@GetWorkflowResponse' {} a -> s {attributes = a} :: GetWorkflowResponse)++-- | Workflow error messages during execution (if any).+getWorkflowResponse_errorDescription :: Lens.Lens' GetWorkflowResponse (Prelude.Maybe Prelude.Text)+getWorkflowResponse_errorDescription = Lens.lens (\GetWorkflowResponse' {errorDescription} -> errorDescription) (\s@GetWorkflowResponse' {} a -> s {errorDescription = a} :: GetWorkflowResponse)++-- | The timestamp that represents when workflow execution last updated.+getWorkflowResponse_lastUpdatedAt :: Lens.Lens' GetWorkflowResponse (Prelude.Maybe Prelude.UTCTime)+getWorkflowResponse_lastUpdatedAt = Lens.lens (\GetWorkflowResponse' {lastUpdatedAt} -> lastUpdatedAt) (\s@GetWorkflowResponse' {} a -> s {lastUpdatedAt = a} :: GetWorkflowResponse) Prelude.. Lens.mapping Data._Time++-- | Workflow specific execution metrics.+getWorkflowResponse_metrics :: Lens.Lens' GetWorkflowResponse (Prelude.Maybe WorkflowMetrics)+getWorkflowResponse_metrics = Lens.lens (\GetWorkflowResponse' {metrics} -> metrics) (\s@GetWorkflowResponse' {} a -> s {metrics = a} :: GetWorkflowResponse)++-- | The timestamp that represents when workflow execution started.+getWorkflowResponse_startDate :: Lens.Lens' GetWorkflowResponse (Prelude.Maybe Prelude.UTCTime)+getWorkflowResponse_startDate = Lens.lens (\GetWorkflowResponse' {startDate} -> startDate) (\s@GetWorkflowResponse' {} a -> s {startDate = a} :: GetWorkflowResponse) Prelude.. Lens.mapping Data._Time++-- | Status of workflow execution.+getWorkflowResponse_status :: Lens.Lens' GetWorkflowResponse (Prelude.Maybe Status)+getWorkflowResponse_status = Lens.lens (\GetWorkflowResponse' {status} -> status) (\s@GetWorkflowResponse' {} a -> s {status = a} :: GetWorkflowResponse)++-- | Unique identifier for the workflow.+getWorkflowResponse_workflowId :: Lens.Lens' GetWorkflowResponse (Prelude.Maybe Prelude.Text)+getWorkflowResponse_workflowId = Lens.lens (\GetWorkflowResponse' {workflowId} -> workflowId) (\s@GetWorkflowResponse' {} a -> s {workflowId = a} :: GetWorkflowResponse)++-- | The type of workflow. The only supported value is APPFLOW_INTEGRATION.+getWorkflowResponse_workflowType :: Lens.Lens' GetWorkflowResponse (Prelude.Maybe WorkflowType)+getWorkflowResponse_workflowType = Lens.lens (\GetWorkflowResponse' {workflowType} -> workflowType) (\s@GetWorkflowResponse' {} a -> s {workflowType = a} :: GetWorkflowResponse)++-- | The response's http status code.+getWorkflowResponse_httpStatus :: Lens.Lens' GetWorkflowResponse Prelude.Int+getWorkflowResponse_httpStatus = Lens.lens (\GetWorkflowResponse' {httpStatus} -> httpStatus) (\s@GetWorkflowResponse' {} a -> s {httpStatus = a} :: GetWorkflowResponse)++instance Prelude.NFData GetWorkflowResponse where+  rnf GetWorkflowResponse' {..} =+    Prelude.rnf attributes+      `Prelude.seq` Prelude.rnf errorDescription+      `Prelude.seq` Prelude.rnf lastUpdatedAt+      `Prelude.seq` Prelude.rnf metrics+      `Prelude.seq` Prelude.rnf startDate+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf workflowId+      `Prelude.seq` Prelude.rnf workflowType+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/CustomerProfiles/GetWorkflowSteps.hs view
@@ -0,0 +1,254 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.GetWorkflowSteps+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Get granular list of steps in workflow.+module Amazonka.CustomerProfiles.GetWorkflowSteps+  ( -- * Creating a Request+    GetWorkflowSteps (..),+    newGetWorkflowSteps,++    -- * Request Lenses+    getWorkflowSteps_maxResults,+    getWorkflowSteps_nextToken,+    getWorkflowSteps_domainName,+    getWorkflowSteps_workflowId,++    -- * Destructuring the Response+    GetWorkflowStepsResponse (..),+    newGetWorkflowStepsResponse,++    -- * Response Lenses+    getWorkflowStepsResponse_items,+    getWorkflowStepsResponse_nextToken,+    getWorkflowStepsResponse_workflowId,+    getWorkflowStepsResponse_workflowType,+    getWorkflowStepsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetWorkflowSteps' smart constructor.+data GetWorkflowSteps = GetWorkflowSteps'+  { -- | The maximum number of results to return per page.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token for the next set of results. Use the value returned in the+    -- previous response in the next request to retrieve the next set of+    -- results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The unique name of the domain.+    domainName :: Prelude.Text,+    -- | Unique identifier for the workflow.+    workflowId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetWorkflowSteps' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getWorkflowSteps_maxResults' - The maximum number of results to return per page.+--+-- 'nextToken', 'getWorkflowSteps_nextToken' - The token for the next set of results. Use the value returned in the+-- previous response in the next request to retrieve the next set of+-- results.+--+-- 'domainName', 'getWorkflowSteps_domainName' - The unique name of the domain.+--+-- 'workflowId', 'getWorkflowSteps_workflowId' - Unique identifier for the workflow.+newGetWorkflowSteps ::+  -- | 'domainName'+  Prelude.Text ->+  -- | 'workflowId'+  Prelude.Text ->+  GetWorkflowSteps+newGetWorkflowSteps pDomainName_ pWorkflowId_ =+  GetWorkflowSteps'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      domainName = pDomainName_,+      workflowId = pWorkflowId_+    }++-- | The maximum number of results to return per page.+getWorkflowSteps_maxResults :: Lens.Lens' GetWorkflowSteps (Prelude.Maybe Prelude.Natural)+getWorkflowSteps_maxResults = Lens.lens (\GetWorkflowSteps' {maxResults} -> maxResults) (\s@GetWorkflowSteps' {} a -> s {maxResults = a} :: GetWorkflowSteps)++-- | The token for the next set of results. Use the value returned in the+-- previous response in the next request to retrieve the next set of+-- results.+getWorkflowSteps_nextToken :: Lens.Lens' GetWorkflowSteps (Prelude.Maybe Prelude.Text)+getWorkflowSteps_nextToken = Lens.lens (\GetWorkflowSteps' {nextToken} -> nextToken) (\s@GetWorkflowSteps' {} a -> s {nextToken = a} :: GetWorkflowSteps)++-- | The unique name of the domain.+getWorkflowSteps_domainName :: Lens.Lens' GetWorkflowSteps Prelude.Text+getWorkflowSteps_domainName = Lens.lens (\GetWorkflowSteps' {domainName} -> domainName) (\s@GetWorkflowSteps' {} a -> s {domainName = a} :: GetWorkflowSteps)++-- | Unique identifier for the workflow.+getWorkflowSteps_workflowId :: Lens.Lens' GetWorkflowSteps Prelude.Text+getWorkflowSteps_workflowId = Lens.lens (\GetWorkflowSteps' {workflowId} -> workflowId) (\s@GetWorkflowSteps' {} a -> s {workflowId = a} :: GetWorkflowSteps)++instance Core.AWSRequest GetWorkflowSteps where+  type+    AWSResponse GetWorkflowSteps =+      GetWorkflowStepsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetWorkflowStepsResponse'+            Prelude.<$> (x Data..?> "Items" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (x Data..?> "WorkflowId")+            Prelude.<*> (x Data..?> "WorkflowType")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetWorkflowSteps where+  hashWithSalt _salt GetWorkflowSteps' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` domainName+      `Prelude.hashWithSalt` workflowId++instance Prelude.NFData GetWorkflowSteps where+  rnf GetWorkflowSteps' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf domainName+      `Prelude.seq` Prelude.rnf workflowId++instance Data.ToHeaders GetWorkflowSteps where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetWorkflowSteps where+  toPath GetWorkflowSteps' {..} =+    Prelude.mconcat+      [ "/domains/",+        Data.toBS domainName,+        "/workflows/",+        Data.toBS workflowId,+        "/steps"+      ]++instance Data.ToQuery GetWorkflowSteps where+  toQuery GetWorkflowSteps' {..} =+    Prelude.mconcat+      [ "max-results" Data.=: maxResults,+        "next-token" Data.=: nextToken+      ]++-- | /See:/ 'newGetWorkflowStepsResponse' smart constructor.+data GetWorkflowStepsResponse = GetWorkflowStepsResponse'+  { -- | List containing workflow step details.+    items :: Prelude.Maybe [WorkflowStepItem],+    -- | If there are additional results, this is the token for the next set of+    -- results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | Unique identifier for the workflow.+    workflowId :: Prelude.Maybe Prelude.Text,+    -- | The type of workflow. The only supported value is APPFLOW_INTEGRATION.+    workflowType :: Prelude.Maybe WorkflowType,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetWorkflowStepsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'items', 'getWorkflowStepsResponse_items' - List containing workflow step details.+--+-- 'nextToken', 'getWorkflowStepsResponse_nextToken' - If there are additional results, this is the token for the next set of+-- results.+--+-- 'workflowId', 'getWorkflowStepsResponse_workflowId' - Unique identifier for the workflow.+--+-- 'workflowType', 'getWorkflowStepsResponse_workflowType' - The type of workflow. The only supported value is APPFLOW_INTEGRATION.+--+-- 'httpStatus', 'getWorkflowStepsResponse_httpStatus' - The response's http status code.+newGetWorkflowStepsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetWorkflowStepsResponse+newGetWorkflowStepsResponse pHttpStatus_ =+  GetWorkflowStepsResponse'+    { items = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      workflowId = Prelude.Nothing,+      workflowType = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | List containing workflow step details.+getWorkflowStepsResponse_items :: Lens.Lens' GetWorkflowStepsResponse (Prelude.Maybe [WorkflowStepItem])+getWorkflowStepsResponse_items = Lens.lens (\GetWorkflowStepsResponse' {items} -> items) (\s@GetWorkflowStepsResponse' {} a -> s {items = a} :: GetWorkflowStepsResponse) Prelude.. Lens.mapping Lens.coerced++-- | If there are additional results, this is the token for the next set of+-- results.+getWorkflowStepsResponse_nextToken :: Lens.Lens' GetWorkflowStepsResponse (Prelude.Maybe Prelude.Text)+getWorkflowStepsResponse_nextToken = Lens.lens (\GetWorkflowStepsResponse' {nextToken} -> nextToken) (\s@GetWorkflowStepsResponse' {} a -> s {nextToken = a} :: GetWorkflowStepsResponse)++-- | Unique identifier for the workflow.+getWorkflowStepsResponse_workflowId :: Lens.Lens' GetWorkflowStepsResponse (Prelude.Maybe Prelude.Text)+getWorkflowStepsResponse_workflowId = Lens.lens (\GetWorkflowStepsResponse' {workflowId} -> workflowId) (\s@GetWorkflowStepsResponse' {} a -> s {workflowId = a} :: GetWorkflowStepsResponse)++-- | The type of workflow. The only supported value is APPFLOW_INTEGRATION.+getWorkflowStepsResponse_workflowType :: Lens.Lens' GetWorkflowStepsResponse (Prelude.Maybe WorkflowType)+getWorkflowStepsResponse_workflowType = Lens.lens (\GetWorkflowStepsResponse' {workflowType} -> workflowType) (\s@GetWorkflowStepsResponse' {} a -> s {workflowType = a} :: GetWorkflowStepsResponse)++-- | The response's http status code.+getWorkflowStepsResponse_httpStatus :: Lens.Lens' GetWorkflowStepsResponse Prelude.Int+getWorkflowStepsResponse_httpStatus = Lens.lens (\GetWorkflowStepsResponse' {httpStatus} -> httpStatus) (\s@GetWorkflowStepsResponse' {} a -> s {httpStatus = a} :: GetWorkflowStepsResponse)++instance Prelude.NFData GetWorkflowStepsResponse where+  rnf GetWorkflowStepsResponse' {..} =+    Prelude.rnf items+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf workflowId+      `Prelude.seq` Prelude.rnf workflowType+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/CustomerProfiles/Lens.hs view
@@ -0,0 +1,854 @@+{-# 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.CustomerProfiles.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.CustomerProfiles.Lens+  ( -- * Operations++    -- ** AddProfileKey+    addProfileKey_profileId,+    addProfileKey_keyName,+    addProfileKey_values,+    addProfileKey_domainName,+    addProfileKeyResponse_keyName,+    addProfileKeyResponse_values,+    addProfileKeyResponse_httpStatus,++    -- ** CreateDomain+    createDomain_deadLetterQueueUrl,+    createDomain_defaultEncryptionKey,+    createDomain_matching,+    createDomain_tags,+    createDomain_domainName,+    createDomain_defaultExpirationDays,+    createDomainResponse_deadLetterQueueUrl,+    createDomainResponse_defaultEncryptionKey,+    createDomainResponse_matching,+    createDomainResponse_tags,+    createDomainResponse_httpStatus,+    createDomainResponse_domainName,+    createDomainResponse_defaultExpirationDays,+    createDomainResponse_createdAt,+    createDomainResponse_lastUpdatedAt,++    -- ** CreateIntegrationWorkflow+    createIntegrationWorkflow_tags,+    createIntegrationWorkflow_domainName,+    createIntegrationWorkflow_workflowType,+    createIntegrationWorkflow_integrationConfig,+    createIntegrationWorkflow_objectTypeName,+    createIntegrationWorkflow_roleArn,+    createIntegrationWorkflowResponse_httpStatus,+    createIntegrationWorkflowResponse_workflowId,+    createIntegrationWorkflowResponse_message,++    -- ** CreateProfile+    createProfile_accountNumber,+    createProfile_additionalInformation,+    createProfile_address,+    createProfile_attributes,+    createProfile_billingAddress,+    createProfile_birthDate,+    createProfile_businessEmailAddress,+    createProfile_businessName,+    createProfile_businessPhoneNumber,+    createProfile_emailAddress,+    createProfile_firstName,+    createProfile_gender,+    createProfile_genderString,+    createProfile_homePhoneNumber,+    createProfile_lastName,+    createProfile_mailingAddress,+    createProfile_middleName,+    createProfile_mobilePhoneNumber,+    createProfile_partyType,+    createProfile_partyTypeString,+    createProfile_personalEmailAddress,+    createProfile_phoneNumber,+    createProfile_shippingAddress,+    createProfile_domainName,+    createProfileResponse_httpStatus,+    createProfileResponse_profileId,++    -- ** DeleteDomain+    deleteDomain_domainName,+    deleteDomainResponse_httpStatus,+    deleteDomainResponse_message,++    -- ** DeleteIntegration+    deleteIntegration_domainName,+    deleteIntegration_uri,+    deleteIntegrationResponse_httpStatus,+    deleteIntegrationResponse_message,++    -- ** DeleteProfile+    deleteProfile_profileId,+    deleteProfile_domainName,+    deleteProfileResponse_message,+    deleteProfileResponse_httpStatus,++    -- ** DeleteProfileKey+    deleteProfileKey_profileId,+    deleteProfileKey_keyName,+    deleteProfileKey_values,+    deleteProfileKey_domainName,+    deleteProfileKeyResponse_message,+    deleteProfileKeyResponse_httpStatus,++    -- ** DeleteProfileObject+    deleteProfileObject_profileId,+    deleteProfileObject_profileObjectUniqueKey,+    deleteProfileObject_objectTypeName,+    deleteProfileObject_domainName,+    deleteProfileObjectResponse_message,+    deleteProfileObjectResponse_httpStatus,++    -- ** DeleteProfileObjectType+    deleteProfileObjectType_domainName,+    deleteProfileObjectType_objectTypeName,+    deleteProfileObjectTypeResponse_httpStatus,+    deleteProfileObjectTypeResponse_message,++    -- ** DeleteWorkflow+    deleteWorkflow_domainName,+    deleteWorkflow_workflowId,+    deleteWorkflowResponse_httpStatus,++    -- ** GetAutoMergingPreview+    getAutoMergingPreview_minAllowedConfidenceScoreForMerging,+    getAutoMergingPreview_domainName,+    getAutoMergingPreview_consolidation,+    getAutoMergingPreview_conflictResolution,+    getAutoMergingPreviewResponse_numberOfMatchesInSample,+    getAutoMergingPreviewResponse_numberOfProfilesInSample,+    getAutoMergingPreviewResponse_numberOfProfilesWillBeMerged,+    getAutoMergingPreviewResponse_httpStatus,+    getAutoMergingPreviewResponse_domainName,++    -- ** GetDomain+    getDomain_domainName,+    getDomainResponse_deadLetterQueueUrl,+    getDomainResponse_defaultEncryptionKey,+    getDomainResponse_defaultExpirationDays,+    getDomainResponse_matching,+    getDomainResponse_stats,+    getDomainResponse_tags,+    getDomainResponse_httpStatus,+    getDomainResponse_domainName,+    getDomainResponse_createdAt,+    getDomainResponse_lastUpdatedAt,++    -- ** GetIdentityResolutionJob+    getIdentityResolutionJob_domainName,+    getIdentityResolutionJob_jobId,+    getIdentityResolutionJobResponse_autoMerging,+    getIdentityResolutionJobResponse_domainName,+    getIdentityResolutionJobResponse_exportingLocation,+    getIdentityResolutionJobResponse_jobEndTime,+    getIdentityResolutionJobResponse_jobExpirationTime,+    getIdentityResolutionJobResponse_jobId,+    getIdentityResolutionJobResponse_jobStartTime,+    getIdentityResolutionJobResponse_jobStats,+    getIdentityResolutionJobResponse_lastUpdatedAt,+    getIdentityResolutionJobResponse_message,+    getIdentityResolutionJobResponse_status,+    getIdentityResolutionJobResponse_httpStatus,++    -- ** GetIntegration+    getIntegration_domainName,+    getIntegration_uri,+    getIntegrationResponse_isUnstructured,+    getIntegrationResponse_objectTypeName,+    getIntegrationResponse_objectTypeNames,+    getIntegrationResponse_tags,+    getIntegrationResponse_workflowId,+    getIntegrationResponse_httpStatus,+    getIntegrationResponse_domainName,+    getIntegrationResponse_uri,+    getIntegrationResponse_createdAt,+    getIntegrationResponse_lastUpdatedAt,++    -- ** GetMatches+    getMatches_maxResults,+    getMatches_nextToken,+    getMatches_domainName,+    getMatchesResponse_matchGenerationDate,+    getMatchesResponse_matches,+    getMatchesResponse_nextToken,+    getMatchesResponse_potentialMatches,+    getMatchesResponse_httpStatus,++    -- ** GetProfileObjectType+    getProfileObjectType_domainName,+    getProfileObjectType_objectTypeName,+    getProfileObjectTypeResponse_allowProfileCreation,+    getProfileObjectTypeResponse_createdAt,+    getProfileObjectTypeResponse_encryptionKey,+    getProfileObjectTypeResponse_expirationDays,+    getProfileObjectTypeResponse_fields,+    getProfileObjectTypeResponse_keys,+    getProfileObjectTypeResponse_lastUpdatedAt,+    getProfileObjectTypeResponse_sourceLastUpdatedTimestampFormat,+    getProfileObjectTypeResponse_tags,+    getProfileObjectTypeResponse_templateId,+    getProfileObjectTypeResponse_httpStatus,+    getProfileObjectTypeResponse_objectTypeName,+    getProfileObjectTypeResponse_description,++    -- ** GetProfileObjectTypeTemplate+    getProfileObjectTypeTemplate_templateId,+    getProfileObjectTypeTemplateResponse_allowProfileCreation,+    getProfileObjectTypeTemplateResponse_fields,+    getProfileObjectTypeTemplateResponse_keys,+    getProfileObjectTypeTemplateResponse_sourceLastUpdatedTimestampFormat,+    getProfileObjectTypeTemplateResponse_sourceName,+    getProfileObjectTypeTemplateResponse_sourceObject,+    getProfileObjectTypeTemplateResponse_templateId,+    getProfileObjectTypeTemplateResponse_httpStatus,++    -- ** GetWorkflow+    getWorkflow_domainName,+    getWorkflow_workflowId,+    getWorkflowResponse_attributes,+    getWorkflowResponse_errorDescription,+    getWorkflowResponse_lastUpdatedAt,+    getWorkflowResponse_metrics,+    getWorkflowResponse_startDate,+    getWorkflowResponse_status,+    getWorkflowResponse_workflowId,+    getWorkflowResponse_workflowType,+    getWorkflowResponse_httpStatus,++    -- ** GetWorkflowSteps+    getWorkflowSteps_maxResults,+    getWorkflowSteps_nextToken,+    getWorkflowSteps_domainName,+    getWorkflowSteps_workflowId,+    getWorkflowStepsResponse_items,+    getWorkflowStepsResponse_nextToken,+    getWorkflowStepsResponse_workflowId,+    getWorkflowStepsResponse_workflowType,+    getWorkflowStepsResponse_httpStatus,++    -- ** ListAccountIntegrations+    listAccountIntegrations_includeHidden,+    listAccountIntegrations_maxResults,+    listAccountIntegrations_nextToken,+    listAccountIntegrations_uri,+    listAccountIntegrationsResponse_items,+    listAccountIntegrationsResponse_nextToken,+    listAccountIntegrationsResponse_httpStatus,++    -- ** ListDomains+    listDomains_maxResults,+    listDomains_nextToken,+    listDomainsResponse_items,+    listDomainsResponse_nextToken,+    listDomainsResponse_httpStatus,++    -- ** ListIdentityResolutionJobs+    listIdentityResolutionJobs_maxResults,+    listIdentityResolutionJobs_nextToken,+    listIdentityResolutionJobs_domainName,+    listIdentityResolutionJobsResponse_identityResolutionJobsList,+    listIdentityResolutionJobsResponse_nextToken,+    listIdentityResolutionJobsResponse_httpStatus,++    -- ** ListIntegrations+    listIntegrations_includeHidden,+    listIntegrations_maxResults,+    listIntegrations_nextToken,+    listIntegrations_domainName,+    listIntegrationsResponse_items,+    listIntegrationsResponse_nextToken,+    listIntegrationsResponse_httpStatus,++    -- ** ListProfileObjectTypeTemplates+    listProfileObjectTypeTemplates_maxResults,+    listProfileObjectTypeTemplates_nextToken,+    listProfileObjectTypeTemplatesResponse_items,+    listProfileObjectTypeTemplatesResponse_nextToken,+    listProfileObjectTypeTemplatesResponse_httpStatus,++    -- ** ListProfileObjectTypes+    listProfileObjectTypes_maxResults,+    listProfileObjectTypes_nextToken,+    listProfileObjectTypes_domainName,+    listProfileObjectTypesResponse_items,+    listProfileObjectTypesResponse_nextToken,+    listProfileObjectTypesResponse_httpStatus,++    -- ** ListProfileObjects+    listProfileObjects_maxResults,+    listProfileObjects_nextToken,+    listProfileObjects_objectFilter,+    listProfileObjects_domainName,+    listProfileObjects_objectTypeName,+    listProfileObjects_profileId,+    listProfileObjectsResponse_items,+    listProfileObjectsResponse_nextToken,+    listProfileObjectsResponse_httpStatus,++    -- ** ListTagsForResource+    listTagsForResource_resourceArn,+    listTagsForResourceResponse_tags,+    listTagsForResourceResponse_httpStatus,++    -- ** ListWorkflows+    listWorkflows_maxResults,+    listWorkflows_nextToken,+    listWorkflows_queryEndDate,+    listWorkflows_queryStartDate,+    listWorkflows_status,+    listWorkflows_workflowType,+    listWorkflows_domainName,+    listWorkflowsResponse_items,+    listWorkflowsResponse_nextToken,+    listWorkflowsResponse_httpStatus,++    -- ** MergeProfiles+    mergeProfiles_fieldSourceProfileIds,+    mergeProfiles_domainName,+    mergeProfiles_mainProfileId,+    mergeProfiles_profileIdsToBeMerged,+    mergeProfilesResponse_message,+    mergeProfilesResponse_httpStatus,++    -- ** PutIntegration+    putIntegration_flowDefinition,+    putIntegration_objectTypeName,+    putIntegration_objectTypeNames,+    putIntegration_tags,+    putIntegration_uri,+    putIntegration_domainName,+    putIntegrationResponse_isUnstructured,+    putIntegrationResponse_objectTypeName,+    putIntegrationResponse_objectTypeNames,+    putIntegrationResponse_tags,+    putIntegrationResponse_workflowId,+    putIntegrationResponse_httpStatus,+    putIntegrationResponse_domainName,+    putIntegrationResponse_uri,+    putIntegrationResponse_createdAt,+    putIntegrationResponse_lastUpdatedAt,++    -- ** PutProfileObject+    putProfileObject_objectTypeName,+    putProfileObject_object,+    putProfileObject_domainName,+    putProfileObjectResponse_profileObjectUniqueKey,+    putProfileObjectResponse_httpStatus,++    -- ** PutProfileObjectType+    putProfileObjectType_allowProfileCreation,+    putProfileObjectType_encryptionKey,+    putProfileObjectType_expirationDays,+    putProfileObjectType_fields,+    putProfileObjectType_keys,+    putProfileObjectType_sourceLastUpdatedTimestampFormat,+    putProfileObjectType_tags,+    putProfileObjectType_templateId,+    putProfileObjectType_domainName,+    putProfileObjectType_objectTypeName,+    putProfileObjectType_description,+    putProfileObjectTypeResponse_allowProfileCreation,+    putProfileObjectTypeResponse_createdAt,+    putProfileObjectTypeResponse_encryptionKey,+    putProfileObjectTypeResponse_expirationDays,+    putProfileObjectTypeResponse_fields,+    putProfileObjectTypeResponse_keys,+    putProfileObjectTypeResponse_lastUpdatedAt,+    putProfileObjectTypeResponse_sourceLastUpdatedTimestampFormat,+    putProfileObjectTypeResponse_tags,+    putProfileObjectTypeResponse_templateId,+    putProfileObjectTypeResponse_httpStatus,+    putProfileObjectTypeResponse_objectTypeName,+    putProfileObjectTypeResponse_description,++    -- ** SearchProfiles+    searchProfiles_additionalSearchKeys,+    searchProfiles_logicalOperator,+    searchProfiles_maxResults,+    searchProfiles_nextToken,+    searchProfiles_domainName,+    searchProfiles_keyName,+    searchProfiles_values,+    searchProfilesResponse_items,+    searchProfilesResponse_nextToken,+    searchProfilesResponse_httpStatus,++    -- ** TagResource+    tagResource_resourceArn,+    tagResource_tags,+    tagResourceResponse_httpStatus,++    -- ** UntagResource+    untagResource_resourceArn,+    untagResource_tagKeys,+    untagResourceResponse_httpStatus,++    -- ** UpdateDomain+    updateDomain_deadLetterQueueUrl,+    updateDomain_defaultEncryptionKey,+    updateDomain_defaultExpirationDays,+    updateDomain_matching,+    updateDomain_tags,+    updateDomain_domainName,+    updateDomainResponse_deadLetterQueueUrl,+    updateDomainResponse_defaultEncryptionKey,+    updateDomainResponse_defaultExpirationDays,+    updateDomainResponse_matching,+    updateDomainResponse_tags,+    updateDomainResponse_httpStatus,+    updateDomainResponse_domainName,+    updateDomainResponse_createdAt,+    updateDomainResponse_lastUpdatedAt,++    -- ** UpdateProfile+    updateProfile_accountNumber,+    updateProfile_additionalInformation,+    updateProfile_address,+    updateProfile_attributes,+    updateProfile_billingAddress,+    updateProfile_birthDate,+    updateProfile_businessEmailAddress,+    updateProfile_businessName,+    updateProfile_businessPhoneNumber,+    updateProfile_emailAddress,+    updateProfile_firstName,+    updateProfile_gender,+    updateProfile_genderString,+    updateProfile_homePhoneNumber,+    updateProfile_lastName,+    updateProfile_mailingAddress,+    updateProfile_middleName,+    updateProfile_mobilePhoneNumber,+    updateProfile_partyType,+    updateProfile_partyTypeString,+    updateProfile_personalEmailAddress,+    updateProfile_phoneNumber,+    updateProfile_shippingAddress,+    updateProfile_domainName,+    updateProfile_profileId,+    updateProfileResponse_httpStatus,+    updateProfileResponse_profileId,++    -- * Types++    -- ** AdditionalSearchKey+    additionalSearchKey_keyName,+    additionalSearchKey_values,++    -- ** Address+    address_address1,+    address_address2,+    address_address3,+    address_address4,+    address_city,+    address_country,+    address_county,+    address_postalCode,+    address_province,+    address_state,++    -- ** AppflowIntegration+    appflowIntegration_batches,+    appflowIntegration_flowDefinition,++    -- ** AppflowIntegrationWorkflowAttributes+    appflowIntegrationWorkflowAttributes_roleArn,+    appflowIntegrationWorkflowAttributes_sourceConnectorType,+    appflowIntegrationWorkflowAttributes_connectorProfileName,++    -- ** AppflowIntegrationWorkflowMetrics+    appflowIntegrationWorkflowMetrics_recordsProcessed,+    appflowIntegrationWorkflowMetrics_stepsCompleted,+    appflowIntegrationWorkflowMetrics_totalSteps,++    -- ** AppflowIntegrationWorkflowStep+    appflowIntegrationWorkflowStep_flowName,+    appflowIntegrationWorkflowStep_status,+    appflowIntegrationWorkflowStep_executionMessage,+    appflowIntegrationWorkflowStep_recordsProcessed,+    appflowIntegrationWorkflowStep_batchRecordsStartTime,+    appflowIntegrationWorkflowStep_batchRecordsEndTime,+    appflowIntegrationWorkflowStep_createdAt,+    appflowIntegrationWorkflowStep_lastUpdatedAt,++    -- ** AutoMerging+    autoMerging_conflictResolution,+    autoMerging_consolidation,+    autoMerging_minAllowedConfidenceScoreForMerging,+    autoMerging_enabled,++    -- ** Batch+    batch_startTime,+    batch_endTime,++    -- ** ConflictResolution+    conflictResolution_sourceName,+    conflictResolution_conflictResolvingModel,++    -- ** ConnectorOperator+    connectorOperator_marketo,+    connectorOperator_s3,+    connectorOperator_salesforce,+    connectorOperator_serviceNow,+    connectorOperator_zendesk,++    -- ** Consolidation+    consolidation_matchingAttributesList,++    -- ** DomainStats+    domainStats_meteringProfileCount,+    domainStats_objectCount,+    domainStats_profileCount,+    domainStats_totalSize,++    -- ** ExportingConfig+    exportingConfig_s3Exporting,++    -- ** ExportingLocation+    exportingLocation_s3Exporting,++    -- ** FieldSourceProfileIds+    fieldSourceProfileIds_accountNumber,+    fieldSourceProfileIds_additionalInformation,+    fieldSourceProfileIds_address,+    fieldSourceProfileIds_attributes,+    fieldSourceProfileIds_billingAddress,+    fieldSourceProfileIds_birthDate,+    fieldSourceProfileIds_businessEmailAddress,+    fieldSourceProfileIds_businessName,+    fieldSourceProfileIds_businessPhoneNumber,+    fieldSourceProfileIds_emailAddress,+    fieldSourceProfileIds_firstName,+    fieldSourceProfileIds_gender,+    fieldSourceProfileIds_homePhoneNumber,+    fieldSourceProfileIds_lastName,+    fieldSourceProfileIds_mailingAddress,+    fieldSourceProfileIds_middleName,+    fieldSourceProfileIds_mobilePhoneNumber,+    fieldSourceProfileIds_partyType,+    fieldSourceProfileIds_personalEmailAddress,+    fieldSourceProfileIds_phoneNumber,+    fieldSourceProfileIds_shippingAddress,++    -- ** FlowDefinition+    flowDefinition_description,+    flowDefinition_flowName,+    flowDefinition_kmsArn,+    flowDefinition_sourceFlowConfig,+    flowDefinition_tasks,+    flowDefinition_triggerConfig,++    -- ** FoundByKeyValue+    foundByKeyValue_keyName,+    foundByKeyValue_values,++    -- ** IdentityResolutionJob+    identityResolutionJob_domainName,+    identityResolutionJob_exportingLocation,+    identityResolutionJob_jobEndTime,+    identityResolutionJob_jobId,+    identityResolutionJob_jobStartTime,+    identityResolutionJob_jobStats,+    identityResolutionJob_message,+    identityResolutionJob_status,++    -- ** IncrementalPullConfig+    incrementalPullConfig_datetimeTypeFieldName,++    -- ** IntegrationConfig+    integrationConfig_appflowIntegration,++    -- ** JobSchedule+    jobSchedule_dayOfTheWeek,+    jobSchedule_time,++    -- ** JobStats+    jobStats_numberOfMatchesFound,+    jobStats_numberOfMergesDone,+    jobStats_numberOfProfilesReviewed,++    -- ** ListDomainItem+    listDomainItem_tags,+    listDomainItem_domainName,+    listDomainItem_createdAt,+    listDomainItem_lastUpdatedAt,++    -- ** ListIntegrationItem+    listIntegrationItem_isUnstructured,+    listIntegrationItem_objectTypeName,+    listIntegrationItem_objectTypeNames,+    listIntegrationItem_tags,+    listIntegrationItem_workflowId,+    listIntegrationItem_domainName,+    listIntegrationItem_uri,+    listIntegrationItem_createdAt,+    listIntegrationItem_lastUpdatedAt,++    -- ** ListProfileObjectTypeItem+    listProfileObjectTypeItem_createdAt,+    listProfileObjectTypeItem_lastUpdatedAt,+    listProfileObjectTypeItem_tags,+    listProfileObjectTypeItem_objectTypeName,+    listProfileObjectTypeItem_description,++    -- ** ListProfileObjectTypeTemplateItem+    listProfileObjectTypeTemplateItem_sourceName,+    listProfileObjectTypeTemplateItem_sourceObject,+    listProfileObjectTypeTemplateItem_templateId,++    -- ** ListProfileObjectsItem+    listProfileObjectsItem_object,+    listProfileObjectsItem_objectTypeName,+    listProfileObjectsItem_profileObjectUniqueKey,++    -- ** ListWorkflowsItem+    listWorkflowsItem_workflowType,+    listWorkflowsItem_workflowId,+    listWorkflowsItem_status,+    listWorkflowsItem_statusDescription,+    listWorkflowsItem_createdAt,+    listWorkflowsItem_lastUpdatedAt,++    -- ** MarketoSourceProperties+    marketoSourceProperties_object,++    -- ** MatchItem+    matchItem_confidenceScore,+    matchItem_matchId,+    matchItem_profileIds,++    -- ** MatchingRequest+    matchingRequest_autoMerging,+    matchingRequest_exportingConfig,+    matchingRequest_jobSchedule,+    matchingRequest_enabled,++    -- ** MatchingResponse+    matchingResponse_autoMerging,+    matchingResponse_enabled,+    matchingResponse_exportingConfig,+    matchingResponse_jobSchedule,++    -- ** ObjectFilter+    objectFilter_keyName,+    objectFilter_values,++    -- ** ObjectTypeField+    objectTypeField_contentType,+    objectTypeField_source,+    objectTypeField_target,++    -- ** ObjectTypeKey+    objectTypeKey_fieldNames,+    objectTypeKey_standardIdentifiers,++    -- ** Profile+    profile_accountNumber,+    profile_additionalInformation,+    profile_address,+    profile_attributes,+    profile_billingAddress,+    profile_birthDate,+    profile_businessEmailAddress,+    profile_businessName,+    profile_businessPhoneNumber,+    profile_emailAddress,+    profile_firstName,+    profile_foundByItems,+    profile_gender,+    profile_homePhoneNumber,+    profile_lastName,+    profile_mailingAddress,+    profile_middleName,+    profile_mobilePhoneNumber,+    profile_partyType,+    profile_personalEmailAddress,+    profile_phoneNumber,+    profile_profileId,+    profile_shippingAddress,++    -- ** S3ExportingConfig+    s3ExportingConfig_s3KeyName,+    s3ExportingConfig_s3BucketName,++    -- ** S3ExportingLocation+    s3ExportingLocation_s3BucketName,+    s3ExportingLocation_s3KeyName,++    -- ** S3SourceProperties+    s3SourceProperties_bucketPrefix,+    s3SourceProperties_bucketName,++    -- ** SalesforceSourceProperties+    salesforceSourceProperties_enableDynamicFieldUpdate,+    salesforceSourceProperties_includeDeletedRecords,+    salesforceSourceProperties_object,++    -- ** ScheduledTriggerProperties+    scheduledTriggerProperties_dataPullMode,+    scheduledTriggerProperties_firstExecutionFrom,+    scheduledTriggerProperties_scheduleEndTime,+    scheduledTriggerProperties_scheduleOffset,+    scheduledTriggerProperties_scheduleStartTime,+    scheduledTriggerProperties_timezone,+    scheduledTriggerProperties_scheduleExpression,++    -- ** ServiceNowSourceProperties+    serviceNowSourceProperties_object,++    -- ** SourceConnectorProperties+    sourceConnectorProperties_marketo,+    sourceConnectorProperties_s3,+    sourceConnectorProperties_salesforce,+    sourceConnectorProperties_serviceNow,+    sourceConnectorProperties_zendesk,++    -- ** SourceFlowConfig+    sourceFlowConfig_connectorProfileName,+    sourceFlowConfig_incrementalPullConfig,+    sourceFlowConfig_connectorType,+    sourceFlowConfig_sourceConnectorProperties,++    -- ** Task+    task_connectorOperator,+    task_destinationField,+    task_taskProperties,+    task_sourceFields,+    task_taskType,++    -- ** TriggerConfig+    triggerConfig_triggerProperties,+    triggerConfig_triggerType,++    -- ** TriggerProperties+    triggerProperties_scheduled,++    -- ** UpdateAddress+    updateAddress_address1,+    updateAddress_address2,+    updateAddress_address3,+    updateAddress_address4,+    updateAddress_city,+    updateAddress_country,+    updateAddress_county,+    updateAddress_postalCode,+    updateAddress_province,+    updateAddress_state,++    -- ** WorkflowAttributes+    workflowAttributes_appflowIntegration,++    -- ** WorkflowMetrics+    workflowMetrics_appflowIntegration,++    -- ** WorkflowStepItem+    workflowStepItem_appflowIntegration,++    -- ** ZendeskSourceProperties+    zendeskSourceProperties_object,+  )+where++import Amazonka.CustomerProfiles.AddProfileKey+import Amazonka.CustomerProfiles.CreateDomain+import Amazonka.CustomerProfiles.CreateIntegrationWorkflow+import Amazonka.CustomerProfiles.CreateProfile+import Amazonka.CustomerProfiles.DeleteDomain+import Amazonka.CustomerProfiles.DeleteIntegration+import Amazonka.CustomerProfiles.DeleteProfile+import Amazonka.CustomerProfiles.DeleteProfileKey+import Amazonka.CustomerProfiles.DeleteProfileObject+import Amazonka.CustomerProfiles.DeleteProfileObjectType+import Amazonka.CustomerProfiles.DeleteWorkflow+import Amazonka.CustomerProfiles.GetAutoMergingPreview+import Amazonka.CustomerProfiles.GetDomain+import Amazonka.CustomerProfiles.GetIdentityResolutionJob+import Amazonka.CustomerProfiles.GetIntegration+import Amazonka.CustomerProfiles.GetMatches+import Amazonka.CustomerProfiles.GetProfileObjectType+import Amazonka.CustomerProfiles.GetProfileObjectTypeTemplate+import Amazonka.CustomerProfiles.GetWorkflow+import Amazonka.CustomerProfiles.GetWorkflowSteps+import Amazonka.CustomerProfiles.ListAccountIntegrations+import Amazonka.CustomerProfiles.ListDomains+import Amazonka.CustomerProfiles.ListIdentityResolutionJobs+import Amazonka.CustomerProfiles.ListIntegrations+import Amazonka.CustomerProfiles.ListProfileObjectTypeTemplates+import Amazonka.CustomerProfiles.ListProfileObjectTypes+import Amazonka.CustomerProfiles.ListProfileObjects+import Amazonka.CustomerProfiles.ListTagsForResource+import Amazonka.CustomerProfiles.ListWorkflows+import Amazonka.CustomerProfiles.MergeProfiles+import Amazonka.CustomerProfiles.PutIntegration+import Amazonka.CustomerProfiles.PutProfileObject+import Amazonka.CustomerProfiles.PutProfileObjectType+import Amazonka.CustomerProfiles.SearchProfiles+import Amazonka.CustomerProfiles.TagResource+import Amazonka.CustomerProfiles.Types.AdditionalSearchKey+import Amazonka.CustomerProfiles.Types.Address+import Amazonka.CustomerProfiles.Types.AppflowIntegration+import Amazonka.CustomerProfiles.Types.AppflowIntegrationWorkflowAttributes+import Amazonka.CustomerProfiles.Types.AppflowIntegrationWorkflowMetrics+import Amazonka.CustomerProfiles.Types.AppflowIntegrationWorkflowStep+import Amazonka.CustomerProfiles.Types.AutoMerging+import Amazonka.CustomerProfiles.Types.Batch+import Amazonka.CustomerProfiles.Types.ConflictResolution+import Amazonka.CustomerProfiles.Types.ConnectorOperator+import Amazonka.CustomerProfiles.Types.Consolidation+import Amazonka.CustomerProfiles.Types.DomainStats+import Amazonka.CustomerProfiles.Types.ExportingConfig+import Amazonka.CustomerProfiles.Types.ExportingLocation+import Amazonka.CustomerProfiles.Types.FieldSourceProfileIds+import Amazonka.CustomerProfiles.Types.FlowDefinition+import Amazonka.CustomerProfiles.Types.FoundByKeyValue+import Amazonka.CustomerProfiles.Types.IdentityResolutionJob+import Amazonka.CustomerProfiles.Types.IncrementalPullConfig+import Amazonka.CustomerProfiles.Types.IntegrationConfig+import Amazonka.CustomerProfiles.Types.JobSchedule+import Amazonka.CustomerProfiles.Types.JobStats+import Amazonka.CustomerProfiles.Types.ListDomainItem+import Amazonka.CustomerProfiles.Types.ListIntegrationItem+import Amazonka.CustomerProfiles.Types.ListProfileObjectTypeItem+import Amazonka.CustomerProfiles.Types.ListProfileObjectTypeTemplateItem+import Amazonka.CustomerProfiles.Types.ListProfileObjectsItem+import Amazonka.CustomerProfiles.Types.ListWorkflowsItem+import Amazonka.CustomerProfiles.Types.MarketoSourceProperties+import Amazonka.CustomerProfiles.Types.MatchItem+import Amazonka.CustomerProfiles.Types.MatchingRequest+import Amazonka.CustomerProfiles.Types.MatchingResponse+import Amazonka.CustomerProfiles.Types.ObjectFilter+import Amazonka.CustomerProfiles.Types.ObjectTypeField+import Amazonka.CustomerProfiles.Types.ObjectTypeKey+import Amazonka.CustomerProfiles.Types.Profile+import Amazonka.CustomerProfiles.Types.S3ExportingConfig+import Amazonka.CustomerProfiles.Types.S3ExportingLocation+import Amazonka.CustomerProfiles.Types.S3SourceProperties+import Amazonka.CustomerProfiles.Types.SalesforceSourceProperties+import Amazonka.CustomerProfiles.Types.ScheduledTriggerProperties+import Amazonka.CustomerProfiles.Types.ServiceNowSourceProperties+import Amazonka.CustomerProfiles.Types.SourceConnectorProperties+import Amazonka.CustomerProfiles.Types.SourceFlowConfig+import Amazonka.CustomerProfiles.Types.Task+import Amazonka.CustomerProfiles.Types.TriggerConfig+import Amazonka.CustomerProfiles.Types.TriggerProperties+import Amazonka.CustomerProfiles.Types.UpdateAddress+import Amazonka.CustomerProfiles.Types.WorkflowAttributes+import Amazonka.CustomerProfiles.Types.WorkflowMetrics+import Amazonka.CustomerProfiles.Types.WorkflowStepItem+import Amazonka.CustomerProfiles.Types.ZendeskSourceProperties+import Amazonka.CustomerProfiles.UntagResource+import Amazonka.CustomerProfiles.UpdateDomain+import Amazonka.CustomerProfiles.UpdateProfile
+ gen/Amazonka/CustomerProfiles/ListAccountIntegrations.hs view
@@ -0,0 +1,229 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.ListAccountIntegrations+-- 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 of the integrations associated to a specific URI in the AWS+-- account.+module Amazonka.CustomerProfiles.ListAccountIntegrations+  ( -- * Creating a Request+    ListAccountIntegrations (..),+    newListAccountIntegrations,++    -- * Request Lenses+    listAccountIntegrations_includeHidden,+    listAccountIntegrations_maxResults,+    listAccountIntegrations_nextToken,+    listAccountIntegrations_uri,++    -- * Destructuring the Response+    ListAccountIntegrationsResponse (..),+    newListAccountIntegrationsResponse,++    -- * Response Lenses+    listAccountIntegrationsResponse_items,+    listAccountIntegrationsResponse_nextToken,+    listAccountIntegrationsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListAccountIntegrations' smart constructor.+data ListAccountIntegrations = ListAccountIntegrations'+  { -- | Boolean to indicate if hidden integration should be returned. Defaults+    -- to @False@.+    includeHidden :: Prelude.Maybe Prelude.Bool,+    -- | The maximum number of objects returned per page.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The pagination token from the previous ListAccountIntegrations API call.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The URI of the S3 bucket or any other type of data source.+    uri :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListAccountIntegrations' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'includeHidden', 'listAccountIntegrations_includeHidden' - Boolean to indicate if hidden integration should be returned. Defaults+-- to @False@.+--+-- 'maxResults', 'listAccountIntegrations_maxResults' - The maximum number of objects returned per page.+--+-- 'nextToken', 'listAccountIntegrations_nextToken' - The pagination token from the previous ListAccountIntegrations API call.+--+-- 'uri', 'listAccountIntegrations_uri' - The URI of the S3 bucket or any other type of data source.+newListAccountIntegrations ::+  -- | 'uri'+  Prelude.Text ->+  ListAccountIntegrations+newListAccountIntegrations pUri_ =+  ListAccountIntegrations'+    { includeHidden =+        Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      uri = pUri_+    }++-- | Boolean to indicate if hidden integration should be returned. Defaults+-- to @False@.+listAccountIntegrations_includeHidden :: Lens.Lens' ListAccountIntegrations (Prelude.Maybe Prelude.Bool)+listAccountIntegrations_includeHidden = Lens.lens (\ListAccountIntegrations' {includeHidden} -> includeHidden) (\s@ListAccountIntegrations' {} a -> s {includeHidden = a} :: ListAccountIntegrations)++-- | The maximum number of objects returned per page.+listAccountIntegrations_maxResults :: Lens.Lens' ListAccountIntegrations (Prelude.Maybe Prelude.Natural)+listAccountIntegrations_maxResults = Lens.lens (\ListAccountIntegrations' {maxResults} -> maxResults) (\s@ListAccountIntegrations' {} a -> s {maxResults = a} :: ListAccountIntegrations)++-- | The pagination token from the previous ListAccountIntegrations API call.+listAccountIntegrations_nextToken :: Lens.Lens' ListAccountIntegrations (Prelude.Maybe Prelude.Text)+listAccountIntegrations_nextToken = Lens.lens (\ListAccountIntegrations' {nextToken} -> nextToken) (\s@ListAccountIntegrations' {} a -> s {nextToken = a} :: ListAccountIntegrations)++-- | The URI of the S3 bucket or any other type of data source.+listAccountIntegrations_uri :: Lens.Lens' ListAccountIntegrations Prelude.Text+listAccountIntegrations_uri = Lens.lens (\ListAccountIntegrations' {uri} -> uri) (\s@ListAccountIntegrations' {} a -> s {uri = a} :: ListAccountIntegrations)++instance Core.AWSRequest ListAccountIntegrations where+  type+    AWSResponse ListAccountIntegrations =+      ListAccountIntegrationsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListAccountIntegrationsResponse'+            Prelude.<$> (x Data..?> "Items" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListAccountIntegrations where+  hashWithSalt _salt ListAccountIntegrations' {..} =+    _salt+      `Prelude.hashWithSalt` includeHidden+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` uri++instance Prelude.NFData ListAccountIntegrations where+  rnf ListAccountIntegrations' {..} =+    Prelude.rnf includeHidden+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf uri++instance Data.ToHeaders ListAccountIntegrations where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListAccountIntegrations where+  toJSON ListAccountIntegrations' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("Uri" Data..= uri)]+      )++instance Data.ToPath ListAccountIntegrations where+  toPath = Prelude.const "/integrations"++instance Data.ToQuery ListAccountIntegrations where+  toQuery ListAccountIntegrations' {..} =+    Prelude.mconcat+      [ "include-hidden" Data.=: includeHidden,+        "max-results" Data.=: maxResults,+        "next-token" Data.=: nextToken+      ]++-- | /See:/ 'newListAccountIntegrationsResponse' smart constructor.+data ListAccountIntegrationsResponse = ListAccountIntegrationsResponse'+  { -- | The list of ListAccountIntegration instances.+    items :: Prelude.Maybe [ListIntegrationItem],+    -- | The pagination token from the previous ListAccountIntegrations API call.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListAccountIntegrationsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'items', 'listAccountIntegrationsResponse_items' - The list of ListAccountIntegration instances.+--+-- 'nextToken', 'listAccountIntegrationsResponse_nextToken' - The pagination token from the previous ListAccountIntegrations API call.+--+-- 'httpStatus', 'listAccountIntegrationsResponse_httpStatus' - The response's http status code.+newListAccountIntegrationsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListAccountIntegrationsResponse+newListAccountIntegrationsResponse pHttpStatus_ =+  ListAccountIntegrationsResponse'+    { items =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The list of ListAccountIntegration instances.+listAccountIntegrationsResponse_items :: Lens.Lens' ListAccountIntegrationsResponse (Prelude.Maybe [ListIntegrationItem])+listAccountIntegrationsResponse_items = Lens.lens (\ListAccountIntegrationsResponse' {items} -> items) (\s@ListAccountIntegrationsResponse' {} a -> s {items = a} :: ListAccountIntegrationsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The pagination token from the previous ListAccountIntegrations API call.+listAccountIntegrationsResponse_nextToken :: Lens.Lens' ListAccountIntegrationsResponse (Prelude.Maybe Prelude.Text)+listAccountIntegrationsResponse_nextToken = Lens.lens (\ListAccountIntegrationsResponse' {nextToken} -> nextToken) (\s@ListAccountIntegrationsResponse' {} a -> s {nextToken = a} :: ListAccountIntegrationsResponse)++-- | The response's http status code.+listAccountIntegrationsResponse_httpStatus :: Lens.Lens' ListAccountIntegrationsResponse Prelude.Int+listAccountIntegrationsResponse_httpStatus = Lens.lens (\ListAccountIntegrationsResponse' {httpStatus} -> httpStatus) (\s@ListAccountIntegrationsResponse' {} a -> s {httpStatus = a} :: ListAccountIntegrationsResponse)++instance+  Prelude.NFData+    ListAccountIntegrationsResponse+  where+  rnf ListAccountIntegrationsResponse' {..} =+    Prelude.rnf items+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/CustomerProfiles/ListDomains.hs view
@@ -0,0 +1,185 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.ListDomains+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns a list of all the domains for an AWS account that have been+-- created.+module Amazonka.CustomerProfiles.ListDomains+  ( -- * Creating a Request+    ListDomains (..),+    newListDomains,++    -- * Request Lenses+    listDomains_maxResults,+    listDomains_nextToken,++    -- * Destructuring the Response+    ListDomainsResponse (..),+    newListDomainsResponse,++    -- * Response Lenses+    listDomainsResponse_items,+    listDomainsResponse_nextToken,+    listDomainsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListDomains' smart constructor.+data ListDomains = ListDomains'+  { -- | The maximum number of objects returned per page.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The pagination token from the previous ListDomain API call.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListDomains' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listDomains_maxResults' - The maximum number of objects returned per page.+--+-- 'nextToken', 'listDomains_nextToken' - The pagination token from the previous ListDomain API call.+newListDomains ::+  ListDomains+newListDomains =+  ListDomains'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | The maximum number of objects returned per page.+listDomains_maxResults :: Lens.Lens' ListDomains (Prelude.Maybe Prelude.Natural)+listDomains_maxResults = Lens.lens (\ListDomains' {maxResults} -> maxResults) (\s@ListDomains' {} a -> s {maxResults = a} :: ListDomains)++-- | The pagination token from the previous ListDomain API call.+listDomains_nextToken :: Lens.Lens' ListDomains (Prelude.Maybe Prelude.Text)+listDomains_nextToken = Lens.lens (\ListDomains' {nextToken} -> nextToken) (\s@ListDomains' {} a -> s {nextToken = a} :: ListDomains)++instance Core.AWSRequest ListDomains where+  type AWSResponse ListDomains = ListDomainsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListDomainsResponse'+            Prelude.<$> (x Data..?> "Items" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListDomains where+  hashWithSalt _salt ListDomains' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListDomains where+  rnf ListDomains' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders ListDomains where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListDomains where+  toPath = Prelude.const "/domains"++instance Data.ToQuery ListDomains where+  toQuery ListDomains' {..} =+    Prelude.mconcat+      [ "max-results" Data.=: maxResults,+        "next-token" Data.=: nextToken+      ]++-- | /See:/ 'newListDomainsResponse' smart constructor.+data ListDomainsResponse = ListDomainsResponse'+  { -- | The list of ListDomains instances.+    items :: Prelude.Maybe [ListDomainItem],+    -- | The pagination token from the previous ListDomains API call.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListDomainsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'items', 'listDomainsResponse_items' - The list of ListDomains instances.+--+-- 'nextToken', 'listDomainsResponse_nextToken' - The pagination token from the previous ListDomains API call.+--+-- 'httpStatus', 'listDomainsResponse_httpStatus' - The response's http status code.+newListDomainsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListDomainsResponse+newListDomainsResponse pHttpStatus_ =+  ListDomainsResponse'+    { items = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The list of ListDomains instances.+listDomainsResponse_items :: Lens.Lens' ListDomainsResponse (Prelude.Maybe [ListDomainItem])+listDomainsResponse_items = Lens.lens (\ListDomainsResponse' {items} -> items) (\s@ListDomainsResponse' {} a -> s {items = a} :: ListDomainsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The pagination token from the previous ListDomains API call.+listDomainsResponse_nextToken :: Lens.Lens' ListDomainsResponse (Prelude.Maybe Prelude.Text)+listDomainsResponse_nextToken = Lens.lens (\ListDomainsResponse' {nextToken} -> nextToken) (\s@ListDomainsResponse' {} a -> s {nextToken = a} :: ListDomainsResponse)++-- | The response's http status code.+listDomainsResponse_httpStatus :: Lens.Lens' ListDomainsResponse Prelude.Int+listDomainsResponse_httpStatus = Lens.lens (\ListDomainsResponse' {httpStatus} -> httpStatus) (\s@ListDomainsResponse' {} a -> s {httpStatus = a} :: ListDomainsResponse)++instance Prelude.NFData ListDomainsResponse where+  rnf ListDomainsResponse' {..} =+    Prelude.rnf items+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/CustomerProfiles/ListIdentityResolutionJobs.hs view
@@ -0,0 +1,223 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.ListIdentityResolutionJobs+-- 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 of the Identity Resolution Jobs in your domain. The response+-- sorts the list by @JobStartTime@.+module Amazonka.CustomerProfiles.ListIdentityResolutionJobs+  ( -- * Creating a Request+    ListIdentityResolutionJobs (..),+    newListIdentityResolutionJobs,++    -- * Request Lenses+    listIdentityResolutionJobs_maxResults,+    listIdentityResolutionJobs_nextToken,+    listIdentityResolutionJobs_domainName,++    -- * Destructuring the Response+    ListIdentityResolutionJobsResponse (..),+    newListIdentityResolutionJobsResponse,++    -- * Response Lenses+    listIdentityResolutionJobsResponse_identityResolutionJobsList,+    listIdentityResolutionJobsResponse_nextToken,+    listIdentityResolutionJobsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListIdentityResolutionJobs' smart constructor.+data ListIdentityResolutionJobs = ListIdentityResolutionJobs'+  { -- | The maximum number of results to return per page.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token for the next set of results. Use the value returned in the+    -- previous response in the next request to retrieve the next set of+    -- results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The unique name of the domain.+    domainName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListIdentityResolutionJobs' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listIdentityResolutionJobs_maxResults' - The maximum number of results to return per page.+--+-- 'nextToken', 'listIdentityResolutionJobs_nextToken' - The token for the next set of results. Use the value returned in the+-- previous response in the next request to retrieve the next set of+-- results.+--+-- 'domainName', 'listIdentityResolutionJobs_domainName' - The unique name of the domain.+newListIdentityResolutionJobs ::+  -- | 'domainName'+  Prelude.Text ->+  ListIdentityResolutionJobs+newListIdentityResolutionJobs pDomainName_ =+  ListIdentityResolutionJobs'+    { maxResults =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      domainName = pDomainName_+    }++-- | The maximum number of results to return per page.+listIdentityResolutionJobs_maxResults :: Lens.Lens' ListIdentityResolutionJobs (Prelude.Maybe Prelude.Natural)+listIdentityResolutionJobs_maxResults = Lens.lens (\ListIdentityResolutionJobs' {maxResults} -> maxResults) (\s@ListIdentityResolutionJobs' {} a -> s {maxResults = a} :: ListIdentityResolutionJobs)++-- | The token for the next set of results. Use the value returned in the+-- previous response in the next request to retrieve the next set of+-- results.+listIdentityResolutionJobs_nextToken :: Lens.Lens' ListIdentityResolutionJobs (Prelude.Maybe Prelude.Text)+listIdentityResolutionJobs_nextToken = Lens.lens (\ListIdentityResolutionJobs' {nextToken} -> nextToken) (\s@ListIdentityResolutionJobs' {} a -> s {nextToken = a} :: ListIdentityResolutionJobs)++-- | The unique name of the domain.+listIdentityResolutionJobs_domainName :: Lens.Lens' ListIdentityResolutionJobs Prelude.Text+listIdentityResolutionJobs_domainName = Lens.lens (\ListIdentityResolutionJobs' {domainName} -> domainName) (\s@ListIdentityResolutionJobs' {} a -> s {domainName = a} :: ListIdentityResolutionJobs)++instance Core.AWSRequest ListIdentityResolutionJobs where+  type+    AWSResponse ListIdentityResolutionJobs =+      ListIdentityResolutionJobsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListIdentityResolutionJobsResponse'+            Prelude.<$> ( x+                            Data..?> "IdentityResolutionJobsList"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListIdentityResolutionJobs where+  hashWithSalt _salt ListIdentityResolutionJobs' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` domainName++instance Prelude.NFData ListIdentityResolutionJobs where+  rnf ListIdentityResolutionJobs' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf domainName++instance Data.ToHeaders ListIdentityResolutionJobs where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListIdentityResolutionJobs where+  toPath ListIdentityResolutionJobs' {..} =+    Prelude.mconcat+      [ "/domains/",+        Data.toBS domainName,+        "/identity-resolution-jobs"+      ]++instance Data.ToQuery ListIdentityResolutionJobs where+  toQuery ListIdentityResolutionJobs' {..} =+    Prelude.mconcat+      [ "max-results" Data.=: maxResults,+        "next-token" Data.=: nextToken+      ]++-- | /See:/ 'newListIdentityResolutionJobsResponse' smart constructor.+data ListIdentityResolutionJobsResponse = ListIdentityResolutionJobsResponse'+  { -- | A list of Identity Resolution Jobs.+    identityResolutionJobsList :: Prelude.Maybe [IdentityResolutionJob],+    -- | If there are additional results, this is the token for the next set of+    -- results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListIdentityResolutionJobsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'identityResolutionJobsList', 'listIdentityResolutionJobsResponse_identityResolutionJobsList' - A list of Identity Resolution Jobs.+--+-- 'nextToken', 'listIdentityResolutionJobsResponse_nextToken' - If there are additional results, this is the token for the next set of+-- results.+--+-- 'httpStatus', 'listIdentityResolutionJobsResponse_httpStatus' - The response's http status code.+newListIdentityResolutionJobsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListIdentityResolutionJobsResponse+newListIdentityResolutionJobsResponse pHttpStatus_ =+  ListIdentityResolutionJobsResponse'+    { identityResolutionJobsList =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list of Identity Resolution Jobs.+listIdentityResolutionJobsResponse_identityResolutionJobsList :: Lens.Lens' ListIdentityResolutionJobsResponse (Prelude.Maybe [IdentityResolutionJob])+listIdentityResolutionJobsResponse_identityResolutionJobsList = Lens.lens (\ListIdentityResolutionJobsResponse' {identityResolutionJobsList} -> identityResolutionJobsList) (\s@ListIdentityResolutionJobsResponse' {} a -> s {identityResolutionJobsList = a} :: ListIdentityResolutionJobsResponse) Prelude.. Lens.mapping Lens.coerced++-- | If there are additional results, this is the token for the next set of+-- results.+listIdentityResolutionJobsResponse_nextToken :: Lens.Lens' ListIdentityResolutionJobsResponse (Prelude.Maybe Prelude.Text)+listIdentityResolutionJobsResponse_nextToken = Lens.lens (\ListIdentityResolutionJobsResponse' {nextToken} -> nextToken) (\s@ListIdentityResolutionJobsResponse' {} a -> s {nextToken = a} :: ListIdentityResolutionJobsResponse)++-- | The response's http status code.+listIdentityResolutionJobsResponse_httpStatus :: Lens.Lens' ListIdentityResolutionJobsResponse Prelude.Int+listIdentityResolutionJobsResponse_httpStatus = Lens.lens (\ListIdentityResolutionJobsResponse' {httpStatus} -> httpStatus) (\s@ListIdentityResolutionJobsResponse' {} a -> s {httpStatus = a} :: ListIdentityResolutionJobsResponse)++instance+  Prelude.NFData+    ListIdentityResolutionJobsResponse+  where+  rnf ListIdentityResolutionJobsResponse' {..} =+    Prelude.rnf identityResolutionJobsList+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/CustomerProfiles/ListIntegrations.hs view
@@ -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.CustomerProfiles.ListIntegrations+-- 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 of the integrations in your domain.+module Amazonka.CustomerProfiles.ListIntegrations+  ( -- * Creating a Request+    ListIntegrations (..),+    newListIntegrations,++    -- * Request Lenses+    listIntegrations_includeHidden,+    listIntegrations_maxResults,+    listIntegrations_nextToken,+    listIntegrations_domainName,++    -- * Destructuring the Response+    ListIntegrationsResponse (..),+    newListIntegrationsResponse,++    -- * Response Lenses+    listIntegrationsResponse_items,+    listIntegrationsResponse_nextToken,+    listIntegrationsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListIntegrations' smart constructor.+data ListIntegrations = ListIntegrations'+  { -- | Boolean to indicate if hidden integration should be returned. Defaults+    -- to @False@.+    includeHidden :: Prelude.Maybe Prelude.Bool,+    -- | The maximum number of objects returned per page.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The pagination token from the previous ListIntegrations API call.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The unique name of the domain.+    domainName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListIntegrations' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'includeHidden', 'listIntegrations_includeHidden' - Boolean to indicate if hidden integration should be returned. Defaults+-- to @False@.+--+-- 'maxResults', 'listIntegrations_maxResults' - The maximum number of objects returned per page.+--+-- 'nextToken', 'listIntegrations_nextToken' - The pagination token from the previous ListIntegrations API call.+--+-- 'domainName', 'listIntegrations_domainName' - The unique name of the domain.+newListIntegrations ::+  -- | 'domainName'+  Prelude.Text ->+  ListIntegrations+newListIntegrations pDomainName_ =+  ListIntegrations'+    { includeHidden = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      domainName = pDomainName_+    }++-- | Boolean to indicate if hidden integration should be returned. Defaults+-- to @False@.+listIntegrations_includeHidden :: Lens.Lens' ListIntegrations (Prelude.Maybe Prelude.Bool)+listIntegrations_includeHidden = Lens.lens (\ListIntegrations' {includeHidden} -> includeHidden) (\s@ListIntegrations' {} a -> s {includeHidden = a} :: ListIntegrations)++-- | The maximum number of objects returned per page.+listIntegrations_maxResults :: Lens.Lens' ListIntegrations (Prelude.Maybe Prelude.Natural)+listIntegrations_maxResults = Lens.lens (\ListIntegrations' {maxResults} -> maxResults) (\s@ListIntegrations' {} a -> s {maxResults = a} :: ListIntegrations)++-- | The pagination token from the previous ListIntegrations API call.+listIntegrations_nextToken :: Lens.Lens' ListIntegrations (Prelude.Maybe Prelude.Text)+listIntegrations_nextToken = Lens.lens (\ListIntegrations' {nextToken} -> nextToken) (\s@ListIntegrations' {} a -> s {nextToken = a} :: ListIntegrations)++-- | The unique name of the domain.+listIntegrations_domainName :: Lens.Lens' ListIntegrations Prelude.Text+listIntegrations_domainName = Lens.lens (\ListIntegrations' {domainName} -> domainName) (\s@ListIntegrations' {} a -> s {domainName = a} :: ListIntegrations)++instance Core.AWSRequest ListIntegrations where+  type+    AWSResponse ListIntegrations =+      ListIntegrationsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListIntegrationsResponse'+            Prelude.<$> (x Data..?> "Items" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListIntegrations where+  hashWithSalt _salt ListIntegrations' {..} =+    _salt+      `Prelude.hashWithSalt` includeHidden+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` domainName++instance Prelude.NFData ListIntegrations where+  rnf ListIntegrations' {..} =+    Prelude.rnf includeHidden+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf domainName++instance Data.ToHeaders ListIntegrations where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListIntegrations where+  toPath ListIntegrations' {..} =+    Prelude.mconcat+      ["/domains/", Data.toBS domainName, "/integrations"]++instance Data.ToQuery ListIntegrations where+  toQuery ListIntegrations' {..} =+    Prelude.mconcat+      [ "include-hidden" Data.=: includeHidden,+        "max-results" Data.=: maxResults,+        "next-token" Data.=: nextToken+      ]++-- | /See:/ 'newListIntegrationsResponse' smart constructor.+data ListIntegrationsResponse = ListIntegrationsResponse'+  { -- | The list of ListIntegrations instances.+    items :: Prelude.Maybe [ListIntegrationItem],+    -- | The pagination token from the previous ListIntegrations API call.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListIntegrationsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'items', 'listIntegrationsResponse_items' - The list of ListIntegrations instances.+--+-- 'nextToken', 'listIntegrationsResponse_nextToken' - The pagination token from the previous ListIntegrations API call.+--+-- 'httpStatus', 'listIntegrationsResponse_httpStatus' - The response's http status code.+newListIntegrationsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListIntegrationsResponse+newListIntegrationsResponse pHttpStatus_ =+  ListIntegrationsResponse'+    { items = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The list of ListIntegrations instances.+listIntegrationsResponse_items :: Lens.Lens' ListIntegrationsResponse (Prelude.Maybe [ListIntegrationItem])+listIntegrationsResponse_items = Lens.lens (\ListIntegrationsResponse' {items} -> items) (\s@ListIntegrationsResponse' {} a -> s {items = a} :: ListIntegrationsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The pagination token from the previous ListIntegrations API call.+listIntegrationsResponse_nextToken :: Lens.Lens' ListIntegrationsResponse (Prelude.Maybe Prelude.Text)+listIntegrationsResponse_nextToken = Lens.lens (\ListIntegrationsResponse' {nextToken} -> nextToken) (\s@ListIntegrationsResponse' {} a -> s {nextToken = a} :: ListIntegrationsResponse)++-- | The response's http status code.+listIntegrationsResponse_httpStatus :: Lens.Lens' ListIntegrationsResponse Prelude.Int+listIntegrationsResponse_httpStatus = Lens.lens (\ListIntegrationsResponse' {httpStatus} -> httpStatus) (\s@ListIntegrationsResponse' {} a -> s {httpStatus = a} :: ListIntegrationsResponse)++instance Prelude.NFData ListIntegrationsResponse where+  rnf ListIntegrationsResponse' {..} =+    Prelude.rnf items+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/CustomerProfiles/ListProfileObjectTypeTemplates.hs view
@@ -0,0 +1,206 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.ListProfileObjectTypeTemplates+-- 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 of the template information for object types.+module Amazonka.CustomerProfiles.ListProfileObjectTypeTemplates+  ( -- * Creating a Request+    ListProfileObjectTypeTemplates (..),+    newListProfileObjectTypeTemplates,++    -- * Request Lenses+    listProfileObjectTypeTemplates_maxResults,+    listProfileObjectTypeTemplates_nextToken,++    -- * Destructuring the Response+    ListProfileObjectTypeTemplatesResponse (..),+    newListProfileObjectTypeTemplatesResponse,++    -- * Response Lenses+    listProfileObjectTypeTemplatesResponse_items,+    listProfileObjectTypeTemplatesResponse_nextToken,+    listProfileObjectTypeTemplatesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListProfileObjectTypeTemplates' smart constructor.+data ListProfileObjectTypeTemplates = ListProfileObjectTypeTemplates'+  { -- | The maximum number of objects returned per page.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The pagination token from the previous ListObjectTypeTemplates API call.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListProfileObjectTypeTemplates' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listProfileObjectTypeTemplates_maxResults' - The maximum number of objects returned per page.+--+-- 'nextToken', 'listProfileObjectTypeTemplates_nextToken' - The pagination token from the previous ListObjectTypeTemplates API call.+newListProfileObjectTypeTemplates ::+  ListProfileObjectTypeTemplates+newListProfileObjectTypeTemplates =+  ListProfileObjectTypeTemplates'+    { maxResults =+        Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | The maximum number of objects returned per page.+listProfileObjectTypeTemplates_maxResults :: Lens.Lens' ListProfileObjectTypeTemplates (Prelude.Maybe Prelude.Natural)+listProfileObjectTypeTemplates_maxResults = Lens.lens (\ListProfileObjectTypeTemplates' {maxResults} -> maxResults) (\s@ListProfileObjectTypeTemplates' {} a -> s {maxResults = a} :: ListProfileObjectTypeTemplates)++-- | The pagination token from the previous ListObjectTypeTemplates API call.+listProfileObjectTypeTemplates_nextToken :: Lens.Lens' ListProfileObjectTypeTemplates (Prelude.Maybe Prelude.Text)+listProfileObjectTypeTemplates_nextToken = Lens.lens (\ListProfileObjectTypeTemplates' {nextToken} -> nextToken) (\s@ListProfileObjectTypeTemplates' {} a -> s {nextToken = a} :: ListProfileObjectTypeTemplates)++instance+  Core.AWSRequest+    ListProfileObjectTypeTemplates+  where+  type+    AWSResponse ListProfileObjectTypeTemplates =+      ListProfileObjectTypeTemplatesResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListProfileObjectTypeTemplatesResponse'+            Prelude.<$> (x Data..?> "Items" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    ListProfileObjectTypeTemplates+  where+  hashWithSalt+    _salt+    ListProfileObjectTypeTemplates' {..} =+      _salt+        `Prelude.hashWithSalt` maxResults+        `Prelude.hashWithSalt` nextToken++instance+  Prelude.NFData+    ListProfileObjectTypeTemplates+  where+  rnf ListProfileObjectTypeTemplates' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance+  Data.ToHeaders+    ListProfileObjectTypeTemplates+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListProfileObjectTypeTemplates where+  toPath = Prelude.const "/templates"++instance Data.ToQuery ListProfileObjectTypeTemplates where+  toQuery ListProfileObjectTypeTemplates' {..} =+    Prelude.mconcat+      [ "max-results" Data.=: maxResults,+        "next-token" Data.=: nextToken+      ]++-- | /See:/ 'newListProfileObjectTypeTemplatesResponse' smart constructor.+data ListProfileObjectTypeTemplatesResponse = ListProfileObjectTypeTemplatesResponse'+  { -- | The list of ListProfileObjectType template instances.+    items :: Prelude.Maybe [ListProfileObjectTypeTemplateItem],+    -- | The pagination token from the previous ListObjectTypeTemplates API call.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListProfileObjectTypeTemplatesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'items', 'listProfileObjectTypeTemplatesResponse_items' - The list of ListProfileObjectType template instances.+--+-- 'nextToken', 'listProfileObjectTypeTemplatesResponse_nextToken' - The pagination token from the previous ListObjectTypeTemplates API call.+--+-- 'httpStatus', 'listProfileObjectTypeTemplatesResponse_httpStatus' - The response's http status code.+newListProfileObjectTypeTemplatesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListProfileObjectTypeTemplatesResponse+newListProfileObjectTypeTemplatesResponse+  pHttpStatus_ =+    ListProfileObjectTypeTemplatesResponse'+      { items =+          Prelude.Nothing,+        nextToken = Prelude.Nothing,+        httpStatus = pHttpStatus_+      }++-- | The list of ListProfileObjectType template instances.+listProfileObjectTypeTemplatesResponse_items :: Lens.Lens' ListProfileObjectTypeTemplatesResponse (Prelude.Maybe [ListProfileObjectTypeTemplateItem])+listProfileObjectTypeTemplatesResponse_items = Lens.lens (\ListProfileObjectTypeTemplatesResponse' {items} -> items) (\s@ListProfileObjectTypeTemplatesResponse' {} a -> s {items = a} :: ListProfileObjectTypeTemplatesResponse) Prelude.. Lens.mapping Lens.coerced++-- | The pagination token from the previous ListObjectTypeTemplates API call.+listProfileObjectTypeTemplatesResponse_nextToken :: Lens.Lens' ListProfileObjectTypeTemplatesResponse (Prelude.Maybe Prelude.Text)+listProfileObjectTypeTemplatesResponse_nextToken = Lens.lens (\ListProfileObjectTypeTemplatesResponse' {nextToken} -> nextToken) (\s@ListProfileObjectTypeTemplatesResponse' {} a -> s {nextToken = a} :: ListProfileObjectTypeTemplatesResponse)++-- | The response's http status code.+listProfileObjectTypeTemplatesResponse_httpStatus :: Lens.Lens' ListProfileObjectTypeTemplatesResponse Prelude.Int+listProfileObjectTypeTemplatesResponse_httpStatus = Lens.lens (\ListProfileObjectTypeTemplatesResponse' {httpStatus} -> httpStatus) (\s@ListProfileObjectTypeTemplatesResponse' {} a -> s {httpStatus = a} :: ListProfileObjectTypeTemplatesResponse)++instance+  Prelude.NFData+    ListProfileObjectTypeTemplatesResponse+  where+  rnf ListProfileObjectTypeTemplatesResponse' {..} =+    Prelude.rnf items+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/CustomerProfiles/ListProfileObjectTypes.hs view
@@ -0,0 +1,207 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.ListProfileObjectTypes+-- 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 of the templates available within the service.+module Amazonka.CustomerProfiles.ListProfileObjectTypes+  ( -- * Creating a Request+    ListProfileObjectTypes (..),+    newListProfileObjectTypes,++    -- * Request Lenses+    listProfileObjectTypes_maxResults,+    listProfileObjectTypes_nextToken,+    listProfileObjectTypes_domainName,++    -- * Destructuring the Response+    ListProfileObjectTypesResponse (..),+    newListProfileObjectTypesResponse,++    -- * Response Lenses+    listProfileObjectTypesResponse_items,+    listProfileObjectTypesResponse_nextToken,+    listProfileObjectTypesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListProfileObjectTypes' smart constructor.+data ListProfileObjectTypes = ListProfileObjectTypes'+  { -- | The maximum number of objects returned per page.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | Identifies the next page of results to return.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The unique name of the domain.+    domainName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListProfileObjectTypes' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listProfileObjectTypes_maxResults' - The maximum number of objects returned per page.+--+-- 'nextToken', 'listProfileObjectTypes_nextToken' - Identifies the next page of results to return.+--+-- 'domainName', 'listProfileObjectTypes_domainName' - The unique name of the domain.+newListProfileObjectTypes ::+  -- | 'domainName'+  Prelude.Text ->+  ListProfileObjectTypes+newListProfileObjectTypes pDomainName_ =+  ListProfileObjectTypes'+    { maxResults =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      domainName = pDomainName_+    }++-- | The maximum number of objects returned per page.+listProfileObjectTypes_maxResults :: Lens.Lens' ListProfileObjectTypes (Prelude.Maybe Prelude.Natural)+listProfileObjectTypes_maxResults = Lens.lens (\ListProfileObjectTypes' {maxResults} -> maxResults) (\s@ListProfileObjectTypes' {} a -> s {maxResults = a} :: ListProfileObjectTypes)++-- | Identifies the next page of results to return.+listProfileObjectTypes_nextToken :: Lens.Lens' ListProfileObjectTypes (Prelude.Maybe Prelude.Text)+listProfileObjectTypes_nextToken = Lens.lens (\ListProfileObjectTypes' {nextToken} -> nextToken) (\s@ListProfileObjectTypes' {} a -> s {nextToken = a} :: ListProfileObjectTypes)++-- | The unique name of the domain.+listProfileObjectTypes_domainName :: Lens.Lens' ListProfileObjectTypes Prelude.Text+listProfileObjectTypes_domainName = Lens.lens (\ListProfileObjectTypes' {domainName} -> domainName) (\s@ListProfileObjectTypes' {} a -> s {domainName = a} :: ListProfileObjectTypes)++instance Core.AWSRequest ListProfileObjectTypes where+  type+    AWSResponse ListProfileObjectTypes =+      ListProfileObjectTypesResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListProfileObjectTypesResponse'+            Prelude.<$> (x Data..?> "Items" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListProfileObjectTypes where+  hashWithSalt _salt ListProfileObjectTypes' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` domainName++instance Prelude.NFData ListProfileObjectTypes where+  rnf ListProfileObjectTypes' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf domainName++instance Data.ToHeaders ListProfileObjectTypes where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListProfileObjectTypes where+  toPath ListProfileObjectTypes' {..} =+    Prelude.mconcat+      ["/domains/", Data.toBS domainName, "/object-types"]++instance Data.ToQuery ListProfileObjectTypes where+  toQuery ListProfileObjectTypes' {..} =+    Prelude.mconcat+      [ "max-results" Data.=: maxResults,+        "next-token" Data.=: nextToken+      ]++-- | /See:/ 'newListProfileObjectTypesResponse' smart constructor.+data ListProfileObjectTypesResponse = ListProfileObjectTypesResponse'+  { -- | The list of ListProfileObjectTypes instances.+    items :: Prelude.Maybe [ListProfileObjectTypeItem],+    -- | Identifies the next page of results to return.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListProfileObjectTypesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'items', 'listProfileObjectTypesResponse_items' - The list of ListProfileObjectTypes instances.+--+-- 'nextToken', 'listProfileObjectTypesResponse_nextToken' - Identifies the next page of results to return.+--+-- 'httpStatus', 'listProfileObjectTypesResponse_httpStatus' - The response's http status code.+newListProfileObjectTypesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListProfileObjectTypesResponse+newListProfileObjectTypesResponse pHttpStatus_ =+  ListProfileObjectTypesResponse'+    { items =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The list of ListProfileObjectTypes instances.+listProfileObjectTypesResponse_items :: Lens.Lens' ListProfileObjectTypesResponse (Prelude.Maybe [ListProfileObjectTypeItem])+listProfileObjectTypesResponse_items = Lens.lens (\ListProfileObjectTypesResponse' {items} -> items) (\s@ListProfileObjectTypesResponse' {} a -> s {items = a} :: ListProfileObjectTypesResponse) Prelude.. Lens.mapping Lens.coerced++-- | Identifies the next page of results to return.+listProfileObjectTypesResponse_nextToken :: Lens.Lens' ListProfileObjectTypesResponse (Prelude.Maybe Prelude.Text)+listProfileObjectTypesResponse_nextToken = Lens.lens (\ListProfileObjectTypesResponse' {nextToken} -> nextToken) (\s@ListProfileObjectTypesResponse' {} a -> s {nextToken = a} :: ListProfileObjectTypesResponse)++-- | The response's http status code.+listProfileObjectTypesResponse_httpStatus :: Lens.Lens' ListProfileObjectTypesResponse Prelude.Int+listProfileObjectTypesResponse_httpStatus = Lens.lens (\ListProfileObjectTypesResponse' {httpStatus} -> httpStatus) (\s@ListProfileObjectTypesResponse' {} a -> s {httpStatus = a} :: ListProfileObjectTypesResponse)++instance+  Prelude.NFData+    ListProfileObjectTypesResponse+  where+  rnf ListProfileObjectTypesResponse' {..} =+    Prelude.rnf items+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/CustomerProfiles/ListProfileObjects.hs view
@@ -0,0 +1,267 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.ListProfileObjects+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns a list of objects associated with a profile of a given+-- ProfileObjectType.+module Amazonka.CustomerProfiles.ListProfileObjects+  ( -- * Creating a Request+    ListProfileObjects (..),+    newListProfileObjects,++    -- * Request Lenses+    listProfileObjects_maxResults,+    listProfileObjects_nextToken,+    listProfileObjects_objectFilter,+    listProfileObjects_domainName,+    listProfileObjects_objectTypeName,+    listProfileObjects_profileId,++    -- * Destructuring the Response+    ListProfileObjectsResponse (..),+    newListProfileObjectsResponse,++    -- * Response Lenses+    listProfileObjectsResponse_items,+    listProfileObjectsResponse_nextToken,+    listProfileObjectsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListProfileObjects' smart constructor.+data ListProfileObjects = ListProfileObjects'+  { -- | The maximum number of objects returned per page.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The pagination token from the previous call to ListProfileObjects.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | Applies a filter to the response to include profile objects with the+    -- specified index values. This filter is only supported for ObjectTypeName+    -- _asset, _case and _order.+    objectFilter :: Prelude.Maybe ObjectFilter,+    -- | The unique name of the domain.+    domainName :: Prelude.Text,+    -- | The name of the profile object type.+    objectTypeName :: Prelude.Text,+    -- | The unique identifier of a customer profile.+    profileId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListProfileObjects' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listProfileObjects_maxResults' - The maximum number of objects returned per page.+--+-- 'nextToken', 'listProfileObjects_nextToken' - The pagination token from the previous call to ListProfileObjects.+--+-- 'objectFilter', 'listProfileObjects_objectFilter' - Applies a filter to the response to include profile objects with the+-- specified index values. This filter is only supported for ObjectTypeName+-- _asset, _case and _order.+--+-- 'domainName', 'listProfileObjects_domainName' - The unique name of the domain.+--+-- 'objectTypeName', 'listProfileObjects_objectTypeName' - The name of the profile object type.+--+-- 'profileId', 'listProfileObjects_profileId' - The unique identifier of a customer profile.+newListProfileObjects ::+  -- | 'domainName'+  Prelude.Text ->+  -- | 'objectTypeName'+  Prelude.Text ->+  -- | 'profileId'+  Prelude.Text ->+  ListProfileObjects+newListProfileObjects+  pDomainName_+  pObjectTypeName_+  pProfileId_ =+    ListProfileObjects'+      { maxResults = Prelude.Nothing,+        nextToken = Prelude.Nothing,+        objectFilter = Prelude.Nothing,+        domainName = pDomainName_,+        objectTypeName = pObjectTypeName_,+        profileId = pProfileId_+      }++-- | The maximum number of objects returned per page.+listProfileObjects_maxResults :: Lens.Lens' ListProfileObjects (Prelude.Maybe Prelude.Natural)+listProfileObjects_maxResults = Lens.lens (\ListProfileObjects' {maxResults} -> maxResults) (\s@ListProfileObjects' {} a -> s {maxResults = a} :: ListProfileObjects)++-- | The pagination token from the previous call to ListProfileObjects.+listProfileObjects_nextToken :: Lens.Lens' ListProfileObjects (Prelude.Maybe Prelude.Text)+listProfileObjects_nextToken = Lens.lens (\ListProfileObjects' {nextToken} -> nextToken) (\s@ListProfileObjects' {} a -> s {nextToken = a} :: ListProfileObjects)++-- | Applies a filter to the response to include profile objects with the+-- specified index values. This filter is only supported for ObjectTypeName+-- _asset, _case and _order.+listProfileObjects_objectFilter :: Lens.Lens' ListProfileObjects (Prelude.Maybe ObjectFilter)+listProfileObjects_objectFilter = Lens.lens (\ListProfileObjects' {objectFilter} -> objectFilter) (\s@ListProfileObjects' {} a -> s {objectFilter = a} :: ListProfileObjects)++-- | The unique name of the domain.+listProfileObjects_domainName :: Lens.Lens' ListProfileObjects Prelude.Text+listProfileObjects_domainName = Lens.lens (\ListProfileObjects' {domainName} -> domainName) (\s@ListProfileObjects' {} a -> s {domainName = a} :: ListProfileObjects)++-- | The name of the profile object type.+listProfileObjects_objectTypeName :: Lens.Lens' ListProfileObjects Prelude.Text+listProfileObjects_objectTypeName = Lens.lens (\ListProfileObjects' {objectTypeName} -> objectTypeName) (\s@ListProfileObjects' {} a -> s {objectTypeName = a} :: ListProfileObjects)++-- | The unique identifier of a customer profile.+listProfileObjects_profileId :: Lens.Lens' ListProfileObjects Prelude.Text+listProfileObjects_profileId = Lens.lens (\ListProfileObjects' {profileId} -> profileId) (\s@ListProfileObjects' {} a -> s {profileId = a} :: ListProfileObjects)++instance Core.AWSRequest ListProfileObjects where+  type+    AWSResponse ListProfileObjects =+      ListProfileObjectsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListProfileObjectsResponse'+            Prelude.<$> (x Data..?> "Items" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListProfileObjects where+  hashWithSalt _salt ListProfileObjects' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` objectFilter+      `Prelude.hashWithSalt` domainName+      `Prelude.hashWithSalt` objectTypeName+      `Prelude.hashWithSalt` profileId++instance Prelude.NFData ListProfileObjects where+  rnf ListProfileObjects' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf objectFilter+      `Prelude.seq` Prelude.rnf domainName+      `Prelude.seq` Prelude.rnf objectTypeName+      `Prelude.seq` Prelude.rnf profileId++instance Data.ToHeaders ListProfileObjects where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListProfileObjects where+  toJSON ListProfileObjects' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ObjectFilter" Data..=) Prelude.<$> objectFilter,+            Prelude.Just+              ("ObjectTypeName" Data..= objectTypeName),+            Prelude.Just ("ProfileId" Data..= profileId)+          ]+      )++instance Data.ToPath ListProfileObjects where+  toPath ListProfileObjects' {..} =+    Prelude.mconcat+      [ "/domains/",+        Data.toBS domainName,+        "/profiles/objects"+      ]++instance Data.ToQuery ListProfileObjects where+  toQuery ListProfileObjects' {..} =+    Prelude.mconcat+      [ "max-results" Data.=: maxResults,+        "next-token" Data.=: nextToken+      ]++-- | /See:/ 'newListProfileObjectsResponse' smart constructor.+data ListProfileObjectsResponse = ListProfileObjectsResponse'+  { -- | The list of ListProfileObject instances.+    items :: Prelude.Maybe [ListProfileObjectsItem],+    -- | The pagination token from the previous call to ListProfileObjects.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListProfileObjectsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'items', 'listProfileObjectsResponse_items' - The list of ListProfileObject instances.+--+-- 'nextToken', 'listProfileObjectsResponse_nextToken' - The pagination token from the previous call to ListProfileObjects.+--+-- 'httpStatus', 'listProfileObjectsResponse_httpStatus' - The response's http status code.+newListProfileObjectsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListProfileObjectsResponse+newListProfileObjectsResponse pHttpStatus_ =+  ListProfileObjectsResponse'+    { items =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The list of ListProfileObject instances.+listProfileObjectsResponse_items :: Lens.Lens' ListProfileObjectsResponse (Prelude.Maybe [ListProfileObjectsItem])+listProfileObjectsResponse_items = Lens.lens (\ListProfileObjectsResponse' {items} -> items) (\s@ListProfileObjectsResponse' {} a -> s {items = a} :: ListProfileObjectsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The pagination token from the previous call to ListProfileObjects.+listProfileObjectsResponse_nextToken :: Lens.Lens' ListProfileObjectsResponse (Prelude.Maybe Prelude.Text)+listProfileObjectsResponse_nextToken = Lens.lens (\ListProfileObjectsResponse' {nextToken} -> nextToken) (\s@ListProfileObjectsResponse' {} a -> s {nextToken = a} :: ListProfileObjectsResponse)++-- | The response's http status code.+listProfileObjectsResponse_httpStatus :: Lens.Lens' ListProfileObjectsResponse Prelude.Int+listProfileObjectsResponse_httpStatus = Lens.lens (\ListProfileObjectsResponse' {httpStatus} -> httpStatus) (\s@ListProfileObjectsResponse' {} a -> s {httpStatus = a} :: ListProfileObjectsResponse)++instance Prelude.NFData ListProfileObjectsResponse where+  rnf ListProfileObjectsResponse' {..} =+    Prelude.rnf items+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/CustomerProfiles/ListTagsForResource.hs view
@@ -0,0 +1,161 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.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)+--+-- Displays the tags associated with an Amazon Connect Customer Profiles+-- resource. In Connect Customer Profiles, domains, profile object types,+-- and integrations can be tagged.+module Amazonka.CustomerProfiles.ListTagsForResource+  ( -- * Creating a Request+    ListTagsForResource (..),+    newListTagsForResource,++    -- * Request Lenses+    listTagsForResource_resourceArn,++    -- * Destructuring the Response+    ListTagsForResourceResponse (..),+    newListTagsForResourceResponse,++    -- * Response Lenses+    listTagsForResourceResponse_tags,+    listTagsForResourceResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListTagsForResource' smart constructor.+data ListTagsForResource = ListTagsForResource'+  { -- | The ARN of the resource for which you want to view tags.+    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 ARN of the resource for which you want to view tags.+newListTagsForResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  ListTagsForResource+newListTagsForResource pResourceArn_ =+  ListTagsForResource' {resourceArn = pResourceArn_}++-- | The ARN of the resource for which you want to view tags.+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.<$> (x Data..?> "tags" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListTagsForResource where+  hashWithSalt _salt ListTagsForResource' {..} =+    _salt `Prelude.hashWithSalt` resourceArn++instance Prelude.NFData ListTagsForResource where+  rnf ListTagsForResource' {..} =+    Prelude.rnf resourceArn++instance Data.ToHeaders ListTagsForResource where+  toHeaders =+    Prelude.const+      ( Prelude.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 tags used to organize, track, or control access for this resource.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  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:+--+-- 'tags', 'listTagsForResourceResponse_tags' - The tags used to organize, track, or control access for this resource.+--+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.+newListTagsForResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListTagsForResourceResponse+newListTagsForResourceResponse pHttpStatus_ =+  ListTagsForResourceResponse'+    { tags =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The tags used to organize, track, or control access for this resource.+listTagsForResourceResponse_tags :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+listTagsForResourceResponse_tags = Lens.lens (\ListTagsForResourceResponse' {tags} -> tags) (\s@ListTagsForResourceResponse' {} a -> s {tags = a} :: ListTagsForResourceResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+listTagsForResourceResponse_httpStatus :: Lens.Lens' ListTagsForResourceResponse Prelude.Int+listTagsForResourceResponse_httpStatus = Lens.lens (\ListTagsForResourceResponse' {httpStatus} -> httpStatus) (\s@ListTagsForResourceResponse' {} a -> s {httpStatus = a} :: ListTagsForResourceResponse)++instance Prelude.NFData ListTagsForResourceResponse where+  rnf ListTagsForResourceResponse' {..} =+    Prelude.rnf tags+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/CustomerProfiles/ListWorkflows.hs view
@@ -0,0 +1,271 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.ListWorkflows+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Query to list all workflows.+module Amazonka.CustomerProfiles.ListWorkflows+  ( -- * Creating a Request+    ListWorkflows (..),+    newListWorkflows,++    -- * Request Lenses+    listWorkflows_maxResults,+    listWorkflows_nextToken,+    listWorkflows_queryEndDate,+    listWorkflows_queryStartDate,+    listWorkflows_status,+    listWorkflows_workflowType,+    listWorkflows_domainName,++    -- * Destructuring the Response+    ListWorkflowsResponse (..),+    newListWorkflowsResponse,++    -- * Response Lenses+    listWorkflowsResponse_items,+    listWorkflowsResponse_nextToken,+    listWorkflowsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListWorkflows' smart constructor.+data ListWorkflows = ListWorkflows'+  { -- | The maximum number of results to return per page.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token for the next set of results. Use the value returned in the+    -- previous response in the next request to retrieve the next set of+    -- results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | Retrieve workflows ended after timestamp.+    queryEndDate :: Prelude.Maybe Data.POSIX,+    -- | Retrieve workflows started after timestamp.+    queryStartDate :: Prelude.Maybe Data.POSIX,+    -- | Status of workflow execution.+    status :: Prelude.Maybe Status,+    -- | The type of workflow. The only supported value is APPFLOW_INTEGRATION.+    workflowType :: Prelude.Maybe WorkflowType,+    -- | The unique name of the domain.+    domainName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListWorkflows' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listWorkflows_maxResults' - The maximum number of results to return per page.+--+-- 'nextToken', 'listWorkflows_nextToken' - The token for the next set of results. Use the value returned in the+-- previous response in the next request to retrieve the next set of+-- results.+--+-- 'queryEndDate', 'listWorkflows_queryEndDate' - Retrieve workflows ended after timestamp.+--+-- 'queryStartDate', 'listWorkflows_queryStartDate' - Retrieve workflows started after timestamp.+--+-- 'status', 'listWorkflows_status' - Status of workflow execution.+--+-- 'workflowType', 'listWorkflows_workflowType' - The type of workflow. The only supported value is APPFLOW_INTEGRATION.+--+-- 'domainName', 'listWorkflows_domainName' - The unique name of the domain.+newListWorkflows ::+  -- | 'domainName'+  Prelude.Text ->+  ListWorkflows+newListWorkflows pDomainName_ =+  ListWorkflows'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      queryEndDate = Prelude.Nothing,+      queryStartDate = Prelude.Nothing,+      status = Prelude.Nothing,+      workflowType = Prelude.Nothing,+      domainName = pDomainName_+    }++-- | The maximum number of results to return per page.+listWorkflows_maxResults :: Lens.Lens' ListWorkflows (Prelude.Maybe Prelude.Natural)+listWorkflows_maxResults = Lens.lens (\ListWorkflows' {maxResults} -> maxResults) (\s@ListWorkflows' {} a -> s {maxResults = a} :: ListWorkflows)++-- | The token for the next set of results. Use the value returned in the+-- previous response in the next request to retrieve the next set of+-- results.+listWorkflows_nextToken :: Lens.Lens' ListWorkflows (Prelude.Maybe Prelude.Text)+listWorkflows_nextToken = Lens.lens (\ListWorkflows' {nextToken} -> nextToken) (\s@ListWorkflows' {} a -> s {nextToken = a} :: ListWorkflows)++-- | Retrieve workflows ended after timestamp.+listWorkflows_queryEndDate :: Lens.Lens' ListWorkflows (Prelude.Maybe Prelude.UTCTime)+listWorkflows_queryEndDate = Lens.lens (\ListWorkflows' {queryEndDate} -> queryEndDate) (\s@ListWorkflows' {} a -> s {queryEndDate = a} :: ListWorkflows) Prelude.. Lens.mapping Data._Time++-- | Retrieve workflows started after timestamp.+listWorkflows_queryStartDate :: Lens.Lens' ListWorkflows (Prelude.Maybe Prelude.UTCTime)+listWorkflows_queryStartDate = Lens.lens (\ListWorkflows' {queryStartDate} -> queryStartDate) (\s@ListWorkflows' {} a -> s {queryStartDate = a} :: ListWorkflows) Prelude.. Lens.mapping Data._Time++-- | Status of workflow execution.+listWorkflows_status :: Lens.Lens' ListWorkflows (Prelude.Maybe Status)+listWorkflows_status = Lens.lens (\ListWorkflows' {status} -> status) (\s@ListWorkflows' {} a -> s {status = a} :: ListWorkflows)++-- | The type of workflow. The only supported value is APPFLOW_INTEGRATION.+listWorkflows_workflowType :: Lens.Lens' ListWorkflows (Prelude.Maybe WorkflowType)+listWorkflows_workflowType = Lens.lens (\ListWorkflows' {workflowType} -> workflowType) (\s@ListWorkflows' {} a -> s {workflowType = a} :: ListWorkflows)++-- | The unique name of the domain.+listWorkflows_domainName :: Lens.Lens' ListWorkflows Prelude.Text+listWorkflows_domainName = Lens.lens (\ListWorkflows' {domainName} -> domainName) (\s@ListWorkflows' {} a -> s {domainName = a} :: ListWorkflows)++instance Core.AWSRequest ListWorkflows where+  type+    AWSResponse ListWorkflows =+      ListWorkflowsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListWorkflowsResponse'+            Prelude.<$> (x Data..?> "Items" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListWorkflows where+  hashWithSalt _salt ListWorkflows' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` queryEndDate+      `Prelude.hashWithSalt` queryStartDate+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` workflowType+      `Prelude.hashWithSalt` domainName++instance Prelude.NFData ListWorkflows where+  rnf ListWorkflows' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf queryEndDate+      `Prelude.seq` Prelude.rnf queryStartDate+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf workflowType+      `Prelude.seq` Prelude.rnf domainName++instance Data.ToHeaders ListWorkflows where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListWorkflows where+  toJSON ListWorkflows' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("QueryEndDate" Data..=) Prelude.<$> queryEndDate,+            ("QueryStartDate" Data..=)+              Prelude.<$> queryStartDate,+            ("Status" Data..=) Prelude.<$> status,+            ("WorkflowType" Data..=) Prelude.<$> workflowType+          ]+      )++instance Data.ToPath ListWorkflows where+  toPath ListWorkflows' {..} =+    Prelude.mconcat+      ["/domains/", Data.toBS domainName, "/workflows"]++instance Data.ToQuery ListWorkflows where+  toQuery ListWorkflows' {..} =+    Prelude.mconcat+      [ "max-results" Data.=: maxResults,+        "next-token" Data.=: nextToken+      ]++-- | /See:/ 'newListWorkflowsResponse' smart constructor.+data ListWorkflowsResponse = ListWorkflowsResponse'+  { -- | List containing workflow details.+    items :: Prelude.Maybe [ListWorkflowsItem],+    -- | If there are additional results, this is the token for the next set of+    -- results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListWorkflowsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'items', 'listWorkflowsResponse_items' - List containing workflow details.+--+-- 'nextToken', 'listWorkflowsResponse_nextToken' - If there are additional results, this is the token for the next set of+-- results.+--+-- 'httpStatus', 'listWorkflowsResponse_httpStatus' - The response's http status code.+newListWorkflowsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListWorkflowsResponse+newListWorkflowsResponse pHttpStatus_ =+  ListWorkflowsResponse'+    { items = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | List containing workflow details.+listWorkflowsResponse_items :: Lens.Lens' ListWorkflowsResponse (Prelude.Maybe [ListWorkflowsItem])+listWorkflowsResponse_items = Lens.lens (\ListWorkflowsResponse' {items} -> items) (\s@ListWorkflowsResponse' {} a -> s {items = a} :: ListWorkflowsResponse) Prelude.. Lens.mapping Lens.coerced++-- | If there are additional results, this is the token for the next set of+-- results.+listWorkflowsResponse_nextToken :: Lens.Lens' ListWorkflowsResponse (Prelude.Maybe Prelude.Text)+listWorkflowsResponse_nextToken = Lens.lens (\ListWorkflowsResponse' {nextToken} -> nextToken) (\s@ListWorkflowsResponse' {} a -> s {nextToken = a} :: ListWorkflowsResponse)++-- | The response's http status code.+listWorkflowsResponse_httpStatus :: Lens.Lens' ListWorkflowsResponse Prelude.Int+listWorkflowsResponse_httpStatus = Lens.lens (\ListWorkflowsResponse' {httpStatus} -> httpStatus) (\s@ListWorkflowsResponse' {} a -> s {httpStatus = a} :: ListWorkflowsResponse)++instance Prelude.NFData ListWorkflowsResponse where+  rnf ListWorkflowsResponse' {..} =+    Prelude.rnf items+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/CustomerProfiles/MergeProfiles.hs view
@@ -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.CustomerProfiles.MergeProfiles+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Runs an AWS Lambda job that does the following:+--+-- 1.  All the profileKeys in the @ProfileToBeMerged@ will be moved to the+--     main profile.+--+-- 2.  All the objects in the @ProfileToBeMerged@ will be moved to the main+--     profile.+--+-- 3.  All the @ProfileToBeMerged@ will be deleted at the end.+--+-- 4.  All the profileKeys in the @ProfileIdsToBeMerged@ will be moved to+--     the main profile.+--+-- 5.  Standard fields are merged as follows:+--+--     1.  Fields are always \"union\"-ed if there are no conflicts in+--         standard fields or attributeKeys.+--+--     2.  When there are conflicting fields:+--+--         1.  If no @SourceProfileIds@ entry is specified, the main+--             Profile value is always taken.+--+--         2.  If a @SourceProfileIds@ entry is specified, the specified+--             profileId is always taken, even if it is a NULL value.+--+-- You can use MergeProfiles together with+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_GetMatches.html GetMatches>,+-- which returns potentially matching profiles, or use it with the results+-- of another matching system. After profiles have been merged, they cannot+-- be separated (unmerged).+module Amazonka.CustomerProfiles.MergeProfiles+  ( -- * Creating a Request+    MergeProfiles (..),+    newMergeProfiles,++    -- * Request Lenses+    mergeProfiles_fieldSourceProfileIds,+    mergeProfiles_domainName,+    mergeProfiles_mainProfileId,+    mergeProfiles_profileIdsToBeMerged,++    -- * Destructuring the Response+    MergeProfilesResponse (..),+    newMergeProfilesResponse,++    -- * Response Lenses+    mergeProfilesResponse_message,+    mergeProfilesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newMergeProfiles' smart constructor.+data MergeProfiles = MergeProfiles'+  { -- | The identifiers of the fields in the profile that has the information+    -- you want to apply to the merge. For example, say you want to merge+    -- EmailAddress from Profile1 into MainProfile. This would be the+    -- identifier of the EmailAddress field in Profile1.+    fieldSourceProfileIds :: Prelude.Maybe FieldSourceProfileIds,+    -- | The unique name of the domain.+    domainName :: Prelude.Text,+    -- | The identifier of the profile to be taken.+    mainProfileId :: Prelude.Text,+    -- | The identifier of the profile to be merged into MainProfileId.+    profileIdsToBeMerged :: Prelude.NonEmpty Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'MergeProfiles' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'fieldSourceProfileIds', 'mergeProfiles_fieldSourceProfileIds' - The identifiers of the fields in the profile that has the information+-- you want to apply to the merge. For example, say you want to merge+-- EmailAddress from Profile1 into MainProfile. This would be the+-- identifier of the EmailAddress field in Profile1.+--+-- 'domainName', 'mergeProfiles_domainName' - The unique name of the domain.+--+-- 'mainProfileId', 'mergeProfiles_mainProfileId' - The identifier of the profile to be taken.+--+-- 'profileIdsToBeMerged', 'mergeProfiles_profileIdsToBeMerged' - The identifier of the profile to be merged into MainProfileId.+newMergeProfiles ::+  -- | 'domainName'+  Prelude.Text ->+  -- | 'mainProfileId'+  Prelude.Text ->+  -- | 'profileIdsToBeMerged'+  Prelude.NonEmpty Prelude.Text ->+  MergeProfiles+newMergeProfiles+  pDomainName_+  pMainProfileId_+  pProfileIdsToBeMerged_ =+    MergeProfiles'+      { fieldSourceProfileIds =+          Prelude.Nothing,+        domainName = pDomainName_,+        mainProfileId = pMainProfileId_,+        profileIdsToBeMerged =+          Lens.coerced Lens.# pProfileIdsToBeMerged_+      }++-- | The identifiers of the fields in the profile that has the information+-- you want to apply to the merge. For example, say you want to merge+-- EmailAddress from Profile1 into MainProfile. This would be the+-- identifier of the EmailAddress field in Profile1.+mergeProfiles_fieldSourceProfileIds :: Lens.Lens' MergeProfiles (Prelude.Maybe FieldSourceProfileIds)+mergeProfiles_fieldSourceProfileIds = Lens.lens (\MergeProfiles' {fieldSourceProfileIds} -> fieldSourceProfileIds) (\s@MergeProfiles' {} a -> s {fieldSourceProfileIds = a} :: MergeProfiles)++-- | The unique name of the domain.+mergeProfiles_domainName :: Lens.Lens' MergeProfiles Prelude.Text+mergeProfiles_domainName = Lens.lens (\MergeProfiles' {domainName} -> domainName) (\s@MergeProfiles' {} a -> s {domainName = a} :: MergeProfiles)++-- | The identifier of the profile to be taken.+mergeProfiles_mainProfileId :: Lens.Lens' MergeProfiles Prelude.Text+mergeProfiles_mainProfileId = Lens.lens (\MergeProfiles' {mainProfileId} -> mainProfileId) (\s@MergeProfiles' {} a -> s {mainProfileId = a} :: MergeProfiles)++-- | The identifier of the profile to be merged into MainProfileId.+mergeProfiles_profileIdsToBeMerged :: Lens.Lens' MergeProfiles (Prelude.NonEmpty Prelude.Text)+mergeProfiles_profileIdsToBeMerged = Lens.lens (\MergeProfiles' {profileIdsToBeMerged} -> profileIdsToBeMerged) (\s@MergeProfiles' {} a -> s {profileIdsToBeMerged = a} :: MergeProfiles) Prelude.. Lens.coerced++instance Core.AWSRequest MergeProfiles where+  type+    AWSResponse MergeProfiles =+      MergeProfilesResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          MergeProfilesResponse'+            Prelude.<$> (x Data..?> "Message")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable MergeProfiles where+  hashWithSalt _salt MergeProfiles' {..} =+    _salt+      `Prelude.hashWithSalt` fieldSourceProfileIds+      `Prelude.hashWithSalt` domainName+      `Prelude.hashWithSalt` mainProfileId+      `Prelude.hashWithSalt` profileIdsToBeMerged++instance Prelude.NFData MergeProfiles where+  rnf MergeProfiles' {..} =+    Prelude.rnf fieldSourceProfileIds+      `Prelude.seq` Prelude.rnf domainName+      `Prelude.seq` Prelude.rnf mainProfileId+      `Prelude.seq` Prelude.rnf profileIdsToBeMerged++instance Data.ToHeaders MergeProfiles where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON MergeProfiles where+  toJSON MergeProfiles' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("FieldSourceProfileIds" Data..=)+              Prelude.<$> fieldSourceProfileIds,+            Prelude.Just ("MainProfileId" Data..= mainProfileId),+            Prelude.Just+              ( "ProfileIdsToBeMerged"+                  Data..= profileIdsToBeMerged+              )+          ]+      )++instance Data.ToPath MergeProfiles where+  toPath MergeProfiles' {..} =+    Prelude.mconcat+      [ "/domains/",+        Data.toBS domainName,+        "/profiles/objects/merge"+      ]++instance Data.ToQuery MergeProfiles where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newMergeProfilesResponse' smart constructor.+data MergeProfilesResponse = MergeProfilesResponse'+  { -- | A message that indicates the merge request is complete.+    message :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'MergeProfilesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'message', 'mergeProfilesResponse_message' - A message that indicates the merge request is complete.+--+-- 'httpStatus', 'mergeProfilesResponse_httpStatus' - The response's http status code.+newMergeProfilesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  MergeProfilesResponse+newMergeProfilesResponse pHttpStatus_ =+  MergeProfilesResponse'+    { message = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A message that indicates the merge request is complete.+mergeProfilesResponse_message :: Lens.Lens' MergeProfilesResponse (Prelude.Maybe Prelude.Text)+mergeProfilesResponse_message = Lens.lens (\MergeProfilesResponse' {message} -> message) (\s@MergeProfilesResponse' {} a -> s {message = a} :: MergeProfilesResponse)++-- | The response's http status code.+mergeProfilesResponse_httpStatus :: Lens.Lens' MergeProfilesResponse Prelude.Int+mergeProfilesResponse_httpStatus = Lens.lens (\MergeProfilesResponse' {httpStatus} -> httpStatus) (\s@MergeProfilesResponse' {} a -> s {httpStatus = a} :: MergeProfilesResponse)++instance Prelude.NFData MergeProfilesResponse where+  rnf MergeProfilesResponse' {..} =+    Prelude.rnf message+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/CustomerProfiles/PutIntegration.hs view
@@ -0,0 +1,403 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.PutIntegration+-- 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 an integration between the service and a third-party service, which+-- includes Amazon AppFlow and Amazon Connect.+--+-- An integration can belong to only one domain.+--+-- To add or remove tags on an existing Integration, see+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_TagResource.html TagResource>+-- \/+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_UntagResource.html UntagResource>.+module Amazonka.CustomerProfiles.PutIntegration+  ( -- * Creating a Request+    PutIntegration (..),+    newPutIntegration,++    -- * Request Lenses+    putIntegration_flowDefinition,+    putIntegration_objectTypeName,+    putIntegration_objectTypeNames,+    putIntegration_tags,+    putIntegration_uri,+    putIntegration_domainName,++    -- * Destructuring the Response+    PutIntegrationResponse (..),+    newPutIntegrationResponse,++    -- * Response Lenses+    putIntegrationResponse_isUnstructured,+    putIntegrationResponse_objectTypeName,+    putIntegrationResponse_objectTypeNames,+    putIntegrationResponse_tags,+    putIntegrationResponse_workflowId,+    putIntegrationResponse_httpStatus,+    putIntegrationResponse_domainName,+    putIntegrationResponse_uri,+    putIntegrationResponse_createdAt,+    putIntegrationResponse_lastUpdatedAt,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newPutIntegration' smart constructor.+data PutIntegration = PutIntegration'+  { -- | The configuration that controls how Customer Profiles retrieves data+    -- from the source.+    flowDefinition :: Prelude.Maybe FlowDefinition,+    -- | The name of the profile object type.+    objectTypeName :: Prelude.Maybe Prelude.Text,+    -- | A map in which each key is an event type from an external application+    -- such as Segment or Shopify, and each value is an @ObjectTypeName@+    -- (template) used to ingest the event. It supports the following event+    -- types: @SegmentIdentify@, @ShopifyCreateCustomers@,+    -- @ShopifyUpdateCustomers@, @ShopifyCreateDraftOrders@,+    -- @ShopifyUpdateDraftOrders@, @ShopifyCreateOrders@, and+    -- @ShopifyUpdatedOrders@.+    objectTypeNames :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The tags used to organize, track, or control access for this resource.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The URI of the S3 bucket or any other type of data source.+    uri :: Prelude.Maybe Prelude.Text,+    -- | The unique name of the domain.+    domainName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutIntegration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'flowDefinition', 'putIntegration_flowDefinition' - The configuration that controls how Customer Profiles retrieves data+-- from the source.+--+-- 'objectTypeName', 'putIntegration_objectTypeName' - The name of the profile object type.+--+-- 'objectTypeNames', 'putIntegration_objectTypeNames' - A map in which each key is an event type from an external application+-- such as Segment or Shopify, and each value is an @ObjectTypeName@+-- (template) used to ingest the event. It supports the following event+-- types: @SegmentIdentify@, @ShopifyCreateCustomers@,+-- @ShopifyUpdateCustomers@, @ShopifyCreateDraftOrders@,+-- @ShopifyUpdateDraftOrders@, @ShopifyCreateOrders@, and+-- @ShopifyUpdatedOrders@.+--+-- 'tags', 'putIntegration_tags' - The tags used to organize, track, or control access for this resource.+--+-- 'uri', 'putIntegration_uri' - The URI of the S3 bucket or any other type of data source.+--+-- 'domainName', 'putIntegration_domainName' - The unique name of the domain.+newPutIntegration ::+  -- | 'domainName'+  Prelude.Text ->+  PutIntegration+newPutIntegration pDomainName_ =+  PutIntegration'+    { flowDefinition = Prelude.Nothing,+      objectTypeName = Prelude.Nothing,+      objectTypeNames = Prelude.Nothing,+      tags = Prelude.Nothing,+      uri = Prelude.Nothing,+      domainName = pDomainName_+    }++-- | The configuration that controls how Customer Profiles retrieves data+-- from the source.+putIntegration_flowDefinition :: Lens.Lens' PutIntegration (Prelude.Maybe FlowDefinition)+putIntegration_flowDefinition = Lens.lens (\PutIntegration' {flowDefinition} -> flowDefinition) (\s@PutIntegration' {} a -> s {flowDefinition = a} :: PutIntegration)++-- | The name of the profile object type.+putIntegration_objectTypeName :: Lens.Lens' PutIntegration (Prelude.Maybe Prelude.Text)+putIntegration_objectTypeName = Lens.lens (\PutIntegration' {objectTypeName} -> objectTypeName) (\s@PutIntegration' {} a -> s {objectTypeName = a} :: PutIntegration)++-- | A map in which each key is an event type from an external application+-- such as Segment or Shopify, and each value is an @ObjectTypeName@+-- (template) used to ingest the event. It supports the following event+-- types: @SegmentIdentify@, @ShopifyCreateCustomers@,+-- @ShopifyUpdateCustomers@, @ShopifyCreateDraftOrders@,+-- @ShopifyUpdateDraftOrders@, @ShopifyCreateOrders@, and+-- @ShopifyUpdatedOrders@.+putIntegration_objectTypeNames :: Lens.Lens' PutIntegration (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+putIntegration_objectTypeNames = Lens.lens (\PutIntegration' {objectTypeNames} -> objectTypeNames) (\s@PutIntegration' {} a -> s {objectTypeNames = a} :: PutIntegration) Prelude.. Lens.mapping Lens.coerced++-- | The tags used to organize, track, or control access for this resource.+putIntegration_tags :: Lens.Lens' PutIntegration (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+putIntegration_tags = Lens.lens (\PutIntegration' {tags} -> tags) (\s@PutIntegration' {} a -> s {tags = a} :: PutIntegration) Prelude.. Lens.mapping Lens.coerced++-- | The URI of the S3 bucket or any other type of data source.+putIntegration_uri :: Lens.Lens' PutIntegration (Prelude.Maybe Prelude.Text)+putIntegration_uri = Lens.lens (\PutIntegration' {uri} -> uri) (\s@PutIntegration' {} a -> s {uri = a} :: PutIntegration)++-- | The unique name of the domain.+putIntegration_domainName :: Lens.Lens' PutIntegration Prelude.Text+putIntegration_domainName = Lens.lens (\PutIntegration' {domainName} -> domainName) (\s@PutIntegration' {} a -> s {domainName = a} :: PutIntegration)++instance Core.AWSRequest PutIntegration where+  type+    AWSResponse PutIntegration =+      PutIntegrationResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          PutIntegrationResponse'+            Prelude.<$> (x Data..?> "IsUnstructured")+            Prelude.<*> (x Data..?> "ObjectTypeName")+            Prelude.<*> ( x+                            Data..?> "ObjectTypeNames"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "WorkflowId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "DomainName")+            Prelude.<*> (x Data..:> "Uri")+            Prelude.<*> (x Data..:> "CreatedAt")+            Prelude.<*> (x Data..:> "LastUpdatedAt")+      )++instance Prelude.Hashable PutIntegration where+  hashWithSalt _salt PutIntegration' {..} =+    _salt+      `Prelude.hashWithSalt` flowDefinition+      `Prelude.hashWithSalt` objectTypeName+      `Prelude.hashWithSalt` objectTypeNames+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` uri+      `Prelude.hashWithSalt` domainName++instance Prelude.NFData PutIntegration where+  rnf PutIntegration' {..} =+    Prelude.rnf flowDefinition+      `Prelude.seq` Prelude.rnf objectTypeName+      `Prelude.seq` Prelude.rnf objectTypeNames+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf uri+      `Prelude.seq` Prelude.rnf domainName++instance Data.ToHeaders PutIntegration where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON PutIntegration where+  toJSON PutIntegration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("FlowDefinition" Data..=)+              Prelude.<$> flowDefinition,+            ("ObjectTypeName" Data..=)+              Prelude.<$> objectTypeName,+            ("ObjectTypeNames" Data..=)+              Prelude.<$> objectTypeNames,+            ("Tags" Data..=) Prelude.<$> tags,+            ("Uri" Data..=) Prelude.<$> uri+          ]+      )++instance Data.ToPath PutIntegration where+  toPath PutIntegration' {..} =+    Prelude.mconcat+      ["/domains/", Data.toBS domainName, "/integrations"]++instance Data.ToQuery PutIntegration where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newPutIntegrationResponse' smart constructor.+data PutIntegrationResponse = PutIntegrationResponse'+  { -- | Boolean to indicate if the Flow associated with the Integration is+    -- created via Appflow console or with ObjectTypeName equals _unstructured+    -- via API\/CLI in flowDefinition+    isUnstructured :: Prelude.Maybe Prelude.Bool,+    -- | The name of the profile object type.+    objectTypeName :: Prelude.Maybe Prelude.Text,+    -- | A map in which each key is an event type from an external application+    -- such as Segment or Shopify, and each value is an @ObjectTypeName@+    -- (template) used to ingest the event. It supports the following event+    -- types: @SegmentIdentify@, @ShopifyCreateCustomers@,+    -- @ShopifyUpdateCustomers@, @ShopifyCreateDraftOrders@,+    -- @ShopifyUpdateDraftOrders@, @ShopifyCreateOrders@, and+    -- @ShopifyUpdatedOrders@.+    objectTypeNames :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The tags used to organize, track, or control access for this resource.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | Unique identifier for the workflow.+    workflowId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The unique name of the domain.+    domainName :: Prelude.Text,+    -- | The URI of the S3 bucket or any other type of data source.+    uri :: Prelude.Text,+    -- | The timestamp of when the domain was created.+    createdAt :: Data.POSIX,+    -- | The timestamp of when the domain was most recently edited.+    lastUpdatedAt :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutIntegrationResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'isUnstructured', 'putIntegrationResponse_isUnstructured' - Boolean to indicate if the Flow associated with the Integration is+-- created via Appflow console or with ObjectTypeName equals _unstructured+-- via API\/CLI in flowDefinition+--+-- 'objectTypeName', 'putIntegrationResponse_objectTypeName' - The name of the profile object type.+--+-- 'objectTypeNames', 'putIntegrationResponse_objectTypeNames' - A map in which each key is an event type from an external application+-- such as Segment or Shopify, and each value is an @ObjectTypeName@+-- (template) used to ingest the event. It supports the following event+-- types: @SegmentIdentify@, @ShopifyCreateCustomers@,+-- @ShopifyUpdateCustomers@, @ShopifyCreateDraftOrders@,+-- @ShopifyUpdateDraftOrders@, @ShopifyCreateOrders@, and+-- @ShopifyUpdatedOrders@.+--+-- 'tags', 'putIntegrationResponse_tags' - The tags used to organize, track, or control access for this resource.+--+-- 'workflowId', 'putIntegrationResponse_workflowId' - Unique identifier for the workflow.+--+-- 'httpStatus', 'putIntegrationResponse_httpStatus' - The response's http status code.+--+-- 'domainName', 'putIntegrationResponse_domainName' - The unique name of the domain.+--+-- 'uri', 'putIntegrationResponse_uri' - The URI of the S3 bucket or any other type of data source.+--+-- 'createdAt', 'putIntegrationResponse_createdAt' - The timestamp of when the domain was created.+--+-- 'lastUpdatedAt', 'putIntegrationResponse_lastUpdatedAt' - The timestamp of when the domain was most recently edited.+newPutIntegrationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'domainName'+  Prelude.Text ->+  -- | 'uri'+  Prelude.Text ->+  -- | 'createdAt'+  Prelude.UTCTime ->+  -- | 'lastUpdatedAt'+  Prelude.UTCTime ->+  PutIntegrationResponse+newPutIntegrationResponse+  pHttpStatus_+  pDomainName_+  pUri_+  pCreatedAt_+  pLastUpdatedAt_ =+    PutIntegrationResponse'+      { isUnstructured =+          Prelude.Nothing,+        objectTypeName = Prelude.Nothing,+        objectTypeNames = Prelude.Nothing,+        tags = Prelude.Nothing,+        workflowId = Prelude.Nothing,+        httpStatus = pHttpStatus_,+        domainName = pDomainName_,+        uri = pUri_,+        createdAt = Data._Time Lens.# pCreatedAt_,+        lastUpdatedAt = Data._Time Lens.# pLastUpdatedAt_+      }++-- | Boolean to indicate if the Flow associated with the Integration is+-- created via Appflow console or with ObjectTypeName equals _unstructured+-- via API\/CLI in flowDefinition+putIntegrationResponse_isUnstructured :: Lens.Lens' PutIntegrationResponse (Prelude.Maybe Prelude.Bool)+putIntegrationResponse_isUnstructured = Lens.lens (\PutIntegrationResponse' {isUnstructured} -> isUnstructured) (\s@PutIntegrationResponse' {} a -> s {isUnstructured = a} :: PutIntegrationResponse)++-- | The name of the profile object type.+putIntegrationResponse_objectTypeName :: Lens.Lens' PutIntegrationResponse (Prelude.Maybe Prelude.Text)+putIntegrationResponse_objectTypeName = Lens.lens (\PutIntegrationResponse' {objectTypeName} -> objectTypeName) (\s@PutIntegrationResponse' {} a -> s {objectTypeName = a} :: PutIntegrationResponse)++-- | A map in which each key is an event type from an external application+-- such as Segment or Shopify, and each value is an @ObjectTypeName@+-- (template) used to ingest the event. It supports the following event+-- types: @SegmentIdentify@, @ShopifyCreateCustomers@,+-- @ShopifyUpdateCustomers@, @ShopifyCreateDraftOrders@,+-- @ShopifyUpdateDraftOrders@, @ShopifyCreateOrders@, and+-- @ShopifyUpdatedOrders@.+putIntegrationResponse_objectTypeNames :: Lens.Lens' PutIntegrationResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+putIntegrationResponse_objectTypeNames = Lens.lens (\PutIntegrationResponse' {objectTypeNames} -> objectTypeNames) (\s@PutIntegrationResponse' {} a -> s {objectTypeNames = a} :: PutIntegrationResponse) Prelude.. Lens.mapping Lens.coerced++-- | The tags used to organize, track, or control access for this resource.+putIntegrationResponse_tags :: Lens.Lens' PutIntegrationResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+putIntegrationResponse_tags = Lens.lens (\PutIntegrationResponse' {tags} -> tags) (\s@PutIntegrationResponse' {} a -> s {tags = a} :: PutIntegrationResponse) Prelude.. Lens.mapping Lens.coerced++-- | Unique identifier for the workflow.+putIntegrationResponse_workflowId :: Lens.Lens' PutIntegrationResponse (Prelude.Maybe Prelude.Text)+putIntegrationResponse_workflowId = Lens.lens (\PutIntegrationResponse' {workflowId} -> workflowId) (\s@PutIntegrationResponse' {} a -> s {workflowId = a} :: PutIntegrationResponse)++-- | The response's http status code.+putIntegrationResponse_httpStatus :: Lens.Lens' PutIntegrationResponse Prelude.Int+putIntegrationResponse_httpStatus = Lens.lens (\PutIntegrationResponse' {httpStatus} -> httpStatus) (\s@PutIntegrationResponse' {} a -> s {httpStatus = a} :: PutIntegrationResponse)++-- | The unique name of the domain.+putIntegrationResponse_domainName :: Lens.Lens' PutIntegrationResponse Prelude.Text+putIntegrationResponse_domainName = Lens.lens (\PutIntegrationResponse' {domainName} -> domainName) (\s@PutIntegrationResponse' {} a -> s {domainName = a} :: PutIntegrationResponse)++-- | The URI of the S3 bucket or any other type of data source.+putIntegrationResponse_uri :: Lens.Lens' PutIntegrationResponse Prelude.Text+putIntegrationResponse_uri = Lens.lens (\PutIntegrationResponse' {uri} -> uri) (\s@PutIntegrationResponse' {} a -> s {uri = a} :: PutIntegrationResponse)++-- | The timestamp of when the domain was created.+putIntegrationResponse_createdAt :: Lens.Lens' PutIntegrationResponse Prelude.UTCTime+putIntegrationResponse_createdAt = Lens.lens (\PutIntegrationResponse' {createdAt} -> createdAt) (\s@PutIntegrationResponse' {} a -> s {createdAt = a} :: PutIntegrationResponse) Prelude.. Data._Time++-- | The timestamp of when the domain was most recently edited.+putIntegrationResponse_lastUpdatedAt :: Lens.Lens' PutIntegrationResponse Prelude.UTCTime+putIntegrationResponse_lastUpdatedAt = Lens.lens (\PutIntegrationResponse' {lastUpdatedAt} -> lastUpdatedAt) (\s@PutIntegrationResponse' {} a -> s {lastUpdatedAt = a} :: PutIntegrationResponse) Prelude.. Data._Time++instance Prelude.NFData PutIntegrationResponse where+  rnf PutIntegrationResponse' {..} =+    Prelude.rnf isUnstructured+      `Prelude.seq` Prelude.rnf objectTypeName+      `Prelude.seq` Prelude.rnf objectTypeNames+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf workflowId+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf domainName+      `Prelude.seq` Prelude.rnf uri+      `Prelude.seq` Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf lastUpdatedAt
+ gen/Amazonka/CustomerProfiles/PutProfileObject.hs view
@@ -0,0 +1,221 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.PutProfileObject+-- 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 additional objects to customer profiles of a given ObjectType.+--+-- When adding a specific profile object, like a Contact Record, an+-- inferred profile can get created if it is not mapped to an existing+-- profile. The resulting profile will only have a phone number populated+-- in the standard ProfileObject. Any additional Contact Records with the+-- same phone number will be mapped to the same inferred profile.+--+-- When a ProfileObject is created and if a ProfileObjectType already+-- exists for the ProfileObject, it will provide data to a standard profile+-- depending on the ProfileObjectType definition.+--+-- PutProfileObject needs an ObjectType, which can be created using+-- PutProfileObjectType.+module Amazonka.CustomerProfiles.PutProfileObject+  ( -- * Creating a Request+    PutProfileObject (..),+    newPutProfileObject,++    -- * Request Lenses+    putProfileObject_objectTypeName,+    putProfileObject_object,+    putProfileObject_domainName,++    -- * Destructuring the Response+    PutProfileObjectResponse (..),+    newPutProfileObjectResponse,++    -- * Response Lenses+    putProfileObjectResponse_profileObjectUniqueKey,+    putProfileObjectResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newPutProfileObject' smart constructor.+data PutProfileObject = PutProfileObject'+  { -- | The name of the profile object type.+    objectTypeName :: Prelude.Text,+    -- | A string that is serialized from a JSON object.+    object' :: Prelude.Text,+    -- | The unique name of the domain.+    domainName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutProfileObject' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'objectTypeName', 'putProfileObject_objectTypeName' - The name of the profile object type.+--+-- 'object'', 'putProfileObject_object' - A string that is serialized from a JSON object.+--+-- 'domainName', 'putProfileObject_domainName' - The unique name of the domain.+newPutProfileObject ::+  -- | 'objectTypeName'+  Prelude.Text ->+  -- | 'object''+  Prelude.Text ->+  -- | 'domainName'+  Prelude.Text ->+  PutProfileObject+newPutProfileObject+  pObjectTypeName_+  pObject_+  pDomainName_ =+    PutProfileObject'+      { objectTypeName =+          pObjectTypeName_,+        object' = pObject_,+        domainName = pDomainName_+      }++-- | The name of the profile object type.+putProfileObject_objectTypeName :: Lens.Lens' PutProfileObject Prelude.Text+putProfileObject_objectTypeName = Lens.lens (\PutProfileObject' {objectTypeName} -> objectTypeName) (\s@PutProfileObject' {} a -> s {objectTypeName = a} :: PutProfileObject)++-- | A string that is serialized from a JSON object.+putProfileObject_object :: Lens.Lens' PutProfileObject Prelude.Text+putProfileObject_object = Lens.lens (\PutProfileObject' {object'} -> object') (\s@PutProfileObject' {} a -> s {object' = a} :: PutProfileObject)++-- | The unique name of the domain.+putProfileObject_domainName :: Lens.Lens' PutProfileObject Prelude.Text+putProfileObject_domainName = Lens.lens (\PutProfileObject' {domainName} -> domainName) (\s@PutProfileObject' {} a -> s {domainName = a} :: PutProfileObject)++instance Core.AWSRequest PutProfileObject where+  type+    AWSResponse PutProfileObject =+      PutProfileObjectResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          PutProfileObjectResponse'+            Prelude.<$> (x Data..?> "ProfileObjectUniqueKey")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable PutProfileObject where+  hashWithSalt _salt PutProfileObject' {..} =+    _salt+      `Prelude.hashWithSalt` objectTypeName+      `Prelude.hashWithSalt` object'+      `Prelude.hashWithSalt` domainName++instance Prelude.NFData PutProfileObject where+  rnf PutProfileObject' {..} =+    Prelude.rnf objectTypeName+      `Prelude.seq` Prelude.rnf object'+      `Prelude.seq` Prelude.rnf domainName++instance Data.ToHeaders PutProfileObject where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON PutProfileObject where+  toJSON PutProfileObject' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("ObjectTypeName" Data..= objectTypeName),+            Prelude.Just ("Object" Data..= object')+          ]+      )++instance Data.ToPath PutProfileObject where+  toPath PutProfileObject' {..} =+    Prelude.mconcat+      [ "/domains/",+        Data.toBS domainName,+        "/profiles/objects"+      ]++instance Data.ToQuery PutProfileObject where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newPutProfileObjectResponse' smart constructor.+data PutProfileObjectResponse = PutProfileObjectResponse'+  { -- | The unique identifier of the profile object generated by the service.+    profileObjectUniqueKey :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutProfileObjectResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'profileObjectUniqueKey', 'putProfileObjectResponse_profileObjectUniqueKey' - The unique identifier of the profile object generated by the service.+--+-- 'httpStatus', 'putProfileObjectResponse_httpStatus' - The response's http status code.+newPutProfileObjectResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PutProfileObjectResponse+newPutProfileObjectResponse pHttpStatus_ =+  PutProfileObjectResponse'+    { profileObjectUniqueKey =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The unique identifier of the profile object generated by the service.+putProfileObjectResponse_profileObjectUniqueKey :: Lens.Lens' PutProfileObjectResponse (Prelude.Maybe Prelude.Text)+putProfileObjectResponse_profileObjectUniqueKey = Lens.lens (\PutProfileObjectResponse' {profileObjectUniqueKey} -> profileObjectUniqueKey) (\s@PutProfileObjectResponse' {} a -> s {profileObjectUniqueKey = a} :: PutProfileObjectResponse)++-- | The response's http status code.+putProfileObjectResponse_httpStatus :: Lens.Lens' PutProfileObjectResponse Prelude.Int+putProfileObjectResponse_httpStatus = Lens.lens (\PutProfileObjectResponse' {httpStatus} -> httpStatus) (\s@PutProfileObjectResponse' {} a -> s {httpStatus = a} :: PutProfileObjectResponse)++instance Prelude.NFData PutProfileObjectResponse where+  rnf PutProfileObjectResponse' {..} =+    Prelude.rnf profileObjectUniqueKey+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/CustomerProfiles/PutProfileObjectType.hs view
@@ -0,0 +1,529 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.PutProfileObjectType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Defines a ProfileObjectType.+--+-- To add or remove tags on an existing ObjectType, see+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_TagResource.html TagResource>\/<https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_UntagResource.html UntagResource>.+module Amazonka.CustomerProfiles.PutProfileObjectType+  ( -- * Creating a Request+    PutProfileObjectType (..),+    newPutProfileObjectType,++    -- * Request Lenses+    putProfileObjectType_allowProfileCreation,+    putProfileObjectType_encryptionKey,+    putProfileObjectType_expirationDays,+    putProfileObjectType_fields,+    putProfileObjectType_keys,+    putProfileObjectType_sourceLastUpdatedTimestampFormat,+    putProfileObjectType_tags,+    putProfileObjectType_templateId,+    putProfileObjectType_domainName,+    putProfileObjectType_objectTypeName,+    putProfileObjectType_description,++    -- * Destructuring the Response+    PutProfileObjectTypeResponse (..),+    newPutProfileObjectTypeResponse,++    -- * Response Lenses+    putProfileObjectTypeResponse_allowProfileCreation,+    putProfileObjectTypeResponse_createdAt,+    putProfileObjectTypeResponse_encryptionKey,+    putProfileObjectTypeResponse_expirationDays,+    putProfileObjectTypeResponse_fields,+    putProfileObjectTypeResponse_keys,+    putProfileObjectTypeResponse_lastUpdatedAt,+    putProfileObjectTypeResponse_sourceLastUpdatedTimestampFormat,+    putProfileObjectTypeResponse_tags,+    putProfileObjectTypeResponse_templateId,+    putProfileObjectTypeResponse_httpStatus,+    putProfileObjectTypeResponse_objectTypeName,+    putProfileObjectTypeResponse_description,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newPutProfileObjectType' smart constructor.+data PutProfileObjectType = PutProfileObjectType'+  { -- | Indicates whether a profile should be created when data is received if+    -- one doesn’t exist for an object of this type. The default is @FALSE@. If+    -- the AllowProfileCreation flag is set to @FALSE@, then the service tries+    -- to fetch a standard profile and associate this object with the profile.+    -- If it is set to @TRUE@, and if no match is found, then the service+    -- creates a new standard profile.+    allowProfileCreation :: Prelude.Maybe Prelude.Bool,+    -- | The customer-provided key to encrypt the profile object that will be+    -- created in this profile object type.+    encryptionKey :: Prelude.Maybe Prelude.Text,+    -- | The number of days until the data in the object expires.+    expirationDays :: Prelude.Maybe Prelude.Natural,+    -- | A map of the name and ObjectType field.+    fields :: Prelude.Maybe (Prelude.HashMap Prelude.Text ObjectTypeField),+    -- | A list of unique keys that can be used to map data to the profile.+    keys :: Prelude.Maybe (Prelude.HashMap Prelude.Text [ObjectTypeKey]),+    -- | The format of your @sourceLastUpdatedTimestamp@ that was previously set+    -- up.+    sourceLastUpdatedTimestampFormat :: Prelude.Maybe Prelude.Text,+    -- | The tags used to organize, track, or control access for this resource.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | A unique identifier for the object template. For some attributes in the+    -- request, the service will use the default value from the object template+    -- when TemplateId is present. If these attributes are present in the+    -- request, the service may return a @BadRequestException@. These+    -- attributes include: AllowProfileCreation,+    -- SourceLastUpdatedTimestampFormat, Fields, and Keys. For example, if+    -- AllowProfileCreation is set to true when TemplateId is set, the service+    -- may return a @BadRequestException@.+    templateId :: Prelude.Maybe Prelude.Text,+    -- | The unique name of the domain.+    domainName :: Prelude.Text,+    -- | The name of the profile object type.+    objectTypeName :: Prelude.Text,+    -- | Description of the profile object type.+    description :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutProfileObjectType' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'allowProfileCreation', 'putProfileObjectType_allowProfileCreation' - Indicates whether a profile should be created when data is received if+-- one doesn’t exist for an object of this type. The default is @FALSE@. If+-- the AllowProfileCreation flag is set to @FALSE@, then the service tries+-- to fetch a standard profile and associate this object with the profile.+-- If it is set to @TRUE@, and if no match is found, then the service+-- creates a new standard profile.+--+-- 'encryptionKey', 'putProfileObjectType_encryptionKey' - The customer-provided key to encrypt the profile object that will be+-- created in this profile object type.+--+-- 'expirationDays', 'putProfileObjectType_expirationDays' - The number of days until the data in the object expires.+--+-- 'fields', 'putProfileObjectType_fields' - A map of the name and ObjectType field.+--+-- 'keys', 'putProfileObjectType_keys' - A list of unique keys that can be used to map data to the profile.+--+-- 'sourceLastUpdatedTimestampFormat', 'putProfileObjectType_sourceLastUpdatedTimestampFormat' - The format of your @sourceLastUpdatedTimestamp@ that was previously set+-- up.+--+-- 'tags', 'putProfileObjectType_tags' - The tags used to organize, track, or control access for this resource.+--+-- 'templateId', 'putProfileObjectType_templateId' - A unique identifier for the object template. For some attributes in the+-- request, the service will use the default value from the object template+-- when TemplateId is present. If these attributes are present in the+-- request, the service may return a @BadRequestException@. These+-- attributes include: AllowProfileCreation,+-- SourceLastUpdatedTimestampFormat, Fields, and Keys. For example, if+-- AllowProfileCreation is set to true when TemplateId is set, the service+-- may return a @BadRequestException@.+--+-- 'domainName', 'putProfileObjectType_domainName' - The unique name of the domain.+--+-- 'objectTypeName', 'putProfileObjectType_objectTypeName' - The name of the profile object type.+--+-- 'description', 'putProfileObjectType_description' - Description of the profile object type.+newPutProfileObjectType ::+  -- | 'domainName'+  Prelude.Text ->+  -- | 'objectTypeName'+  Prelude.Text ->+  -- | 'description'+  Prelude.Text ->+  PutProfileObjectType+newPutProfileObjectType+  pDomainName_+  pObjectTypeName_+  pDescription_ =+    PutProfileObjectType'+      { allowProfileCreation =+          Prelude.Nothing,+        encryptionKey = Prelude.Nothing,+        expirationDays = Prelude.Nothing,+        fields = Prelude.Nothing,+        keys = Prelude.Nothing,+        sourceLastUpdatedTimestampFormat = Prelude.Nothing,+        tags = Prelude.Nothing,+        templateId = Prelude.Nothing,+        domainName = pDomainName_,+        objectTypeName = pObjectTypeName_,+        description = pDescription_+      }++-- | Indicates whether a profile should be created when data is received if+-- one doesn’t exist for an object of this type. The default is @FALSE@. If+-- the AllowProfileCreation flag is set to @FALSE@, then the service tries+-- to fetch a standard profile and associate this object with the profile.+-- If it is set to @TRUE@, and if no match is found, then the service+-- creates a new standard profile.+putProfileObjectType_allowProfileCreation :: Lens.Lens' PutProfileObjectType (Prelude.Maybe Prelude.Bool)+putProfileObjectType_allowProfileCreation = Lens.lens (\PutProfileObjectType' {allowProfileCreation} -> allowProfileCreation) (\s@PutProfileObjectType' {} a -> s {allowProfileCreation = a} :: PutProfileObjectType)++-- | The customer-provided key to encrypt the profile object that will be+-- created in this profile object type.+putProfileObjectType_encryptionKey :: Lens.Lens' PutProfileObjectType (Prelude.Maybe Prelude.Text)+putProfileObjectType_encryptionKey = Lens.lens (\PutProfileObjectType' {encryptionKey} -> encryptionKey) (\s@PutProfileObjectType' {} a -> s {encryptionKey = a} :: PutProfileObjectType)++-- | The number of days until the data in the object expires.+putProfileObjectType_expirationDays :: Lens.Lens' PutProfileObjectType (Prelude.Maybe Prelude.Natural)+putProfileObjectType_expirationDays = Lens.lens (\PutProfileObjectType' {expirationDays} -> expirationDays) (\s@PutProfileObjectType' {} a -> s {expirationDays = a} :: PutProfileObjectType)++-- | A map of the name and ObjectType field.+putProfileObjectType_fields :: Lens.Lens' PutProfileObjectType (Prelude.Maybe (Prelude.HashMap Prelude.Text ObjectTypeField))+putProfileObjectType_fields = Lens.lens (\PutProfileObjectType' {fields} -> fields) (\s@PutProfileObjectType' {} a -> s {fields = a} :: PutProfileObjectType) Prelude.. Lens.mapping Lens.coerced++-- | A list of unique keys that can be used to map data to the profile.+putProfileObjectType_keys :: Lens.Lens' PutProfileObjectType (Prelude.Maybe (Prelude.HashMap Prelude.Text [ObjectTypeKey]))+putProfileObjectType_keys = Lens.lens (\PutProfileObjectType' {keys} -> keys) (\s@PutProfileObjectType' {} a -> s {keys = a} :: PutProfileObjectType) Prelude.. Lens.mapping Lens.coerced++-- | The format of your @sourceLastUpdatedTimestamp@ that was previously set+-- up.+putProfileObjectType_sourceLastUpdatedTimestampFormat :: Lens.Lens' PutProfileObjectType (Prelude.Maybe Prelude.Text)+putProfileObjectType_sourceLastUpdatedTimestampFormat = Lens.lens (\PutProfileObjectType' {sourceLastUpdatedTimestampFormat} -> sourceLastUpdatedTimestampFormat) (\s@PutProfileObjectType' {} a -> s {sourceLastUpdatedTimestampFormat = a} :: PutProfileObjectType)++-- | The tags used to organize, track, or control access for this resource.+putProfileObjectType_tags :: Lens.Lens' PutProfileObjectType (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+putProfileObjectType_tags = Lens.lens (\PutProfileObjectType' {tags} -> tags) (\s@PutProfileObjectType' {} a -> s {tags = a} :: PutProfileObjectType) Prelude.. Lens.mapping Lens.coerced++-- | A unique identifier for the object template. For some attributes in the+-- request, the service will use the default value from the object template+-- when TemplateId is present. If these attributes are present in the+-- request, the service may return a @BadRequestException@. These+-- attributes include: AllowProfileCreation,+-- SourceLastUpdatedTimestampFormat, Fields, and Keys. For example, if+-- AllowProfileCreation is set to true when TemplateId is set, the service+-- may return a @BadRequestException@.+putProfileObjectType_templateId :: Lens.Lens' PutProfileObjectType (Prelude.Maybe Prelude.Text)+putProfileObjectType_templateId = Lens.lens (\PutProfileObjectType' {templateId} -> templateId) (\s@PutProfileObjectType' {} a -> s {templateId = a} :: PutProfileObjectType)++-- | The unique name of the domain.+putProfileObjectType_domainName :: Lens.Lens' PutProfileObjectType Prelude.Text+putProfileObjectType_domainName = Lens.lens (\PutProfileObjectType' {domainName} -> domainName) (\s@PutProfileObjectType' {} a -> s {domainName = a} :: PutProfileObjectType)++-- | The name of the profile object type.+putProfileObjectType_objectTypeName :: Lens.Lens' PutProfileObjectType Prelude.Text+putProfileObjectType_objectTypeName = Lens.lens (\PutProfileObjectType' {objectTypeName} -> objectTypeName) (\s@PutProfileObjectType' {} a -> s {objectTypeName = a} :: PutProfileObjectType)++-- | Description of the profile object type.+putProfileObjectType_description :: Lens.Lens' PutProfileObjectType Prelude.Text+putProfileObjectType_description = Lens.lens (\PutProfileObjectType' {description} -> description) (\s@PutProfileObjectType' {} a -> s {description = a} :: PutProfileObjectType)++instance Core.AWSRequest PutProfileObjectType where+  type+    AWSResponse PutProfileObjectType =+      PutProfileObjectTypeResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          PutProfileObjectTypeResponse'+            Prelude.<$> (x Data..?> "AllowProfileCreation")+            Prelude.<*> (x Data..?> "CreatedAt")+            Prelude.<*> (x Data..?> "EncryptionKey")+            Prelude.<*> (x Data..?> "ExpirationDays")+            Prelude.<*> (x Data..?> "Fields" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "Keys" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "LastUpdatedAt")+            Prelude.<*> (x Data..?> "SourceLastUpdatedTimestampFormat")+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "TemplateId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "ObjectTypeName")+            Prelude.<*> (x Data..:> "Description")+      )++instance Prelude.Hashable PutProfileObjectType where+  hashWithSalt _salt PutProfileObjectType' {..} =+    _salt+      `Prelude.hashWithSalt` allowProfileCreation+      `Prelude.hashWithSalt` encryptionKey+      `Prelude.hashWithSalt` expirationDays+      `Prelude.hashWithSalt` fields+      `Prelude.hashWithSalt` keys+      `Prelude.hashWithSalt` sourceLastUpdatedTimestampFormat+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` templateId+      `Prelude.hashWithSalt` domainName+      `Prelude.hashWithSalt` objectTypeName+      `Prelude.hashWithSalt` description++instance Prelude.NFData PutProfileObjectType where+  rnf PutProfileObjectType' {..} =+    Prelude.rnf allowProfileCreation+      `Prelude.seq` Prelude.rnf encryptionKey+      `Prelude.seq` Prelude.rnf expirationDays+      `Prelude.seq` Prelude.rnf fields+      `Prelude.seq` Prelude.rnf keys+      `Prelude.seq` Prelude.rnf sourceLastUpdatedTimestampFormat+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf templateId+      `Prelude.seq` Prelude.rnf domainName+      `Prelude.seq` Prelude.rnf objectTypeName+      `Prelude.seq` Prelude.rnf description++instance Data.ToHeaders PutProfileObjectType where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON PutProfileObjectType where+  toJSON PutProfileObjectType' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("AllowProfileCreation" Data..=)+              Prelude.<$> allowProfileCreation,+            ("EncryptionKey" Data..=) Prelude.<$> encryptionKey,+            ("ExpirationDays" Data..=)+              Prelude.<$> expirationDays,+            ("Fields" Data..=) Prelude.<$> fields,+            ("Keys" Data..=) Prelude.<$> keys,+            ("SourceLastUpdatedTimestampFormat" Data..=)+              Prelude.<$> sourceLastUpdatedTimestampFormat,+            ("Tags" Data..=) Prelude.<$> tags,+            ("TemplateId" Data..=) Prelude.<$> templateId,+            Prelude.Just ("Description" Data..= description)+          ]+      )++instance Data.ToPath PutProfileObjectType where+  toPath PutProfileObjectType' {..} =+    Prelude.mconcat+      [ "/domains/",+        Data.toBS domainName,+        "/object-types/",+        Data.toBS objectTypeName+      ]++instance Data.ToQuery PutProfileObjectType where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newPutProfileObjectTypeResponse' smart constructor.+data PutProfileObjectTypeResponse = PutProfileObjectTypeResponse'+  { -- | Indicates whether a profile should be created when data is received if+    -- one doesn’t exist for an object of this type. The default is @FALSE@. If+    -- the AllowProfileCreation flag is set to @FALSE@, then the service tries+    -- to fetch a standard profile and associate this object with the profile.+    -- If it is set to @TRUE@, and if no match is found, then the service+    -- creates a new standard profile.+    allowProfileCreation :: Prelude.Maybe Prelude.Bool,+    -- | The timestamp of when the domain was created.+    createdAt :: Prelude.Maybe Data.POSIX,+    -- | The customer-provided key to encrypt the profile object that will be+    -- created in this profile object type.+    encryptionKey :: Prelude.Maybe Prelude.Text,+    -- | The number of days until the data in the object expires.+    expirationDays :: Prelude.Maybe Prelude.Natural,+    -- | A map of the name and ObjectType field.+    fields :: Prelude.Maybe (Prelude.HashMap Prelude.Text ObjectTypeField),+    -- | A list of unique keys that can be used to map data to the profile.+    keys :: Prelude.Maybe (Prelude.HashMap Prelude.Text [ObjectTypeKey]),+    -- | The timestamp of when the domain was most recently edited.+    lastUpdatedAt :: Prelude.Maybe Data.POSIX,+    -- | The format of your @sourceLastUpdatedTimestamp@ that was previously set+    -- up in fields that were parsed using+    -- <https://docs.oracle.com/javase/10/docs/api/java/text/SimpleDateFormat.html SimpleDateFormat>.+    -- If you have @sourceLastUpdatedTimestamp@ in your field, you must set up+    -- @sourceLastUpdatedTimestampFormat@.+    sourceLastUpdatedTimestampFormat :: Prelude.Maybe Prelude.Text,+    -- | The tags used to organize, track, or control access for this resource.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | A unique identifier for the object template.+    templateId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The name of the profile object type.+    objectTypeName :: Prelude.Text,+    -- | Description of the profile object type.+    description :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutProfileObjectTypeResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'allowProfileCreation', 'putProfileObjectTypeResponse_allowProfileCreation' - Indicates whether a profile should be created when data is received if+-- one doesn’t exist for an object of this type. The default is @FALSE@. If+-- the AllowProfileCreation flag is set to @FALSE@, then the service tries+-- to fetch a standard profile and associate this object with the profile.+-- If it is set to @TRUE@, and if no match is found, then the service+-- creates a new standard profile.+--+-- 'createdAt', 'putProfileObjectTypeResponse_createdAt' - The timestamp of when the domain was created.+--+-- 'encryptionKey', 'putProfileObjectTypeResponse_encryptionKey' - The customer-provided key to encrypt the profile object that will be+-- created in this profile object type.+--+-- 'expirationDays', 'putProfileObjectTypeResponse_expirationDays' - The number of days until the data in the object expires.+--+-- 'fields', 'putProfileObjectTypeResponse_fields' - A map of the name and ObjectType field.+--+-- 'keys', 'putProfileObjectTypeResponse_keys' - A list of unique keys that can be used to map data to the profile.+--+-- 'lastUpdatedAt', 'putProfileObjectTypeResponse_lastUpdatedAt' - The timestamp of when the domain was most recently edited.+--+-- 'sourceLastUpdatedTimestampFormat', 'putProfileObjectTypeResponse_sourceLastUpdatedTimestampFormat' - The format of your @sourceLastUpdatedTimestamp@ that was previously set+-- up in fields that were parsed using+-- <https://docs.oracle.com/javase/10/docs/api/java/text/SimpleDateFormat.html SimpleDateFormat>.+-- If you have @sourceLastUpdatedTimestamp@ in your field, you must set up+-- @sourceLastUpdatedTimestampFormat@.+--+-- 'tags', 'putProfileObjectTypeResponse_tags' - The tags used to organize, track, or control access for this resource.+--+-- 'templateId', 'putProfileObjectTypeResponse_templateId' - A unique identifier for the object template.+--+-- 'httpStatus', 'putProfileObjectTypeResponse_httpStatus' - The response's http status code.+--+-- 'objectTypeName', 'putProfileObjectTypeResponse_objectTypeName' - The name of the profile object type.+--+-- 'description', 'putProfileObjectTypeResponse_description' - Description of the profile object type.+newPutProfileObjectTypeResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'objectTypeName'+  Prelude.Text ->+  -- | 'description'+  Prelude.Text ->+  PutProfileObjectTypeResponse+newPutProfileObjectTypeResponse+  pHttpStatus_+  pObjectTypeName_+  pDescription_ =+    PutProfileObjectTypeResponse'+      { allowProfileCreation =+          Prelude.Nothing,+        createdAt = Prelude.Nothing,+        encryptionKey = Prelude.Nothing,+        expirationDays = Prelude.Nothing,+        fields = Prelude.Nothing,+        keys = Prelude.Nothing,+        lastUpdatedAt = Prelude.Nothing,+        sourceLastUpdatedTimestampFormat =+          Prelude.Nothing,+        tags = Prelude.Nothing,+        templateId = Prelude.Nothing,+        httpStatus = pHttpStatus_,+        objectTypeName = pObjectTypeName_,+        description = pDescription_+      }++-- | Indicates whether a profile should be created when data is received if+-- one doesn’t exist for an object of this type. The default is @FALSE@. If+-- the AllowProfileCreation flag is set to @FALSE@, then the service tries+-- to fetch a standard profile and associate this object with the profile.+-- If it is set to @TRUE@, and if no match is found, then the service+-- creates a new standard profile.+putProfileObjectTypeResponse_allowProfileCreation :: Lens.Lens' PutProfileObjectTypeResponse (Prelude.Maybe Prelude.Bool)+putProfileObjectTypeResponse_allowProfileCreation = Lens.lens (\PutProfileObjectTypeResponse' {allowProfileCreation} -> allowProfileCreation) (\s@PutProfileObjectTypeResponse' {} a -> s {allowProfileCreation = a} :: PutProfileObjectTypeResponse)++-- | The timestamp of when the domain was created.+putProfileObjectTypeResponse_createdAt :: Lens.Lens' PutProfileObjectTypeResponse (Prelude.Maybe Prelude.UTCTime)+putProfileObjectTypeResponse_createdAt = Lens.lens (\PutProfileObjectTypeResponse' {createdAt} -> createdAt) (\s@PutProfileObjectTypeResponse' {} a -> s {createdAt = a} :: PutProfileObjectTypeResponse) Prelude.. Lens.mapping Data._Time++-- | The customer-provided key to encrypt the profile object that will be+-- created in this profile object type.+putProfileObjectTypeResponse_encryptionKey :: Lens.Lens' PutProfileObjectTypeResponse (Prelude.Maybe Prelude.Text)+putProfileObjectTypeResponse_encryptionKey = Lens.lens (\PutProfileObjectTypeResponse' {encryptionKey} -> encryptionKey) (\s@PutProfileObjectTypeResponse' {} a -> s {encryptionKey = a} :: PutProfileObjectTypeResponse)++-- | The number of days until the data in the object expires.+putProfileObjectTypeResponse_expirationDays :: Lens.Lens' PutProfileObjectTypeResponse (Prelude.Maybe Prelude.Natural)+putProfileObjectTypeResponse_expirationDays = Lens.lens (\PutProfileObjectTypeResponse' {expirationDays} -> expirationDays) (\s@PutProfileObjectTypeResponse' {} a -> s {expirationDays = a} :: PutProfileObjectTypeResponse)++-- | A map of the name and ObjectType field.+putProfileObjectTypeResponse_fields :: Lens.Lens' PutProfileObjectTypeResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text ObjectTypeField))+putProfileObjectTypeResponse_fields = Lens.lens (\PutProfileObjectTypeResponse' {fields} -> fields) (\s@PutProfileObjectTypeResponse' {} a -> s {fields = a} :: PutProfileObjectTypeResponse) Prelude.. Lens.mapping Lens.coerced++-- | A list of unique keys that can be used to map data to the profile.+putProfileObjectTypeResponse_keys :: Lens.Lens' PutProfileObjectTypeResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text [ObjectTypeKey]))+putProfileObjectTypeResponse_keys = Lens.lens (\PutProfileObjectTypeResponse' {keys} -> keys) (\s@PutProfileObjectTypeResponse' {} a -> s {keys = a} :: PutProfileObjectTypeResponse) Prelude.. Lens.mapping Lens.coerced++-- | The timestamp of when the domain was most recently edited.+putProfileObjectTypeResponse_lastUpdatedAt :: Lens.Lens' PutProfileObjectTypeResponse (Prelude.Maybe Prelude.UTCTime)+putProfileObjectTypeResponse_lastUpdatedAt = Lens.lens (\PutProfileObjectTypeResponse' {lastUpdatedAt} -> lastUpdatedAt) (\s@PutProfileObjectTypeResponse' {} a -> s {lastUpdatedAt = a} :: PutProfileObjectTypeResponse) Prelude.. Lens.mapping Data._Time++-- | The format of your @sourceLastUpdatedTimestamp@ that was previously set+-- up in fields that were parsed using+-- <https://docs.oracle.com/javase/10/docs/api/java/text/SimpleDateFormat.html SimpleDateFormat>.+-- If you have @sourceLastUpdatedTimestamp@ in your field, you must set up+-- @sourceLastUpdatedTimestampFormat@.+putProfileObjectTypeResponse_sourceLastUpdatedTimestampFormat :: Lens.Lens' PutProfileObjectTypeResponse (Prelude.Maybe Prelude.Text)+putProfileObjectTypeResponse_sourceLastUpdatedTimestampFormat = Lens.lens (\PutProfileObjectTypeResponse' {sourceLastUpdatedTimestampFormat} -> sourceLastUpdatedTimestampFormat) (\s@PutProfileObjectTypeResponse' {} a -> s {sourceLastUpdatedTimestampFormat = a} :: PutProfileObjectTypeResponse)++-- | The tags used to organize, track, or control access for this resource.+putProfileObjectTypeResponse_tags :: Lens.Lens' PutProfileObjectTypeResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+putProfileObjectTypeResponse_tags = Lens.lens (\PutProfileObjectTypeResponse' {tags} -> tags) (\s@PutProfileObjectTypeResponse' {} a -> s {tags = a} :: PutProfileObjectTypeResponse) Prelude.. Lens.mapping Lens.coerced++-- | A unique identifier for the object template.+putProfileObjectTypeResponse_templateId :: Lens.Lens' PutProfileObjectTypeResponse (Prelude.Maybe Prelude.Text)+putProfileObjectTypeResponse_templateId = Lens.lens (\PutProfileObjectTypeResponse' {templateId} -> templateId) (\s@PutProfileObjectTypeResponse' {} a -> s {templateId = a} :: PutProfileObjectTypeResponse)++-- | The response's http status code.+putProfileObjectTypeResponse_httpStatus :: Lens.Lens' PutProfileObjectTypeResponse Prelude.Int+putProfileObjectTypeResponse_httpStatus = Lens.lens (\PutProfileObjectTypeResponse' {httpStatus} -> httpStatus) (\s@PutProfileObjectTypeResponse' {} a -> s {httpStatus = a} :: PutProfileObjectTypeResponse)++-- | The name of the profile object type.+putProfileObjectTypeResponse_objectTypeName :: Lens.Lens' PutProfileObjectTypeResponse Prelude.Text+putProfileObjectTypeResponse_objectTypeName = Lens.lens (\PutProfileObjectTypeResponse' {objectTypeName} -> objectTypeName) (\s@PutProfileObjectTypeResponse' {} a -> s {objectTypeName = a} :: PutProfileObjectTypeResponse)++-- | Description of the profile object type.+putProfileObjectTypeResponse_description :: Lens.Lens' PutProfileObjectTypeResponse Prelude.Text+putProfileObjectTypeResponse_description = Lens.lens (\PutProfileObjectTypeResponse' {description} -> description) (\s@PutProfileObjectTypeResponse' {} a -> s {description = a} :: PutProfileObjectTypeResponse)++instance Prelude.NFData PutProfileObjectTypeResponse where+  rnf PutProfileObjectTypeResponse' {..} =+    Prelude.rnf allowProfileCreation+      `Prelude.seq` Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf encryptionKey+      `Prelude.seq` Prelude.rnf expirationDays+      `Prelude.seq` Prelude.rnf fields+      `Prelude.seq` Prelude.rnf keys+      `Prelude.seq` Prelude.rnf lastUpdatedAt+      `Prelude.seq` Prelude.rnf sourceLastUpdatedTimestampFormat+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf templateId+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf objectTypeName+      `Prelude.seq` Prelude.rnf description
+ gen/Amazonka/CustomerProfiles/SearchProfiles.hs view
@@ -0,0 +1,363 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.SearchProfiles+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Searches for profiles within a specific domain using one or more+-- predefined search keys (e.g., _fullName, _phone, _email, _account, etc.)+-- and\/or custom-defined search keys. A search key is a data type pair+-- that consists of a @KeyName@ and @Values@ list.+--+-- This operation supports searching for profiles with a minimum of 1+-- key-value(s) pair and up to 5 key-value(s) pairs using either @AND@ or+-- @OR@ logic.+module Amazonka.CustomerProfiles.SearchProfiles+  ( -- * Creating a Request+    SearchProfiles (..),+    newSearchProfiles,++    -- * Request Lenses+    searchProfiles_additionalSearchKeys,+    searchProfiles_logicalOperator,+    searchProfiles_maxResults,+    searchProfiles_nextToken,+    searchProfiles_domainName,+    searchProfiles_keyName,+    searchProfiles_values,++    -- * Destructuring the Response+    SearchProfilesResponse (..),+    newSearchProfilesResponse,++    -- * Response Lenses+    searchProfilesResponse_items,+    searchProfilesResponse_nextToken,+    searchProfilesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newSearchProfiles' smart constructor.+data SearchProfiles = SearchProfiles'+  { -- | A list of @AdditionalSearchKey@ objects that are each searchable+    -- identifiers of a profile. Each @AdditionalSearchKey@ object contains a+    -- @KeyName@ and a list of @Values@ associated with that specific key+    -- (i.e., a key-value(s) pair). These additional search keys will be used+    -- in conjunction with the @LogicalOperator@ and the required @KeyName@ and+    -- @Values@ parameters to search for profiles that satisfy the search+    -- criteria.+    additionalSearchKeys :: Prelude.Maybe (Prelude.NonEmpty AdditionalSearchKey),+    -- | Relationship between all specified search keys that will be used to+    -- search for profiles. This includes the required @KeyName@ and @Values@+    -- parameters as well as any key-value(s) pairs specified in the+    -- @AdditionalSearchKeys@ list.+    --+    -- This parameter influences which profiles will be returned in the+    -- response in the following manner:+    --+    -- -   @AND@ - The response only includes profiles that match all of the+    --     search keys.+    --+    -- -   @OR@ - The response includes profiles that match at least one of the+    --     search keys.+    --+    -- The @OR@ relationship is the default behavior if this parameter is not+    -- included in the request.+    logicalOperator :: Prelude.Maybe LogicalOperator,+    -- | The maximum number of objects returned per page.+    --+    -- The default is 20 if this parameter is not included in the request.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The pagination token from the previous SearchProfiles API call.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The unique name of the domain.+    domainName :: Prelude.Text,+    -- | A searchable identifier of a customer profile. The predefined keys you+    -- can use to search include: _account, _profileId, _assetId, _caseId,+    -- _orderId, _fullName, _phone, _email, _ctrContactId, _marketoLeadId,+    -- _salesforceAccountId, _salesforceContactId, _salesforceAssetId,+    -- _zendeskUserId, _zendeskExternalId, _zendeskTicketId,+    -- _serviceNowSystemId, _serviceNowIncidentId, _segmentUserId,+    -- _shopifyCustomerId, _shopifyOrderId.+    keyName :: Prelude.Text,+    -- | A list of key values.+    values :: [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SearchProfiles' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'additionalSearchKeys', 'searchProfiles_additionalSearchKeys' - A list of @AdditionalSearchKey@ objects that are each searchable+-- identifiers of a profile. Each @AdditionalSearchKey@ object contains a+-- @KeyName@ and a list of @Values@ associated with that specific key+-- (i.e., a key-value(s) pair). These additional search keys will be used+-- in conjunction with the @LogicalOperator@ and the required @KeyName@ and+-- @Values@ parameters to search for profiles that satisfy the search+-- criteria.+--+-- 'logicalOperator', 'searchProfiles_logicalOperator' - Relationship between all specified search keys that will be used to+-- search for profiles. This includes the required @KeyName@ and @Values@+-- parameters as well as any key-value(s) pairs specified in the+-- @AdditionalSearchKeys@ list.+--+-- This parameter influences which profiles will be returned in the+-- response in the following manner:+--+-- -   @AND@ - The response only includes profiles that match all of the+--     search keys.+--+-- -   @OR@ - The response includes profiles that match at least one of the+--     search keys.+--+-- The @OR@ relationship is the default behavior if this parameter is not+-- included in the request.+--+-- 'maxResults', 'searchProfiles_maxResults' - The maximum number of objects returned per page.+--+-- The default is 20 if this parameter is not included in the request.+--+-- 'nextToken', 'searchProfiles_nextToken' - The pagination token from the previous SearchProfiles API call.+--+-- 'domainName', 'searchProfiles_domainName' - The unique name of the domain.+--+-- 'keyName', 'searchProfiles_keyName' - A searchable identifier of a customer profile. The predefined keys you+-- can use to search include: _account, _profileId, _assetId, _caseId,+-- _orderId, _fullName, _phone, _email, _ctrContactId, _marketoLeadId,+-- _salesforceAccountId, _salesforceContactId, _salesforceAssetId,+-- _zendeskUserId, _zendeskExternalId, _zendeskTicketId,+-- _serviceNowSystemId, _serviceNowIncidentId, _segmentUserId,+-- _shopifyCustomerId, _shopifyOrderId.+--+-- 'values', 'searchProfiles_values' - A list of key values.+newSearchProfiles ::+  -- | 'domainName'+  Prelude.Text ->+  -- | 'keyName'+  Prelude.Text ->+  SearchProfiles+newSearchProfiles pDomainName_ pKeyName_ =+  SearchProfiles'+    { additionalSearchKeys =+        Prelude.Nothing,+      logicalOperator = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      domainName = pDomainName_,+      keyName = pKeyName_,+      values = Prelude.mempty+    }++-- | A list of @AdditionalSearchKey@ objects that are each searchable+-- identifiers of a profile. Each @AdditionalSearchKey@ object contains a+-- @KeyName@ and a list of @Values@ associated with that specific key+-- (i.e., a key-value(s) pair). These additional search keys will be used+-- in conjunction with the @LogicalOperator@ and the required @KeyName@ and+-- @Values@ parameters to search for profiles that satisfy the search+-- criteria.+searchProfiles_additionalSearchKeys :: Lens.Lens' SearchProfiles (Prelude.Maybe (Prelude.NonEmpty AdditionalSearchKey))+searchProfiles_additionalSearchKeys = Lens.lens (\SearchProfiles' {additionalSearchKeys} -> additionalSearchKeys) (\s@SearchProfiles' {} a -> s {additionalSearchKeys = a} :: SearchProfiles) Prelude.. Lens.mapping Lens.coerced++-- | Relationship between all specified search keys that will be used to+-- search for profiles. This includes the required @KeyName@ and @Values@+-- parameters as well as any key-value(s) pairs specified in the+-- @AdditionalSearchKeys@ list.+--+-- This parameter influences which profiles will be returned in the+-- response in the following manner:+--+-- -   @AND@ - The response only includes profiles that match all of the+--     search keys.+--+-- -   @OR@ - The response includes profiles that match at least one of the+--     search keys.+--+-- The @OR@ relationship is the default behavior if this parameter is not+-- included in the request.+searchProfiles_logicalOperator :: Lens.Lens' SearchProfiles (Prelude.Maybe LogicalOperator)+searchProfiles_logicalOperator = Lens.lens (\SearchProfiles' {logicalOperator} -> logicalOperator) (\s@SearchProfiles' {} a -> s {logicalOperator = a} :: SearchProfiles)++-- | The maximum number of objects returned per page.+--+-- The default is 20 if this parameter is not included in the request.+searchProfiles_maxResults :: Lens.Lens' SearchProfiles (Prelude.Maybe Prelude.Natural)+searchProfiles_maxResults = Lens.lens (\SearchProfiles' {maxResults} -> maxResults) (\s@SearchProfiles' {} a -> s {maxResults = a} :: SearchProfiles)++-- | The pagination token from the previous SearchProfiles API call.+searchProfiles_nextToken :: Lens.Lens' SearchProfiles (Prelude.Maybe Prelude.Text)+searchProfiles_nextToken = Lens.lens (\SearchProfiles' {nextToken} -> nextToken) (\s@SearchProfiles' {} a -> s {nextToken = a} :: SearchProfiles)++-- | The unique name of the domain.+searchProfiles_domainName :: Lens.Lens' SearchProfiles Prelude.Text+searchProfiles_domainName = Lens.lens (\SearchProfiles' {domainName} -> domainName) (\s@SearchProfiles' {} a -> s {domainName = a} :: SearchProfiles)++-- | A searchable identifier of a customer profile. The predefined keys you+-- can use to search include: _account, _profileId, _assetId, _caseId,+-- _orderId, _fullName, _phone, _email, _ctrContactId, _marketoLeadId,+-- _salesforceAccountId, _salesforceContactId, _salesforceAssetId,+-- _zendeskUserId, _zendeskExternalId, _zendeskTicketId,+-- _serviceNowSystemId, _serviceNowIncidentId, _segmentUserId,+-- _shopifyCustomerId, _shopifyOrderId.+searchProfiles_keyName :: Lens.Lens' SearchProfiles Prelude.Text+searchProfiles_keyName = Lens.lens (\SearchProfiles' {keyName} -> keyName) (\s@SearchProfiles' {} a -> s {keyName = a} :: SearchProfiles)++-- | A list of key values.+searchProfiles_values :: Lens.Lens' SearchProfiles [Prelude.Text]+searchProfiles_values = Lens.lens (\SearchProfiles' {values} -> values) (\s@SearchProfiles' {} a -> s {values = a} :: SearchProfiles) Prelude.. Lens.coerced++instance Core.AWSRequest SearchProfiles where+  type+    AWSResponse SearchProfiles =+      SearchProfilesResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          SearchProfilesResponse'+            Prelude.<$> (x Data..?> "Items" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable SearchProfiles where+  hashWithSalt _salt SearchProfiles' {..} =+    _salt+      `Prelude.hashWithSalt` additionalSearchKeys+      `Prelude.hashWithSalt` logicalOperator+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` domainName+      `Prelude.hashWithSalt` keyName+      `Prelude.hashWithSalt` values++instance Prelude.NFData SearchProfiles where+  rnf SearchProfiles' {..} =+    Prelude.rnf additionalSearchKeys+      `Prelude.seq` Prelude.rnf logicalOperator+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf domainName+      `Prelude.seq` Prelude.rnf keyName+      `Prelude.seq` Prelude.rnf values++instance Data.ToHeaders SearchProfiles where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON SearchProfiles where+  toJSON SearchProfiles' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("AdditionalSearchKeys" Data..=)+              Prelude.<$> additionalSearchKeys,+            ("LogicalOperator" Data..=)+              Prelude.<$> logicalOperator,+            Prelude.Just ("KeyName" Data..= keyName),+            Prelude.Just ("Values" Data..= values)+          ]+      )++instance Data.ToPath SearchProfiles where+  toPath SearchProfiles' {..} =+    Prelude.mconcat+      [ "/domains/",+        Data.toBS domainName,+        "/profiles/search"+      ]++instance Data.ToQuery SearchProfiles where+  toQuery SearchProfiles' {..} =+    Prelude.mconcat+      [ "max-results" Data.=: maxResults,+        "next-token" Data.=: nextToken+      ]++-- | /See:/ 'newSearchProfilesResponse' smart constructor.+data SearchProfilesResponse = SearchProfilesResponse'+  { -- | The list of Profiles matching the search criteria.+    items :: Prelude.Maybe [Profile],+    -- | The pagination token from the previous SearchProfiles API call.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SearchProfilesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'items', 'searchProfilesResponse_items' - The list of Profiles matching the search criteria.+--+-- 'nextToken', 'searchProfilesResponse_nextToken' - The pagination token from the previous SearchProfiles API call.+--+-- 'httpStatus', 'searchProfilesResponse_httpStatus' - The response's http status code.+newSearchProfilesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  SearchProfilesResponse+newSearchProfilesResponse pHttpStatus_ =+  SearchProfilesResponse'+    { items = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The list of Profiles matching the search criteria.+searchProfilesResponse_items :: Lens.Lens' SearchProfilesResponse (Prelude.Maybe [Profile])+searchProfilesResponse_items = Lens.lens (\SearchProfilesResponse' {items} -> items) (\s@SearchProfilesResponse' {} a -> s {items = a} :: SearchProfilesResponse) Prelude.. Lens.mapping Lens.coerced++-- | The pagination token from the previous SearchProfiles API call.+searchProfilesResponse_nextToken :: Lens.Lens' SearchProfilesResponse (Prelude.Maybe Prelude.Text)+searchProfilesResponse_nextToken = Lens.lens (\SearchProfilesResponse' {nextToken} -> nextToken) (\s@SearchProfilesResponse' {} a -> s {nextToken = a} :: SearchProfilesResponse)++-- | The response's http status code.+searchProfilesResponse_httpStatus :: Lens.Lens' SearchProfilesResponse Prelude.Int+searchProfilesResponse_httpStatus = Lens.lens (\SearchProfilesResponse' {httpStatus} -> httpStatus) (\s@SearchProfilesResponse' {} a -> s {httpStatus = a} :: SearchProfilesResponse)++instance Prelude.NFData SearchProfilesResponse where+  rnf SearchProfilesResponse' {..} =+    Prelude.rnf items+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/CustomerProfiles/TagResource.hs view
@@ -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.CustomerProfiles.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)+--+-- Assigns one or more tags (key-value pairs) to the specified Amazon+-- Connect Customer Profiles resource. Tags can help you organize and+-- categorize your resources. You can also use them to scope user+-- permissions by granting a user permission to access or change only+-- resources with certain tag values. In Connect Customer Profiles,+-- domains, profile object types, and integrations can be tagged.+--+-- Tags don\'t have any semantic meaning to AWS and are interpreted+-- strictly as strings of characters.+--+-- You can use the TagResource action with a resource that already has+-- tags. If you specify a new tag key, this tag is appended to the list of+-- tags associated with the resource. If you specify a tag key that is+-- already associated with the resource, the new tag value that you specify+-- replaces the previous value for that tag.+--+-- You can associate as many as 50 tags with a resource.+module Amazonka.CustomerProfiles.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 Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newTagResource' smart constructor.+data TagResource = TagResource'+  { -- | The ARN of the resource that you\'re adding tags to.+    resourceArn :: Prelude.Text,+    -- | The tags used to organize, track, or control access for this resource.+    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 ARN of the resource that you\'re adding tags to.+--+-- 'tags', 'tagResource_tags' - The tags used to organize, track, or control access for this resource.+newTagResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  TagResource+newTagResource pResourceArn_ =+  TagResource'+    { resourceArn = pResourceArn_,+      tags = Prelude.mempty+    }++-- | The ARN of the resource that you\'re adding tags to.+tagResource_resourceArn :: Lens.Lens' TagResource Prelude.Text+tagResource_resourceArn = Lens.lens (\TagResource' {resourceArn} -> resourceArn) (\s@TagResource' {} a -> s {resourceArn = a} :: TagResource)++-- | The tags used to organize, track, or control access for this resource.+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
+ gen/Amazonka/CustomerProfiles/Types.hs view
@@ -0,0 +1,694 @@+{-# 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.CustomerProfiles.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.CustomerProfiles.Types+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    _AccessDeniedException,+    _BadRequestException,+    _InternalServerException,+    _ResourceNotFoundException,+    _ThrottlingException,++    -- * ConflictResolvingModel+    ConflictResolvingModel (..),++    -- * DataPullMode+    DataPullMode (..),++    -- * FieldContentType+    FieldContentType (..),++    -- * Gender+    Gender (..),++    -- * IdentityResolutionJobStatus+    IdentityResolutionJobStatus (..),++    -- * JobScheduleDayOfTheWeek+    JobScheduleDayOfTheWeek (..),++    -- * LogicalOperator+    LogicalOperator (..),++    -- * MarketoConnectorOperator+    MarketoConnectorOperator (..),++    -- * OperatorPropertiesKeys+    OperatorPropertiesKeys (..),++    -- * PartyType+    PartyType (..),++    -- * S3ConnectorOperator+    S3ConnectorOperator (..),++    -- * SalesforceConnectorOperator+    SalesforceConnectorOperator (..),++    -- * ServiceNowConnectorOperator+    ServiceNowConnectorOperator (..),++    -- * SourceConnectorType+    SourceConnectorType (..),++    -- * StandardIdentifier+    StandardIdentifier (..),++    -- * Status+    Status (..),++    -- * TaskType+    TaskType (..),++    -- * TriggerType+    TriggerType (..),++    -- * WorkflowType+    WorkflowType (..),++    -- * ZendeskConnectorOperator+    ZendeskConnectorOperator (..),++    -- * AdditionalSearchKey+    AdditionalSearchKey (..),+    newAdditionalSearchKey,+    additionalSearchKey_keyName,+    additionalSearchKey_values,++    -- * Address+    Address (..),+    newAddress,+    address_address1,+    address_address2,+    address_address3,+    address_address4,+    address_city,+    address_country,+    address_county,+    address_postalCode,+    address_province,+    address_state,++    -- * AppflowIntegration+    AppflowIntegration (..),+    newAppflowIntegration,+    appflowIntegration_batches,+    appflowIntegration_flowDefinition,++    -- * AppflowIntegrationWorkflowAttributes+    AppflowIntegrationWorkflowAttributes (..),+    newAppflowIntegrationWorkflowAttributes,+    appflowIntegrationWorkflowAttributes_roleArn,+    appflowIntegrationWorkflowAttributes_sourceConnectorType,+    appflowIntegrationWorkflowAttributes_connectorProfileName,++    -- * AppflowIntegrationWorkflowMetrics+    AppflowIntegrationWorkflowMetrics (..),+    newAppflowIntegrationWorkflowMetrics,+    appflowIntegrationWorkflowMetrics_recordsProcessed,+    appflowIntegrationWorkflowMetrics_stepsCompleted,+    appflowIntegrationWorkflowMetrics_totalSteps,++    -- * AppflowIntegrationWorkflowStep+    AppflowIntegrationWorkflowStep (..),+    newAppflowIntegrationWorkflowStep,+    appflowIntegrationWorkflowStep_flowName,+    appflowIntegrationWorkflowStep_status,+    appflowIntegrationWorkflowStep_executionMessage,+    appflowIntegrationWorkflowStep_recordsProcessed,+    appflowIntegrationWorkflowStep_batchRecordsStartTime,+    appflowIntegrationWorkflowStep_batchRecordsEndTime,+    appflowIntegrationWorkflowStep_createdAt,+    appflowIntegrationWorkflowStep_lastUpdatedAt,++    -- * AutoMerging+    AutoMerging (..),+    newAutoMerging,+    autoMerging_conflictResolution,+    autoMerging_consolidation,+    autoMerging_minAllowedConfidenceScoreForMerging,+    autoMerging_enabled,++    -- * Batch+    Batch (..),+    newBatch,+    batch_startTime,+    batch_endTime,++    -- * ConflictResolution+    ConflictResolution (..),+    newConflictResolution,+    conflictResolution_sourceName,+    conflictResolution_conflictResolvingModel,++    -- * ConnectorOperator+    ConnectorOperator (..),+    newConnectorOperator,+    connectorOperator_marketo,+    connectorOperator_s3,+    connectorOperator_salesforce,+    connectorOperator_serviceNow,+    connectorOperator_zendesk,++    -- * Consolidation+    Consolidation (..),+    newConsolidation,+    consolidation_matchingAttributesList,++    -- * DomainStats+    DomainStats (..),+    newDomainStats,+    domainStats_meteringProfileCount,+    domainStats_objectCount,+    domainStats_profileCount,+    domainStats_totalSize,++    -- * ExportingConfig+    ExportingConfig (..),+    newExportingConfig,+    exportingConfig_s3Exporting,++    -- * ExportingLocation+    ExportingLocation (..),+    newExportingLocation,+    exportingLocation_s3Exporting,++    -- * FieldSourceProfileIds+    FieldSourceProfileIds (..),+    newFieldSourceProfileIds,+    fieldSourceProfileIds_accountNumber,+    fieldSourceProfileIds_additionalInformation,+    fieldSourceProfileIds_address,+    fieldSourceProfileIds_attributes,+    fieldSourceProfileIds_billingAddress,+    fieldSourceProfileIds_birthDate,+    fieldSourceProfileIds_businessEmailAddress,+    fieldSourceProfileIds_businessName,+    fieldSourceProfileIds_businessPhoneNumber,+    fieldSourceProfileIds_emailAddress,+    fieldSourceProfileIds_firstName,+    fieldSourceProfileIds_gender,+    fieldSourceProfileIds_homePhoneNumber,+    fieldSourceProfileIds_lastName,+    fieldSourceProfileIds_mailingAddress,+    fieldSourceProfileIds_middleName,+    fieldSourceProfileIds_mobilePhoneNumber,+    fieldSourceProfileIds_partyType,+    fieldSourceProfileIds_personalEmailAddress,+    fieldSourceProfileIds_phoneNumber,+    fieldSourceProfileIds_shippingAddress,++    -- * FlowDefinition+    FlowDefinition (..),+    newFlowDefinition,+    flowDefinition_description,+    flowDefinition_flowName,+    flowDefinition_kmsArn,+    flowDefinition_sourceFlowConfig,+    flowDefinition_tasks,+    flowDefinition_triggerConfig,++    -- * FoundByKeyValue+    FoundByKeyValue (..),+    newFoundByKeyValue,+    foundByKeyValue_keyName,+    foundByKeyValue_values,++    -- * IdentityResolutionJob+    IdentityResolutionJob (..),+    newIdentityResolutionJob,+    identityResolutionJob_domainName,+    identityResolutionJob_exportingLocation,+    identityResolutionJob_jobEndTime,+    identityResolutionJob_jobId,+    identityResolutionJob_jobStartTime,+    identityResolutionJob_jobStats,+    identityResolutionJob_message,+    identityResolutionJob_status,++    -- * IncrementalPullConfig+    IncrementalPullConfig (..),+    newIncrementalPullConfig,+    incrementalPullConfig_datetimeTypeFieldName,++    -- * IntegrationConfig+    IntegrationConfig (..),+    newIntegrationConfig,+    integrationConfig_appflowIntegration,++    -- * JobSchedule+    JobSchedule (..),+    newJobSchedule,+    jobSchedule_dayOfTheWeek,+    jobSchedule_time,++    -- * JobStats+    JobStats (..),+    newJobStats,+    jobStats_numberOfMatchesFound,+    jobStats_numberOfMergesDone,+    jobStats_numberOfProfilesReviewed,++    -- * ListDomainItem+    ListDomainItem (..),+    newListDomainItem,+    listDomainItem_tags,+    listDomainItem_domainName,+    listDomainItem_createdAt,+    listDomainItem_lastUpdatedAt,++    -- * ListIntegrationItem+    ListIntegrationItem (..),+    newListIntegrationItem,+    listIntegrationItem_isUnstructured,+    listIntegrationItem_objectTypeName,+    listIntegrationItem_objectTypeNames,+    listIntegrationItem_tags,+    listIntegrationItem_workflowId,+    listIntegrationItem_domainName,+    listIntegrationItem_uri,+    listIntegrationItem_createdAt,+    listIntegrationItem_lastUpdatedAt,++    -- * ListProfileObjectTypeItem+    ListProfileObjectTypeItem (..),+    newListProfileObjectTypeItem,+    listProfileObjectTypeItem_createdAt,+    listProfileObjectTypeItem_lastUpdatedAt,+    listProfileObjectTypeItem_tags,+    listProfileObjectTypeItem_objectTypeName,+    listProfileObjectTypeItem_description,++    -- * ListProfileObjectTypeTemplateItem+    ListProfileObjectTypeTemplateItem (..),+    newListProfileObjectTypeTemplateItem,+    listProfileObjectTypeTemplateItem_sourceName,+    listProfileObjectTypeTemplateItem_sourceObject,+    listProfileObjectTypeTemplateItem_templateId,++    -- * ListProfileObjectsItem+    ListProfileObjectsItem (..),+    newListProfileObjectsItem,+    listProfileObjectsItem_object,+    listProfileObjectsItem_objectTypeName,+    listProfileObjectsItem_profileObjectUniqueKey,++    -- * ListWorkflowsItem+    ListWorkflowsItem (..),+    newListWorkflowsItem,+    listWorkflowsItem_workflowType,+    listWorkflowsItem_workflowId,+    listWorkflowsItem_status,+    listWorkflowsItem_statusDescription,+    listWorkflowsItem_createdAt,+    listWorkflowsItem_lastUpdatedAt,++    -- * MarketoSourceProperties+    MarketoSourceProperties (..),+    newMarketoSourceProperties,+    marketoSourceProperties_object,++    -- * MatchItem+    MatchItem (..),+    newMatchItem,+    matchItem_confidenceScore,+    matchItem_matchId,+    matchItem_profileIds,++    -- * MatchingRequest+    MatchingRequest (..),+    newMatchingRequest,+    matchingRequest_autoMerging,+    matchingRequest_exportingConfig,+    matchingRequest_jobSchedule,+    matchingRequest_enabled,++    -- * MatchingResponse+    MatchingResponse (..),+    newMatchingResponse,+    matchingResponse_autoMerging,+    matchingResponse_enabled,+    matchingResponse_exportingConfig,+    matchingResponse_jobSchedule,++    -- * ObjectFilter+    ObjectFilter (..),+    newObjectFilter,+    objectFilter_keyName,+    objectFilter_values,++    -- * ObjectTypeField+    ObjectTypeField (..),+    newObjectTypeField,+    objectTypeField_contentType,+    objectTypeField_source,+    objectTypeField_target,++    -- * ObjectTypeKey+    ObjectTypeKey (..),+    newObjectTypeKey,+    objectTypeKey_fieldNames,+    objectTypeKey_standardIdentifiers,++    -- * Profile+    Profile (..),+    newProfile,+    profile_accountNumber,+    profile_additionalInformation,+    profile_address,+    profile_attributes,+    profile_billingAddress,+    profile_birthDate,+    profile_businessEmailAddress,+    profile_businessName,+    profile_businessPhoneNumber,+    profile_emailAddress,+    profile_firstName,+    profile_foundByItems,+    profile_gender,+    profile_homePhoneNumber,+    profile_lastName,+    profile_mailingAddress,+    profile_middleName,+    profile_mobilePhoneNumber,+    profile_partyType,+    profile_personalEmailAddress,+    profile_phoneNumber,+    profile_profileId,+    profile_shippingAddress,++    -- * S3ExportingConfig+    S3ExportingConfig (..),+    newS3ExportingConfig,+    s3ExportingConfig_s3KeyName,+    s3ExportingConfig_s3BucketName,++    -- * S3ExportingLocation+    S3ExportingLocation (..),+    newS3ExportingLocation,+    s3ExportingLocation_s3BucketName,+    s3ExportingLocation_s3KeyName,++    -- * S3SourceProperties+    S3SourceProperties (..),+    newS3SourceProperties,+    s3SourceProperties_bucketPrefix,+    s3SourceProperties_bucketName,++    -- * SalesforceSourceProperties+    SalesforceSourceProperties (..),+    newSalesforceSourceProperties,+    salesforceSourceProperties_enableDynamicFieldUpdate,+    salesforceSourceProperties_includeDeletedRecords,+    salesforceSourceProperties_object,++    -- * ScheduledTriggerProperties+    ScheduledTriggerProperties (..),+    newScheduledTriggerProperties,+    scheduledTriggerProperties_dataPullMode,+    scheduledTriggerProperties_firstExecutionFrom,+    scheduledTriggerProperties_scheduleEndTime,+    scheduledTriggerProperties_scheduleOffset,+    scheduledTriggerProperties_scheduleStartTime,+    scheduledTriggerProperties_timezone,+    scheduledTriggerProperties_scheduleExpression,++    -- * ServiceNowSourceProperties+    ServiceNowSourceProperties (..),+    newServiceNowSourceProperties,+    serviceNowSourceProperties_object,++    -- * SourceConnectorProperties+    SourceConnectorProperties (..),+    newSourceConnectorProperties,+    sourceConnectorProperties_marketo,+    sourceConnectorProperties_s3,+    sourceConnectorProperties_salesforce,+    sourceConnectorProperties_serviceNow,+    sourceConnectorProperties_zendesk,++    -- * SourceFlowConfig+    SourceFlowConfig (..),+    newSourceFlowConfig,+    sourceFlowConfig_connectorProfileName,+    sourceFlowConfig_incrementalPullConfig,+    sourceFlowConfig_connectorType,+    sourceFlowConfig_sourceConnectorProperties,++    -- * Task+    Task (..),+    newTask,+    task_connectorOperator,+    task_destinationField,+    task_taskProperties,+    task_sourceFields,+    task_taskType,++    -- * TriggerConfig+    TriggerConfig (..),+    newTriggerConfig,+    triggerConfig_triggerProperties,+    triggerConfig_triggerType,++    -- * TriggerProperties+    TriggerProperties (..),+    newTriggerProperties,+    triggerProperties_scheduled,++    -- * UpdateAddress+    UpdateAddress (..),+    newUpdateAddress,+    updateAddress_address1,+    updateAddress_address2,+    updateAddress_address3,+    updateAddress_address4,+    updateAddress_city,+    updateAddress_country,+    updateAddress_county,+    updateAddress_postalCode,+    updateAddress_province,+    updateAddress_state,++    -- * WorkflowAttributes+    WorkflowAttributes (..),+    newWorkflowAttributes,+    workflowAttributes_appflowIntegration,++    -- * WorkflowMetrics+    WorkflowMetrics (..),+    newWorkflowMetrics,+    workflowMetrics_appflowIntegration,++    -- * WorkflowStepItem+    WorkflowStepItem (..),+    newWorkflowStepItem,+    workflowStepItem_appflowIntegration,++    -- * ZendeskSourceProperties+    ZendeskSourceProperties (..),+    newZendeskSourceProperties,+    zendeskSourceProperties_object,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types.AdditionalSearchKey+import Amazonka.CustomerProfiles.Types.Address+import Amazonka.CustomerProfiles.Types.AppflowIntegration+import Amazonka.CustomerProfiles.Types.AppflowIntegrationWorkflowAttributes+import Amazonka.CustomerProfiles.Types.AppflowIntegrationWorkflowMetrics+import Amazonka.CustomerProfiles.Types.AppflowIntegrationWorkflowStep+import Amazonka.CustomerProfiles.Types.AutoMerging+import Amazonka.CustomerProfiles.Types.Batch+import Amazonka.CustomerProfiles.Types.ConflictResolution+import Amazonka.CustomerProfiles.Types.ConflictResolvingModel+import Amazonka.CustomerProfiles.Types.ConnectorOperator+import Amazonka.CustomerProfiles.Types.Consolidation+import Amazonka.CustomerProfiles.Types.DataPullMode+import Amazonka.CustomerProfiles.Types.DomainStats+import Amazonka.CustomerProfiles.Types.ExportingConfig+import Amazonka.CustomerProfiles.Types.ExportingLocation+import Amazonka.CustomerProfiles.Types.FieldContentType+import Amazonka.CustomerProfiles.Types.FieldSourceProfileIds+import Amazonka.CustomerProfiles.Types.FlowDefinition+import Amazonka.CustomerProfiles.Types.FoundByKeyValue+import Amazonka.CustomerProfiles.Types.Gender+import Amazonka.CustomerProfiles.Types.IdentityResolutionJob+import Amazonka.CustomerProfiles.Types.IdentityResolutionJobStatus+import Amazonka.CustomerProfiles.Types.IncrementalPullConfig+import Amazonka.CustomerProfiles.Types.IntegrationConfig+import Amazonka.CustomerProfiles.Types.JobSchedule+import Amazonka.CustomerProfiles.Types.JobScheduleDayOfTheWeek+import Amazonka.CustomerProfiles.Types.JobStats+import Amazonka.CustomerProfiles.Types.ListDomainItem+import Amazonka.CustomerProfiles.Types.ListIntegrationItem+import Amazonka.CustomerProfiles.Types.ListProfileObjectTypeItem+import Amazonka.CustomerProfiles.Types.ListProfileObjectTypeTemplateItem+import Amazonka.CustomerProfiles.Types.ListProfileObjectsItem+import Amazonka.CustomerProfiles.Types.ListWorkflowsItem+import Amazonka.CustomerProfiles.Types.LogicalOperator+import Amazonka.CustomerProfiles.Types.MarketoConnectorOperator+import Amazonka.CustomerProfiles.Types.MarketoSourceProperties+import Amazonka.CustomerProfiles.Types.MatchItem+import Amazonka.CustomerProfiles.Types.MatchingRequest+import Amazonka.CustomerProfiles.Types.MatchingResponse+import Amazonka.CustomerProfiles.Types.ObjectFilter+import Amazonka.CustomerProfiles.Types.ObjectTypeField+import Amazonka.CustomerProfiles.Types.ObjectTypeKey+import Amazonka.CustomerProfiles.Types.OperatorPropertiesKeys+import Amazonka.CustomerProfiles.Types.PartyType+import Amazonka.CustomerProfiles.Types.Profile+import Amazonka.CustomerProfiles.Types.S3ConnectorOperator+import Amazonka.CustomerProfiles.Types.S3ExportingConfig+import Amazonka.CustomerProfiles.Types.S3ExportingLocation+import Amazonka.CustomerProfiles.Types.S3SourceProperties+import Amazonka.CustomerProfiles.Types.SalesforceConnectorOperator+import Amazonka.CustomerProfiles.Types.SalesforceSourceProperties+import Amazonka.CustomerProfiles.Types.ScheduledTriggerProperties+import Amazonka.CustomerProfiles.Types.ServiceNowConnectorOperator+import Amazonka.CustomerProfiles.Types.ServiceNowSourceProperties+import Amazonka.CustomerProfiles.Types.SourceConnectorProperties+import Amazonka.CustomerProfiles.Types.SourceConnectorType+import Amazonka.CustomerProfiles.Types.SourceFlowConfig+import Amazonka.CustomerProfiles.Types.StandardIdentifier+import Amazonka.CustomerProfiles.Types.Status+import Amazonka.CustomerProfiles.Types.Task+import Amazonka.CustomerProfiles.Types.TaskType+import Amazonka.CustomerProfiles.Types.TriggerConfig+import Amazonka.CustomerProfiles.Types.TriggerProperties+import Amazonka.CustomerProfiles.Types.TriggerType+import Amazonka.CustomerProfiles.Types.UpdateAddress+import Amazonka.CustomerProfiles.Types.WorkflowAttributes+import Amazonka.CustomerProfiles.Types.WorkflowMetrics+import Amazonka.CustomerProfiles.Types.WorkflowStepItem+import Amazonka.CustomerProfiles.Types.WorkflowType+import Amazonka.CustomerProfiles.Types.ZendeskConnectorOperator+import Amazonka.CustomerProfiles.Types.ZendeskSourceProperties+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Sign.V4 as Sign++-- | API version @2020-08-15@ of the Amazon Connect Customer Profiles SDK configuration.+defaultService :: Core.Service+defaultService =+  Core.Service+    { Core.abbrev = "CustomerProfiles",+      Core.signer = Sign.v4,+      Core.endpointPrefix = "profile",+      Core.signingName = "profile",+      Core.version = "2020-08-15",+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,+      Core.endpoint = Core.defaultEndpoint defaultService,+      Core.timeout = Prelude.Just 70,+      Core.check = Core.statusSuccess,+      Core.error = Core.parseJSONError "CustomerProfiles",+      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 do not have sufficient access to perform this action.+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_AccessDeniedException =+  Core._MatchServiceError+    defaultService+    "AccessDeniedException"+    Prelude.. Core.hasStatus 403++-- | The input you provided is invalid.+_BadRequestException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_BadRequestException =+  Core._MatchServiceError+    defaultService+    "BadRequestException"+    Prelude.. Core.hasStatus 400++-- | An internal service error occurred.+_InternalServerException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InternalServerException =+  Core._MatchServiceError+    defaultService+    "InternalServerException"+    Prelude.. Core.hasStatus 500++-- | The requested resource does not exist, or access was denied.+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ResourceNotFoundException =+  Core._MatchServiceError+    defaultService+    "ResourceNotFoundException"+    Prelude.. Core.hasStatus 404++-- | You exceeded the maximum number of requests.+_ThrottlingException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ThrottlingException =+  Core._MatchServiceError+    defaultService+    "ThrottlingException"+    Prelude.. Core.hasStatus 429
+ gen/Amazonka/CustomerProfiles/Types/AdditionalSearchKey.hs view
@@ -0,0 +1,92 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.Types.AdditionalSearchKey+-- Copyright   : (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.CustomerProfiles.Types.AdditionalSearchKey where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A data type pair that consists of a @KeyName@ and @Values@ list that is+-- used in conjunction with the+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_SearchProfiles.html#customerprofiles-SearchProfiles-request-KeyName KeyName>+-- and+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_SearchProfiles.html#customerprofiles-SearchProfiles-request-Values Values>+-- parameters to search for profiles using the+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_SearchProfiles.html SearchProfiles>+-- API.+--+-- /See:/ 'newAdditionalSearchKey' smart constructor.+data AdditionalSearchKey = AdditionalSearchKey'+  { -- | A searchable identifier of a customer profile.+    keyName :: Prelude.Text,+    -- | A list of key values.+    values :: [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AdditionalSearchKey' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'keyName', 'additionalSearchKey_keyName' - A searchable identifier of a customer profile.+--+-- 'values', 'additionalSearchKey_values' - A list of key values.+newAdditionalSearchKey ::+  -- | 'keyName'+  Prelude.Text ->+  AdditionalSearchKey+newAdditionalSearchKey pKeyName_ =+  AdditionalSearchKey'+    { keyName = pKeyName_,+      values = Prelude.mempty+    }++-- | A searchable identifier of a customer profile.+additionalSearchKey_keyName :: Lens.Lens' AdditionalSearchKey Prelude.Text+additionalSearchKey_keyName = Lens.lens (\AdditionalSearchKey' {keyName} -> keyName) (\s@AdditionalSearchKey' {} a -> s {keyName = a} :: AdditionalSearchKey)++-- | A list of key values.+additionalSearchKey_values :: Lens.Lens' AdditionalSearchKey [Prelude.Text]+additionalSearchKey_values = Lens.lens (\AdditionalSearchKey' {values} -> values) (\s@AdditionalSearchKey' {} a -> s {values = a} :: AdditionalSearchKey) Prelude.. Lens.coerced++instance Prelude.Hashable AdditionalSearchKey where+  hashWithSalt _salt AdditionalSearchKey' {..} =+    _salt+      `Prelude.hashWithSalt` keyName+      `Prelude.hashWithSalt` values++instance Prelude.NFData AdditionalSearchKey where+  rnf AdditionalSearchKey' {..} =+    Prelude.rnf keyName+      `Prelude.seq` Prelude.rnf values++instance Data.ToJSON AdditionalSearchKey where+  toJSON AdditionalSearchKey' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("KeyName" Data..= keyName),+            Prelude.Just ("Values" Data..= values)+          ]+      )
+ gen/Amazonka/CustomerProfiles/Types/Address.hs view
@@ -0,0 +1,198 @@+{-# 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.CustomerProfiles.Types.Address+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.CustomerProfiles.Types.Address where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A generic address associated with the customer that is not mailing,+-- shipping, or billing.+--+-- /See:/ 'newAddress' smart constructor.+data Address = Address'+  { -- | The first line of a customer address.+    address1 :: Prelude.Maybe Prelude.Text,+    -- | The second line of a customer address.+    address2 :: Prelude.Maybe Prelude.Text,+    -- | The third line of a customer address.+    address3 :: Prelude.Maybe Prelude.Text,+    -- | The fourth line of a customer address.+    address4 :: Prelude.Maybe Prelude.Text,+    -- | The city in which a customer lives.+    city :: Prelude.Maybe Prelude.Text,+    -- | The country in which a customer lives.+    country :: Prelude.Maybe Prelude.Text,+    -- | The county in which a customer lives.+    county :: Prelude.Maybe Prelude.Text,+    -- | The postal code of a customer address.+    postalCode :: Prelude.Maybe Prelude.Text,+    -- | The province in which a customer lives.+    province :: Prelude.Maybe Prelude.Text,+    -- | The state in which a customer lives.+    state :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Address' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'address1', 'address_address1' - The first line of a customer address.+--+-- 'address2', 'address_address2' - The second line of a customer address.+--+-- 'address3', 'address_address3' - The third line of a customer address.+--+-- 'address4', 'address_address4' - The fourth line of a customer address.+--+-- 'city', 'address_city' - The city in which a customer lives.+--+-- 'country', 'address_country' - The country in which a customer lives.+--+-- 'county', 'address_county' - The county in which a customer lives.+--+-- 'postalCode', 'address_postalCode' - The postal code of a customer address.+--+-- 'province', 'address_province' - The province in which a customer lives.+--+-- 'state', 'address_state' - The state in which a customer lives.+newAddress ::+  Address+newAddress =+  Address'+    { address1 = Prelude.Nothing,+      address2 = Prelude.Nothing,+      address3 = Prelude.Nothing,+      address4 = Prelude.Nothing,+      city = Prelude.Nothing,+      country = Prelude.Nothing,+      county = Prelude.Nothing,+      postalCode = Prelude.Nothing,+      province = Prelude.Nothing,+      state = Prelude.Nothing+    }++-- | The first line of a customer address.+address_address1 :: Lens.Lens' Address (Prelude.Maybe Prelude.Text)+address_address1 = Lens.lens (\Address' {address1} -> address1) (\s@Address' {} a -> s {address1 = a} :: Address)++-- | The second line of a customer address.+address_address2 :: Lens.Lens' Address (Prelude.Maybe Prelude.Text)+address_address2 = Lens.lens (\Address' {address2} -> address2) (\s@Address' {} a -> s {address2 = a} :: Address)++-- | The third line of a customer address.+address_address3 :: Lens.Lens' Address (Prelude.Maybe Prelude.Text)+address_address3 = Lens.lens (\Address' {address3} -> address3) (\s@Address' {} a -> s {address3 = a} :: Address)++-- | The fourth line of a customer address.+address_address4 :: Lens.Lens' Address (Prelude.Maybe Prelude.Text)+address_address4 = Lens.lens (\Address' {address4} -> address4) (\s@Address' {} a -> s {address4 = a} :: Address)++-- | The city in which a customer lives.+address_city :: Lens.Lens' Address (Prelude.Maybe Prelude.Text)+address_city = Lens.lens (\Address' {city} -> city) (\s@Address' {} a -> s {city = a} :: Address)++-- | The country in which a customer lives.+address_country :: Lens.Lens' Address (Prelude.Maybe Prelude.Text)+address_country = Lens.lens (\Address' {country} -> country) (\s@Address' {} a -> s {country = a} :: Address)++-- | The county in which a customer lives.+address_county :: Lens.Lens' Address (Prelude.Maybe Prelude.Text)+address_county = Lens.lens (\Address' {county} -> county) (\s@Address' {} a -> s {county = a} :: Address)++-- | The postal code of a customer address.+address_postalCode :: Lens.Lens' Address (Prelude.Maybe Prelude.Text)+address_postalCode = Lens.lens (\Address' {postalCode} -> postalCode) (\s@Address' {} a -> s {postalCode = a} :: Address)++-- | The province in which a customer lives.+address_province :: Lens.Lens' Address (Prelude.Maybe Prelude.Text)+address_province = Lens.lens (\Address' {province} -> province) (\s@Address' {} a -> s {province = a} :: Address)++-- | The state in which a customer lives.+address_state :: Lens.Lens' Address (Prelude.Maybe Prelude.Text)+address_state = Lens.lens (\Address' {state} -> state) (\s@Address' {} a -> s {state = a} :: Address)++instance Data.FromJSON Address where+  parseJSON =+    Data.withObject+      "Address"+      ( \x ->+          Address'+            Prelude.<$> (x Data..:? "Address1")+            Prelude.<*> (x Data..:? "Address2")+            Prelude.<*> (x Data..:? "Address3")+            Prelude.<*> (x Data..:? "Address4")+            Prelude.<*> (x Data..:? "City")+            Prelude.<*> (x Data..:? "Country")+            Prelude.<*> (x Data..:? "County")+            Prelude.<*> (x Data..:? "PostalCode")+            Prelude.<*> (x Data..:? "Province")+            Prelude.<*> (x Data..:? "State")+      )++instance Prelude.Hashable Address where+  hashWithSalt _salt Address' {..} =+    _salt+      `Prelude.hashWithSalt` address1+      `Prelude.hashWithSalt` address2+      `Prelude.hashWithSalt` address3+      `Prelude.hashWithSalt` address4+      `Prelude.hashWithSalt` city+      `Prelude.hashWithSalt` country+      `Prelude.hashWithSalt` county+      `Prelude.hashWithSalt` postalCode+      `Prelude.hashWithSalt` province+      `Prelude.hashWithSalt` state++instance Prelude.NFData Address where+  rnf Address' {..} =+    Prelude.rnf address1+      `Prelude.seq` Prelude.rnf address2+      `Prelude.seq` Prelude.rnf address3+      `Prelude.seq` Prelude.rnf address4+      `Prelude.seq` Prelude.rnf city+      `Prelude.seq` Prelude.rnf country+      `Prelude.seq` Prelude.rnf county+      `Prelude.seq` Prelude.rnf postalCode+      `Prelude.seq` Prelude.rnf province+      `Prelude.seq` Prelude.rnf state++instance Data.ToJSON Address where+  toJSON Address' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Address1" Data..=) Prelude.<$> address1,+            ("Address2" Data..=) Prelude.<$> address2,+            ("Address3" Data..=) Prelude.<$> address3,+            ("Address4" Data..=) Prelude.<$> address4,+            ("City" Data..=) Prelude.<$> city,+            ("Country" Data..=) Prelude.<$> country,+            ("County" Data..=) Prelude.<$> county,+            ("PostalCode" Data..=) Prelude.<$> postalCode,+            ("Province" Data..=) Prelude.<$> province,+            ("State" Data..=) Prelude.<$> state+          ]+      )
+ gen/Amazonka/CustomerProfiles/Types/AppflowIntegration.hs view
@@ -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.CustomerProfiles.Types.AppflowIntegration+-- Copyright   : (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.CustomerProfiles.Types.AppflowIntegration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types.Batch+import Amazonka.CustomerProfiles.Types.FlowDefinition+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Details for workflow of type @APPFLOW_INTEGRATION@.+--+-- /See:/ 'newAppflowIntegration' smart constructor.+data AppflowIntegration = AppflowIntegration'+  { -- | Batches in workflow of type @APPFLOW_INTEGRATION@.+    batches :: Prelude.Maybe [Batch],+    flowDefinition :: FlowDefinition+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AppflowIntegration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'batches', 'appflowIntegration_batches' - Batches in workflow of type @APPFLOW_INTEGRATION@.+--+-- 'flowDefinition', 'appflowIntegration_flowDefinition' - Undocumented member.+newAppflowIntegration ::+  -- | 'flowDefinition'+  FlowDefinition ->+  AppflowIntegration+newAppflowIntegration pFlowDefinition_ =+  AppflowIntegration'+    { batches = Prelude.Nothing,+      flowDefinition = pFlowDefinition_+    }++-- | Batches in workflow of type @APPFLOW_INTEGRATION@.+appflowIntegration_batches :: Lens.Lens' AppflowIntegration (Prelude.Maybe [Batch])+appflowIntegration_batches = Lens.lens (\AppflowIntegration' {batches} -> batches) (\s@AppflowIntegration' {} a -> s {batches = a} :: AppflowIntegration) Prelude.. Lens.mapping Lens.coerced++-- | Undocumented member.+appflowIntegration_flowDefinition :: Lens.Lens' AppflowIntegration FlowDefinition+appflowIntegration_flowDefinition = Lens.lens (\AppflowIntegration' {flowDefinition} -> flowDefinition) (\s@AppflowIntegration' {} a -> s {flowDefinition = a} :: AppflowIntegration)++instance Prelude.Hashable AppflowIntegration where+  hashWithSalt _salt AppflowIntegration' {..} =+    _salt+      `Prelude.hashWithSalt` batches+      `Prelude.hashWithSalt` flowDefinition++instance Prelude.NFData AppflowIntegration where+  rnf AppflowIntegration' {..} =+    Prelude.rnf batches+      `Prelude.seq` Prelude.rnf flowDefinition++instance Data.ToJSON AppflowIntegration where+  toJSON AppflowIntegration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Batches" Data..=) Prelude.<$> batches,+            Prelude.Just+              ("FlowDefinition" Data..= flowDefinition)+          ]+      )
+ gen/Amazonka/CustomerProfiles/Types/AppflowIntegrationWorkflowAttributes.hs view
@@ -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.CustomerProfiles.Types.AppflowIntegrationWorkflowAttributes+-- Copyright   : (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.CustomerProfiles.Types.AppflowIntegrationWorkflowAttributes where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types.SourceConnectorType+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Structure holding all @APPFLOW_INTEGRATION@ specific workflow+-- attributes.+--+-- /See:/ 'newAppflowIntegrationWorkflowAttributes' smart constructor.+data AppflowIntegrationWorkflowAttributes = AppflowIntegrationWorkflowAttributes'+  { -- | The Amazon Resource Name (ARN) of the IAM role. Customer Profiles+    -- assumes this role to create resources on your behalf as part of workflow+    -- execution.+    roleArn :: Prelude.Maybe Prelude.Text,+    -- | Specifies the source connector type, such as Salesforce, ServiceNow, and+    -- Marketo. Indicates source of ingestion.+    sourceConnectorType :: SourceConnectorType,+    -- | The name of the AppFlow connector profile used for ingestion.+    connectorProfileName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AppflowIntegrationWorkflowAttributes' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'roleArn', 'appflowIntegrationWorkflowAttributes_roleArn' - The Amazon Resource Name (ARN) of the IAM role. Customer Profiles+-- assumes this role to create resources on your behalf as part of workflow+-- execution.+--+-- 'sourceConnectorType', 'appflowIntegrationWorkflowAttributes_sourceConnectorType' - Specifies the source connector type, such as Salesforce, ServiceNow, and+-- Marketo. Indicates source of ingestion.+--+-- 'connectorProfileName', 'appflowIntegrationWorkflowAttributes_connectorProfileName' - The name of the AppFlow connector profile used for ingestion.+newAppflowIntegrationWorkflowAttributes ::+  -- | 'sourceConnectorType'+  SourceConnectorType ->+  -- | 'connectorProfileName'+  Prelude.Text ->+  AppflowIntegrationWorkflowAttributes+newAppflowIntegrationWorkflowAttributes+  pSourceConnectorType_+  pConnectorProfileName_ =+    AppflowIntegrationWorkflowAttributes'+      { roleArn =+          Prelude.Nothing,+        sourceConnectorType =+          pSourceConnectorType_,+        connectorProfileName =+          pConnectorProfileName_+      }++-- | The Amazon Resource Name (ARN) of the IAM role. Customer Profiles+-- assumes this role to create resources on your behalf as part of workflow+-- execution.+appflowIntegrationWorkflowAttributes_roleArn :: Lens.Lens' AppflowIntegrationWorkflowAttributes (Prelude.Maybe Prelude.Text)+appflowIntegrationWorkflowAttributes_roleArn = Lens.lens (\AppflowIntegrationWorkflowAttributes' {roleArn} -> roleArn) (\s@AppflowIntegrationWorkflowAttributes' {} a -> s {roleArn = a} :: AppflowIntegrationWorkflowAttributes)++-- | Specifies the source connector type, such as Salesforce, ServiceNow, and+-- Marketo. Indicates source of ingestion.+appflowIntegrationWorkflowAttributes_sourceConnectorType :: Lens.Lens' AppflowIntegrationWorkflowAttributes SourceConnectorType+appflowIntegrationWorkflowAttributes_sourceConnectorType = Lens.lens (\AppflowIntegrationWorkflowAttributes' {sourceConnectorType} -> sourceConnectorType) (\s@AppflowIntegrationWorkflowAttributes' {} a -> s {sourceConnectorType = a} :: AppflowIntegrationWorkflowAttributes)++-- | The name of the AppFlow connector profile used for ingestion.+appflowIntegrationWorkflowAttributes_connectorProfileName :: Lens.Lens' AppflowIntegrationWorkflowAttributes Prelude.Text+appflowIntegrationWorkflowAttributes_connectorProfileName = Lens.lens (\AppflowIntegrationWorkflowAttributes' {connectorProfileName} -> connectorProfileName) (\s@AppflowIntegrationWorkflowAttributes' {} a -> s {connectorProfileName = a} :: AppflowIntegrationWorkflowAttributes)++instance+  Data.FromJSON+    AppflowIntegrationWorkflowAttributes+  where+  parseJSON =+    Data.withObject+      "AppflowIntegrationWorkflowAttributes"+      ( \x ->+          AppflowIntegrationWorkflowAttributes'+            Prelude.<$> (x Data..:? "RoleArn")+            Prelude.<*> (x Data..: "SourceConnectorType")+            Prelude.<*> (x Data..: "ConnectorProfileName")+      )++instance+  Prelude.Hashable+    AppflowIntegrationWorkflowAttributes+  where+  hashWithSalt+    _salt+    AppflowIntegrationWorkflowAttributes' {..} =+      _salt+        `Prelude.hashWithSalt` roleArn+        `Prelude.hashWithSalt` sourceConnectorType+        `Prelude.hashWithSalt` connectorProfileName++instance+  Prelude.NFData+    AppflowIntegrationWorkflowAttributes+  where+  rnf AppflowIntegrationWorkflowAttributes' {..} =+    Prelude.rnf roleArn+      `Prelude.seq` Prelude.rnf sourceConnectorType+      `Prelude.seq` Prelude.rnf connectorProfileName
+ gen/Amazonka/CustomerProfiles/Types/AppflowIntegrationWorkflowMetrics.hs view
@@ -0,0 +1,117 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.Types.AppflowIntegrationWorkflowMetrics+-- Copyright   : (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.CustomerProfiles.Types.AppflowIntegrationWorkflowMetrics 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++-- | Workflow specific execution metrics for @APPFLOW_INTEGRATION@ workflow.+--+-- /See:/ 'newAppflowIntegrationWorkflowMetrics' smart constructor.+data AppflowIntegrationWorkflowMetrics = AppflowIntegrationWorkflowMetrics'+  { -- | Number of records processed in @APPFLOW_INTEGRATION@ workflow.+    recordsProcessed :: Prelude.Integer,+    -- | Total steps completed in @APPFLOW_INTEGRATION@ workflow.+    stepsCompleted :: Prelude.Integer,+    -- | Total steps in @APPFLOW_INTEGRATION@ workflow.+    totalSteps :: Prelude.Integer+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AppflowIntegrationWorkflowMetrics' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'recordsProcessed', 'appflowIntegrationWorkflowMetrics_recordsProcessed' - Number of records processed in @APPFLOW_INTEGRATION@ workflow.+--+-- 'stepsCompleted', 'appflowIntegrationWorkflowMetrics_stepsCompleted' - Total steps completed in @APPFLOW_INTEGRATION@ workflow.+--+-- 'totalSteps', 'appflowIntegrationWorkflowMetrics_totalSteps' - Total steps in @APPFLOW_INTEGRATION@ workflow.+newAppflowIntegrationWorkflowMetrics ::+  -- | 'recordsProcessed'+  Prelude.Integer ->+  -- | 'stepsCompleted'+  Prelude.Integer ->+  -- | 'totalSteps'+  Prelude.Integer ->+  AppflowIntegrationWorkflowMetrics+newAppflowIntegrationWorkflowMetrics+  pRecordsProcessed_+  pStepsCompleted_+  pTotalSteps_ =+    AppflowIntegrationWorkflowMetrics'+      { recordsProcessed =+          pRecordsProcessed_,+        stepsCompleted = pStepsCompleted_,+        totalSteps = pTotalSteps_+      }++-- | Number of records processed in @APPFLOW_INTEGRATION@ workflow.+appflowIntegrationWorkflowMetrics_recordsProcessed :: Lens.Lens' AppflowIntegrationWorkflowMetrics Prelude.Integer+appflowIntegrationWorkflowMetrics_recordsProcessed = Lens.lens (\AppflowIntegrationWorkflowMetrics' {recordsProcessed} -> recordsProcessed) (\s@AppflowIntegrationWorkflowMetrics' {} a -> s {recordsProcessed = a} :: AppflowIntegrationWorkflowMetrics)++-- | Total steps completed in @APPFLOW_INTEGRATION@ workflow.+appflowIntegrationWorkflowMetrics_stepsCompleted :: Lens.Lens' AppflowIntegrationWorkflowMetrics Prelude.Integer+appflowIntegrationWorkflowMetrics_stepsCompleted = Lens.lens (\AppflowIntegrationWorkflowMetrics' {stepsCompleted} -> stepsCompleted) (\s@AppflowIntegrationWorkflowMetrics' {} a -> s {stepsCompleted = a} :: AppflowIntegrationWorkflowMetrics)++-- | Total steps in @APPFLOW_INTEGRATION@ workflow.+appflowIntegrationWorkflowMetrics_totalSteps :: Lens.Lens' AppflowIntegrationWorkflowMetrics Prelude.Integer+appflowIntegrationWorkflowMetrics_totalSteps = Lens.lens (\AppflowIntegrationWorkflowMetrics' {totalSteps} -> totalSteps) (\s@AppflowIntegrationWorkflowMetrics' {} a -> s {totalSteps = a} :: AppflowIntegrationWorkflowMetrics)++instance+  Data.FromJSON+    AppflowIntegrationWorkflowMetrics+  where+  parseJSON =+    Data.withObject+      "AppflowIntegrationWorkflowMetrics"+      ( \x ->+          AppflowIntegrationWorkflowMetrics'+            Prelude.<$> (x Data..: "RecordsProcessed")+            Prelude.<*> (x Data..: "StepsCompleted")+            Prelude.<*> (x Data..: "TotalSteps")+      )++instance+  Prelude.Hashable+    AppflowIntegrationWorkflowMetrics+  where+  hashWithSalt+    _salt+    AppflowIntegrationWorkflowMetrics' {..} =+      _salt+        `Prelude.hashWithSalt` recordsProcessed+        `Prelude.hashWithSalt` stepsCompleted+        `Prelude.hashWithSalt` totalSteps++instance+  Prelude.NFData+    AppflowIntegrationWorkflowMetrics+  where+  rnf AppflowIntegrationWorkflowMetrics' {..} =+    Prelude.rnf recordsProcessed+      `Prelude.seq` Prelude.rnf stepsCompleted+      `Prelude.seq` Prelude.rnf totalSteps
+ gen/Amazonka/CustomerProfiles/Types/AppflowIntegrationWorkflowStep.hs view
@@ -0,0 +1,213 @@+{-# 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.CustomerProfiles.Types.AppflowIntegrationWorkflowStep+-- Copyright   : (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.CustomerProfiles.Types.AppflowIntegrationWorkflowStep where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types.Status+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Workflow step details for @APPFLOW_INTEGRATION@ workflow.+--+-- /See:/ 'newAppflowIntegrationWorkflowStep' smart constructor.+data AppflowIntegrationWorkflowStep = AppflowIntegrationWorkflowStep'+  { -- | Name of the flow created during execution of workflow step.+    -- @APPFLOW_INTEGRATION@ workflow type creates an appflow flow during+    -- workflow step execution on the customers behalf.+    flowName :: Prelude.Text,+    -- | Workflow step status for @APPFLOW_INTEGRATION@ workflow.+    status :: Status,+    -- | Message indicating execution of workflow step for @APPFLOW_INTEGRATION@+    -- workflow.+    executionMessage :: Prelude.Text,+    -- | Total number of records processed during execution of workflow step for+    -- @APPFLOW_INTEGRATION@ workflow.+    recordsProcessed :: Prelude.Integer,+    -- | Start datetime of records pulled in batch during execution of workflow+    -- step for @APPFLOW_INTEGRATION@ workflow.+    batchRecordsStartTime :: Prelude.Text,+    -- | End datetime of records pulled in batch during execution of workflow+    -- step for @APPFLOW_INTEGRATION@ workflow.+    batchRecordsEndTime :: Prelude.Text,+    -- | Creation timestamp of workflow step for @APPFLOW_INTEGRATION@ workflow.+    createdAt :: Data.POSIX,+    -- | Last updated timestamp for workflow step for @APPFLOW_INTEGRATION@+    -- workflow.+    lastUpdatedAt :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AppflowIntegrationWorkflowStep' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'flowName', 'appflowIntegrationWorkflowStep_flowName' - Name of the flow created during execution of workflow step.+-- @APPFLOW_INTEGRATION@ workflow type creates an appflow flow during+-- workflow step execution on the customers behalf.+--+-- 'status', 'appflowIntegrationWorkflowStep_status' - Workflow step status for @APPFLOW_INTEGRATION@ workflow.+--+-- 'executionMessage', 'appflowIntegrationWorkflowStep_executionMessage' - Message indicating execution of workflow step for @APPFLOW_INTEGRATION@+-- workflow.+--+-- 'recordsProcessed', 'appflowIntegrationWorkflowStep_recordsProcessed' - Total number of records processed during execution of workflow step for+-- @APPFLOW_INTEGRATION@ workflow.+--+-- 'batchRecordsStartTime', 'appflowIntegrationWorkflowStep_batchRecordsStartTime' - Start datetime of records pulled in batch during execution of workflow+-- step for @APPFLOW_INTEGRATION@ workflow.+--+-- 'batchRecordsEndTime', 'appflowIntegrationWorkflowStep_batchRecordsEndTime' - End datetime of records pulled in batch during execution of workflow+-- step for @APPFLOW_INTEGRATION@ workflow.+--+-- 'createdAt', 'appflowIntegrationWorkflowStep_createdAt' - Creation timestamp of workflow step for @APPFLOW_INTEGRATION@ workflow.+--+-- 'lastUpdatedAt', 'appflowIntegrationWorkflowStep_lastUpdatedAt' - Last updated timestamp for workflow step for @APPFLOW_INTEGRATION@+-- workflow.+newAppflowIntegrationWorkflowStep ::+  -- | 'flowName'+  Prelude.Text ->+  -- | 'status'+  Status ->+  -- | 'executionMessage'+  Prelude.Text ->+  -- | 'recordsProcessed'+  Prelude.Integer ->+  -- | 'batchRecordsStartTime'+  Prelude.Text ->+  -- | 'batchRecordsEndTime'+  Prelude.Text ->+  -- | 'createdAt'+  Prelude.UTCTime ->+  -- | 'lastUpdatedAt'+  Prelude.UTCTime ->+  AppflowIntegrationWorkflowStep+newAppflowIntegrationWorkflowStep+  pFlowName_+  pStatus_+  pExecutionMessage_+  pRecordsProcessed_+  pBatchRecordsStartTime_+  pBatchRecordsEndTime_+  pCreatedAt_+  pLastUpdatedAt_ =+    AppflowIntegrationWorkflowStep'+      { flowName =+          pFlowName_,+        status = pStatus_,+        executionMessage = pExecutionMessage_,+        recordsProcessed = pRecordsProcessed_,+        batchRecordsStartTime =+          pBatchRecordsStartTime_,+        batchRecordsEndTime = pBatchRecordsEndTime_,+        createdAt = Data._Time Lens.# pCreatedAt_,+        lastUpdatedAt =+          Data._Time Lens.# pLastUpdatedAt_+      }++-- | Name of the flow created during execution of workflow step.+-- @APPFLOW_INTEGRATION@ workflow type creates an appflow flow during+-- workflow step execution on the customers behalf.+appflowIntegrationWorkflowStep_flowName :: Lens.Lens' AppflowIntegrationWorkflowStep Prelude.Text+appflowIntegrationWorkflowStep_flowName = Lens.lens (\AppflowIntegrationWorkflowStep' {flowName} -> flowName) (\s@AppflowIntegrationWorkflowStep' {} a -> s {flowName = a} :: AppflowIntegrationWorkflowStep)++-- | Workflow step status for @APPFLOW_INTEGRATION@ workflow.+appflowIntegrationWorkflowStep_status :: Lens.Lens' AppflowIntegrationWorkflowStep Status+appflowIntegrationWorkflowStep_status = Lens.lens (\AppflowIntegrationWorkflowStep' {status} -> status) (\s@AppflowIntegrationWorkflowStep' {} a -> s {status = a} :: AppflowIntegrationWorkflowStep)++-- | Message indicating execution of workflow step for @APPFLOW_INTEGRATION@+-- workflow.+appflowIntegrationWorkflowStep_executionMessage :: Lens.Lens' AppflowIntegrationWorkflowStep Prelude.Text+appflowIntegrationWorkflowStep_executionMessage = Lens.lens (\AppflowIntegrationWorkflowStep' {executionMessage} -> executionMessage) (\s@AppflowIntegrationWorkflowStep' {} a -> s {executionMessage = a} :: AppflowIntegrationWorkflowStep)++-- | Total number of records processed during execution of workflow step for+-- @APPFLOW_INTEGRATION@ workflow.+appflowIntegrationWorkflowStep_recordsProcessed :: Lens.Lens' AppflowIntegrationWorkflowStep Prelude.Integer+appflowIntegrationWorkflowStep_recordsProcessed = Lens.lens (\AppflowIntegrationWorkflowStep' {recordsProcessed} -> recordsProcessed) (\s@AppflowIntegrationWorkflowStep' {} a -> s {recordsProcessed = a} :: AppflowIntegrationWorkflowStep)++-- | Start datetime of records pulled in batch during execution of workflow+-- step for @APPFLOW_INTEGRATION@ workflow.+appflowIntegrationWorkflowStep_batchRecordsStartTime :: Lens.Lens' AppflowIntegrationWorkflowStep Prelude.Text+appflowIntegrationWorkflowStep_batchRecordsStartTime = Lens.lens (\AppflowIntegrationWorkflowStep' {batchRecordsStartTime} -> batchRecordsStartTime) (\s@AppflowIntegrationWorkflowStep' {} a -> s {batchRecordsStartTime = a} :: AppflowIntegrationWorkflowStep)++-- | End datetime of records pulled in batch during execution of workflow+-- step for @APPFLOW_INTEGRATION@ workflow.+appflowIntegrationWorkflowStep_batchRecordsEndTime :: Lens.Lens' AppflowIntegrationWorkflowStep Prelude.Text+appflowIntegrationWorkflowStep_batchRecordsEndTime = Lens.lens (\AppflowIntegrationWorkflowStep' {batchRecordsEndTime} -> batchRecordsEndTime) (\s@AppflowIntegrationWorkflowStep' {} a -> s {batchRecordsEndTime = a} :: AppflowIntegrationWorkflowStep)++-- | Creation timestamp of workflow step for @APPFLOW_INTEGRATION@ workflow.+appflowIntegrationWorkflowStep_createdAt :: Lens.Lens' AppflowIntegrationWorkflowStep Prelude.UTCTime+appflowIntegrationWorkflowStep_createdAt = Lens.lens (\AppflowIntegrationWorkflowStep' {createdAt} -> createdAt) (\s@AppflowIntegrationWorkflowStep' {} a -> s {createdAt = a} :: AppflowIntegrationWorkflowStep) Prelude.. Data._Time++-- | Last updated timestamp for workflow step for @APPFLOW_INTEGRATION@+-- workflow.+appflowIntegrationWorkflowStep_lastUpdatedAt :: Lens.Lens' AppflowIntegrationWorkflowStep Prelude.UTCTime+appflowIntegrationWorkflowStep_lastUpdatedAt = Lens.lens (\AppflowIntegrationWorkflowStep' {lastUpdatedAt} -> lastUpdatedAt) (\s@AppflowIntegrationWorkflowStep' {} a -> s {lastUpdatedAt = a} :: AppflowIntegrationWorkflowStep) Prelude.. Data._Time++instance Data.FromJSON AppflowIntegrationWorkflowStep where+  parseJSON =+    Data.withObject+      "AppflowIntegrationWorkflowStep"+      ( \x ->+          AppflowIntegrationWorkflowStep'+            Prelude.<$> (x Data..: "FlowName")+            Prelude.<*> (x Data..: "Status")+            Prelude.<*> (x Data..: "ExecutionMessage")+            Prelude.<*> (x Data..: "RecordsProcessed")+            Prelude.<*> (x Data..: "BatchRecordsStartTime")+            Prelude.<*> (x Data..: "BatchRecordsEndTime")+            Prelude.<*> (x Data..: "CreatedAt")+            Prelude.<*> (x Data..: "LastUpdatedAt")+      )++instance+  Prelude.Hashable+    AppflowIntegrationWorkflowStep+  where+  hashWithSalt+    _salt+    AppflowIntegrationWorkflowStep' {..} =+      _salt+        `Prelude.hashWithSalt` flowName+        `Prelude.hashWithSalt` status+        `Prelude.hashWithSalt` executionMessage+        `Prelude.hashWithSalt` recordsProcessed+        `Prelude.hashWithSalt` batchRecordsStartTime+        `Prelude.hashWithSalt` batchRecordsEndTime+        `Prelude.hashWithSalt` createdAt+        `Prelude.hashWithSalt` lastUpdatedAt++instance+  Prelude.NFData+    AppflowIntegrationWorkflowStep+  where+  rnf AppflowIntegrationWorkflowStep' {..} =+    Prelude.rnf flowName+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf executionMessage+      `Prelude.seq` Prelude.rnf recordsProcessed+      `Prelude.seq` Prelude.rnf batchRecordsStartTime+      `Prelude.seq` Prelude.rnf batchRecordsEndTime+      `Prelude.seq` Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf lastUpdatedAt
+ gen/Amazonka/CustomerProfiles/Types/AutoMerging.hs view
@@ -0,0 +1,150 @@+{-# 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.CustomerProfiles.Types.AutoMerging+-- Copyright   : (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.CustomerProfiles.Types.AutoMerging where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types.ConflictResolution+import Amazonka.CustomerProfiles.Types.Consolidation+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Configuration settings for how to perform the auto-merging of profiles.+--+-- /See:/ 'newAutoMerging' smart constructor.+data AutoMerging = AutoMerging'+  { -- | How the auto-merging process should resolve conflicts between different+    -- profiles. For example, if Profile A and Profile B have the same+    -- @FirstName@ and @LastName@ (and that is the matching criteria), which+    -- @EmailAddress@ should be used?+    conflictResolution :: Prelude.Maybe ConflictResolution,+    -- | A list of matching attributes that represent matching criteria. If two+    -- profiles meet at least one of the requirements in the matching+    -- attributes list, they will be merged.+    consolidation :: Prelude.Maybe Consolidation,+    -- | A number between 0 and 1 that represents the minimum confidence score+    -- required for profiles within a matching group to be merged during the+    -- auto-merge process. A higher score means higher similarity required to+    -- merge profiles.+    minAllowedConfidenceScoreForMerging :: Prelude.Maybe Prelude.Double,+    -- | The flag that enables the auto-merging of duplicate profiles.+    enabled :: Prelude.Bool+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AutoMerging' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'conflictResolution', 'autoMerging_conflictResolution' - How the auto-merging process should resolve conflicts between different+-- profiles. For example, if Profile A and Profile B have the same+-- @FirstName@ and @LastName@ (and that is the matching criteria), which+-- @EmailAddress@ should be used?+--+-- 'consolidation', 'autoMerging_consolidation' - A list of matching attributes that represent matching criteria. If two+-- profiles meet at least one of the requirements in the matching+-- attributes list, they will be merged.+--+-- 'minAllowedConfidenceScoreForMerging', 'autoMerging_minAllowedConfidenceScoreForMerging' - A number between 0 and 1 that represents the minimum confidence score+-- required for profiles within a matching group to be merged during the+-- auto-merge process. A higher score means higher similarity required to+-- merge profiles.+--+-- 'enabled', 'autoMerging_enabled' - The flag that enables the auto-merging of duplicate profiles.+newAutoMerging ::+  -- | 'enabled'+  Prelude.Bool ->+  AutoMerging+newAutoMerging pEnabled_ =+  AutoMerging'+    { conflictResolution = Prelude.Nothing,+      consolidation = Prelude.Nothing,+      minAllowedConfidenceScoreForMerging =+        Prelude.Nothing,+      enabled = pEnabled_+    }++-- | How the auto-merging process should resolve conflicts between different+-- profiles. For example, if Profile A and Profile B have the same+-- @FirstName@ and @LastName@ (and that is the matching criteria), which+-- @EmailAddress@ should be used?+autoMerging_conflictResolution :: Lens.Lens' AutoMerging (Prelude.Maybe ConflictResolution)+autoMerging_conflictResolution = Lens.lens (\AutoMerging' {conflictResolution} -> conflictResolution) (\s@AutoMerging' {} a -> s {conflictResolution = a} :: AutoMerging)++-- | A list of matching attributes that represent matching criteria. If two+-- profiles meet at least one of the requirements in the matching+-- attributes list, they will be merged.+autoMerging_consolidation :: Lens.Lens' AutoMerging (Prelude.Maybe Consolidation)+autoMerging_consolidation = Lens.lens (\AutoMerging' {consolidation} -> consolidation) (\s@AutoMerging' {} a -> s {consolidation = a} :: AutoMerging)++-- | A number between 0 and 1 that represents the minimum confidence score+-- required for profiles within a matching group to be merged during the+-- auto-merge process. A higher score means higher similarity required to+-- merge profiles.+autoMerging_minAllowedConfidenceScoreForMerging :: Lens.Lens' AutoMerging (Prelude.Maybe Prelude.Double)+autoMerging_minAllowedConfidenceScoreForMerging = Lens.lens (\AutoMerging' {minAllowedConfidenceScoreForMerging} -> minAllowedConfidenceScoreForMerging) (\s@AutoMerging' {} a -> s {minAllowedConfidenceScoreForMerging = a} :: AutoMerging)++-- | The flag that enables the auto-merging of duplicate profiles.+autoMerging_enabled :: Lens.Lens' AutoMerging Prelude.Bool+autoMerging_enabled = Lens.lens (\AutoMerging' {enabled} -> enabled) (\s@AutoMerging' {} a -> s {enabled = a} :: AutoMerging)++instance Data.FromJSON AutoMerging where+  parseJSON =+    Data.withObject+      "AutoMerging"+      ( \x ->+          AutoMerging'+            Prelude.<$> (x Data..:? "ConflictResolution")+            Prelude.<*> (x Data..:? "Consolidation")+            Prelude.<*> (x Data..:? "MinAllowedConfidenceScoreForMerging")+            Prelude.<*> (x Data..: "Enabled")+      )++instance Prelude.Hashable AutoMerging where+  hashWithSalt _salt AutoMerging' {..} =+    _salt+      `Prelude.hashWithSalt` conflictResolution+      `Prelude.hashWithSalt` consolidation+      `Prelude.hashWithSalt` minAllowedConfidenceScoreForMerging+      `Prelude.hashWithSalt` enabled++instance Prelude.NFData AutoMerging where+  rnf AutoMerging' {..} =+    Prelude.rnf conflictResolution+      `Prelude.seq` Prelude.rnf consolidation+      `Prelude.seq` Prelude.rnf minAllowedConfidenceScoreForMerging+      `Prelude.seq` Prelude.rnf enabled++instance Data.ToJSON AutoMerging where+  toJSON AutoMerging' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ConflictResolution" Data..=)+              Prelude.<$> conflictResolution,+            ("Consolidation" Data..=) Prelude.<$> consolidation,+            ("MinAllowedConfidenceScoreForMerging" Data..=)+              Prelude.<$> minAllowedConfidenceScoreForMerging,+            Prelude.Just ("Enabled" Data..= enabled)+          ]+      )
+ gen/Amazonka/CustomerProfiles/Types/Batch.hs view
@@ -0,0 +1,89 @@+{-# 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.CustomerProfiles.Types.Batch+-- Copyright   : (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.CustomerProfiles.Types.Batch 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++-- | Batch defines the boundaries for ingestion for each step in+-- @APPFLOW_INTEGRATION@ workflow. @APPFLOW_INTEGRATION@ workflow splits+-- ingestion based on these boundaries.+--+-- /See:/ 'newBatch' smart constructor.+data Batch = Batch'+  { -- | Start time of batch to split ingestion.+    startTime :: Data.POSIX,+    -- | End time of batch to split ingestion.+    endTime :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Batch' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'startTime', 'batch_startTime' - Start time of batch to split ingestion.+--+-- 'endTime', 'batch_endTime' - End time of batch to split ingestion.+newBatch ::+  -- | 'startTime'+  Prelude.UTCTime ->+  -- | 'endTime'+  Prelude.UTCTime ->+  Batch+newBatch pStartTime_ pEndTime_ =+  Batch'+    { startTime = Data._Time Lens.# pStartTime_,+      endTime = Data._Time Lens.# pEndTime_+    }++-- | Start time of batch to split ingestion.+batch_startTime :: Lens.Lens' Batch Prelude.UTCTime+batch_startTime = Lens.lens (\Batch' {startTime} -> startTime) (\s@Batch' {} a -> s {startTime = a} :: Batch) Prelude.. Data._Time++-- | End time of batch to split ingestion.+batch_endTime :: Lens.Lens' Batch Prelude.UTCTime+batch_endTime = Lens.lens (\Batch' {endTime} -> endTime) (\s@Batch' {} a -> s {endTime = a} :: Batch) Prelude.. Data._Time++instance Prelude.Hashable Batch where+  hashWithSalt _salt Batch' {..} =+    _salt+      `Prelude.hashWithSalt` startTime+      `Prelude.hashWithSalt` endTime++instance Prelude.NFData Batch where+  rnf Batch' {..} =+    Prelude.rnf startTime+      `Prelude.seq` Prelude.rnf endTime++instance Data.ToJSON Batch where+  toJSON Batch' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("StartTime" Data..= startTime),+            Prelude.Just ("EndTime" Data..= endTime)+          ]+      )
+ gen/Amazonka/CustomerProfiles/Types/ConflictResolution.hs view
@@ -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.CustomerProfiles.Types.ConflictResolution+-- Copyright   : (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.CustomerProfiles.Types.ConflictResolution where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types.ConflictResolvingModel+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | How the auto-merging process should resolve conflicts between different+-- profiles.+--+-- /See:/ 'newConflictResolution' smart constructor.+data ConflictResolution = ConflictResolution'+  { -- | The @ObjectType@ name that is used to resolve profile merging conflicts+    -- when choosing @SOURCE@ as the @ConflictResolvingModel@.+    sourceName :: Prelude.Maybe Prelude.Text,+    -- | How the auto-merging process should resolve conflicts between different+    -- profiles.+    --+    -- -   @RECENCY@: Uses the data that was most recently updated.+    --+    -- -   @SOURCE@: Uses the data from a specific source. For example, if a+    --     company has been aquired or two departments have merged, data from+    --     the specified source is used. If two duplicate profiles are from the+    --     same source, then @RECENCY@ is used again.+    conflictResolvingModel :: ConflictResolvingModel+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ConflictResolution' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'sourceName', 'conflictResolution_sourceName' - The @ObjectType@ name that is used to resolve profile merging conflicts+-- when choosing @SOURCE@ as the @ConflictResolvingModel@.+--+-- 'conflictResolvingModel', 'conflictResolution_conflictResolvingModel' - How the auto-merging process should resolve conflicts between different+-- profiles.+--+-- -   @RECENCY@: Uses the data that was most recently updated.+--+-- -   @SOURCE@: Uses the data from a specific source. For example, if a+--     company has been aquired or two departments have merged, data from+--     the specified source is used. If two duplicate profiles are from the+--     same source, then @RECENCY@ is used again.+newConflictResolution ::+  -- | 'conflictResolvingModel'+  ConflictResolvingModel ->+  ConflictResolution+newConflictResolution pConflictResolvingModel_ =+  ConflictResolution'+    { sourceName = Prelude.Nothing,+      conflictResolvingModel = pConflictResolvingModel_+    }++-- | The @ObjectType@ name that is used to resolve profile merging conflicts+-- when choosing @SOURCE@ as the @ConflictResolvingModel@.+conflictResolution_sourceName :: Lens.Lens' ConflictResolution (Prelude.Maybe Prelude.Text)+conflictResolution_sourceName = Lens.lens (\ConflictResolution' {sourceName} -> sourceName) (\s@ConflictResolution' {} a -> s {sourceName = a} :: ConflictResolution)++-- | How the auto-merging process should resolve conflicts between different+-- profiles.+--+-- -   @RECENCY@: Uses the data that was most recently updated.+--+-- -   @SOURCE@: Uses the data from a specific source. For example, if a+--     company has been aquired or two departments have merged, data from+--     the specified source is used. If two duplicate profiles are from the+--     same source, then @RECENCY@ is used again.+conflictResolution_conflictResolvingModel :: Lens.Lens' ConflictResolution ConflictResolvingModel+conflictResolution_conflictResolvingModel = Lens.lens (\ConflictResolution' {conflictResolvingModel} -> conflictResolvingModel) (\s@ConflictResolution' {} a -> s {conflictResolvingModel = a} :: ConflictResolution)++instance Data.FromJSON ConflictResolution where+  parseJSON =+    Data.withObject+      "ConflictResolution"+      ( \x ->+          ConflictResolution'+            Prelude.<$> (x Data..:? "SourceName")+            Prelude.<*> (x Data..: "ConflictResolvingModel")+      )++instance Prelude.Hashable ConflictResolution where+  hashWithSalt _salt ConflictResolution' {..} =+    _salt+      `Prelude.hashWithSalt` sourceName+      `Prelude.hashWithSalt` conflictResolvingModel++instance Prelude.NFData ConflictResolution where+  rnf ConflictResolution' {..} =+    Prelude.rnf sourceName+      `Prelude.seq` Prelude.rnf conflictResolvingModel++instance Data.ToJSON ConflictResolution where+  toJSON ConflictResolution' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("SourceName" Data..=) Prelude.<$> sourceName,+            Prelude.Just+              ( "ConflictResolvingModel"+                  Data..= conflictResolvingModel+              )+          ]+      )
+ gen/Amazonka/CustomerProfiles/Types/ConflictResolvingModel.hs view
@@ -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.CustomerProfiles.Types.ConflictResolvingModel+-- Copyright   : (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.CustomerProfiles.Types.ConflictResolvingModel+  ( ConflictResolvingModel+      ( ..,+        ConflictResolvingModel_RECENCY,+        ConflictResolvingModel_SOURCE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ConflictResolvingModel = ConflictResolvingModel'+  { fromConflictResolvingModel ::+      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 ConflictResolvingModel_RECENCY :: ConflictResolvingModel+pattern ConflictResolvingModel_RECENCY = ConflictResolvingModel' "RECENCY"++pattern ConflictResolvingModel_SOURCE :: ConflictResolvingModel+pattern ConflictResolvingModel_SOURCE = ConflictResolvingModel' "SOURCE"++{-# COMPLETE+  ConflictResolvingModel_RECENCY,+  ConflictResolvingModel_SOURCE,+  ConflictResolvingModel'+  #-}
+ gen/Amazonka/CustomerProfiles/Types/ConnectorOperator.hs view
@@ -0,0 +1,124 @@+{-# 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.CustomerProfiles.Types.ConnectorOperator+-- Copyright   : (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.CustomerProfiles.Types.ConnectorOperator where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types.MarketoConnectorOperator+import Amazonka.CustomerProfiles.Types.S3ConnectorOperator+import Amazonka.CustomerProfiles.Types.SalesforceConnectorOperator+import Amazonka.CustomerProfiles.Types.ServiceNowConnectorOperator+import Amazonka.CustomerProfiles.Types.ZendeskConnectorOperator+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The operation to be performed on the provided source fields.+--+-- /See:/ 'newConnectorOperator' smart constructor.+data ConnectorOperator = ConnectorOperator'+  { -- | The operation to be performed on the provided Marketo source fields.+    marketo :: Prelude.Maybe MarketoConnectorOperator,+    -- | The operation to be performed on the provided Amazon S3 source fields.+    s3 :: Prelude.Maybe S3ConnectorOperator,+    -- | The operation to be performed on the provided Salesforce source fields.+    salesforce :: Prelude.Maybe SalesforceConnectorOperator,+    -- | The operation to be performed on the provided ServiceNow source fields.+    serviceNow :: Prelude.Maybe ServiceNowConnectorOperator,+    -- | The operation to be performed on the provided Zendesk source fields.+    zendesk :: Prelude.Maybe ZendeskConnectorOperator+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ConnectorOperator' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'marketo', 'connectorOperator_marketo' - The operation to be performed on the provided Marketo source fields.+--+-- 's3', 'connectorOperator_s3' - The operation to be performed on the provided Amazon S3 source fields.+--+-- 'salesforce', 'connectorOperator_salesforce' - The operation to be performed on the provided Salesforce source fields.+--+-- 'serviceNow', 'connectorOperator_serviceNow' - The operation to be performed on the provided ServiceNow source fields.+--+-- 'zendesk', 'connectorOperator_zendesk' - The operation to be performed on the provided Zendesk source fields.+newConnectorOperator ::+  ConnectorOperator+newConnectorOperator =+  ConnectorOperator'+    { marketo = Prelude.Nothing,+      s3 = Prelude.Nothing,+      salesforce = Prelude.Nothing,+      serviceNow = Prelude.Nothing,+      zendesk = Prelude.Nothing+    }++-- | The operation to be performed on the provided Marketo source fields.+connectorOperator_marketo :: Lens.Lens' ConnectorOperator (Prelude.Maybe MarketoConnectorOperator)+connectorOperator_marketo = Lens.lens (\ConnectorOperator' {marketo} -> marketo) (\s@ConnectorOperator' {} a -> s {marketo = a} :: ConnectorOperator)++-- | The operation to be performed on the provided Amazon S3 source fields.+connectorOperator_s3 :: Lens.Lens' ConnectorOperator (Prelude.Maybe S3ConnectorOperator)+connectorOperator_s3 = Lens.lens (\ConnectorOperator' {s3} -> s3) (\s@ConnectorOperator' {} a -> s {s3 = a} :: ConnectorOperator)++-- | The operation to be performed on the provided Salesforce source fields.+connectorOperator_salesforce :: Lens.Lens' ConnectorOperator (Prelude.Maybe SalesforceConnectorOperator)+connectorOperator_salesforce = Lens.lens (\ConnectorOperator' {salesforce} -> salesforce) (\s@ConnectorOperator' {} a -> s {salesforce = a} :: ConnectorOperator)++-- | The operation to be performed on the provided ServiceNow source fields.+connectorOperator_serviceNow :: Lens.Lens' ConnectorOperator (Prelude.Maybe ServiceNowConnectorOperator)+connectorOperator_serviceNow = Lens.lens (\ConnectorOperator' {serviceNow} -> serviceNow) (\s@ConnectorOperator' {} a -> s {serviceNow = a} :: ConnectorOperator)++-- | The operation to be performed on the provided Zendesk source fields.+connectorOperator_zendesk :: Lens.Lens' ConnectorOperator (Prelude.Maybe ZendeskConnectorOperator)+connectorOperator_zendesk = Lens.lens (\ConnectorOperator' {zendesk} -> zendesk) (\s@ConnectorOperator' {} a -> s {zendesk = a} :: ConnectorOperator)++instance Prelude.Hashable ConnectorOperator where+  hashWithSalt _salt ConnectorOperator' {..} =+    _salt+      `Prelude.hashWithSalt` marketo+      `Prelude.hashWithSalt` s3+      `Prelude.hashWithSalt` salesforce+      `Prelude.hashWithSalt` serviceNow+      `Prelude.hashWithSalt` zendesk++instance Prelude.NFData ConnectorOperator where+  rnf ConnectorOperator' {..} =+    Prelude.rnf marketo+      `Prelude.seq` Prelude.rnf s3+      `Prelude.seq` Prelude.rnf salesforce+      `Prelude.seq` Prelude.rnf serviceNow+      `Prelude.seq` Prelude.rnf zendesk++instance Data.ToJSON ConnectorOperator where+  toJSON ConnectorOperator' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Marketo" Data..=) Prelude.<$> marketo,+            ("S3" Data..=) Prelude.<$> s3,+            ("Salesforce" Data..=) Prelude.<$> salesforce,+            ("ServiceNow" Data..=) Prelude.<$> serviceNow,+            ("Zendesk" Data..=) Prelude.<$> zendesk+          ]+      )
+ gen/Amazonka/CustomerProfiles/Types/Consolidation.hs view
@@ -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.CustomerProfiles.Types.Consolidation+-- Copyright   : (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.CustomerProfiles.Types.Consolidation 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 matching criteria to be used during the auto-merging process.+--+-- /See:/ 'newConsolidation' smart constructor.+data Consolidation = Consolidation'+  { -- | A list of matching criteria.+    matchingAttributesList :: Prelude.NonEmpty (Prelude.NonEmpty Prelude.Text)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Consolidation' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'matchingAttributesList', 'consolidation_matchingAttributesList' - A list of matching criteria.+newConsolidation ::+  -- | 'matchingAttributesList'+  Prelude.NonEmpty (Prelude.NonEmpty Prelude.Text) ->+  Consolidation+newConsolidation pMatchingAttributesList_ =+  Consolidation'+    { matchingAttributesList =+        Lens.coerced Lens.# pMatchingAttributesList_+    }++-- | A list of matching criteria.+consolidation_matchingAttributesList :: Lens.Lens' Consolidation (Prelude.NonEmpty (Prelude.NonEmpty Prelude.Text))+consolidation_matchingAttributesList = Lens.lens (\Consolidation' {matchingAttributesList} -> matchingAttributesList) (\s@Consolidation' {} a -> s {matchingAttributesList = a} :: Consolidation) Prelude.. Lens.coerced++instance Data.FromJSON Consolidation where+  parseJSON =+    Data.withObject+      "Consolidation"+      ( \x ->+          Consolidation'+            Prelude.<$> (x Data..: "MatchingAttributesList")+      )++instance Prelude.Hashable Consolidation where+  hashWithSalt _salt Consolidation' {..} =+    _salt `Prelude.hashWithSalt` matchingAttributesList++instance Prelude.NFData Consolidation where+  rnf Consolidation' {..} =+    Prelude.rnf matchingAttributesList++instance Data.ToJSON Consolidation where+  toJSON Consolidation' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ( "MatchingAttributesList"+                  Data..= matchingAttributesList+              )+          ]+      )
+ gen/Amazonka/CustomerProfiles/Types/DataPullMode.hs view
@@ -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.CustomerProfiles.Types.DataPullMode+-- Copyright   : (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.CustomerProfiles.Types.DataPullMode+  ( DataPullMode+      ( ..,+        DataPullMode_Complete,+        DataPullMode_Incremental+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype DataPullMode = DataPullMode'+  { fromDataPullMode ::+      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 DataPullMode_Complete :: DataPullMode+pattern DataPullMode_Complete = DataPullMode' "Complete"++pattern DataPullMode_Incremental :: DataPullMode+pattern DataPullMode_Incremental = DataPullMode' "Incremental"++{-# COMPLETE+  DataPullMode_Complete,+  DataPullMode_Incremental,+  DataPullMode'+  #-}
+ gen/Amazonka/CustomerProfiles/Types/DomainStats.hs view
@@ -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.CustomerProfiles.Types.DomainStats+-- Copyright   : (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.CustomerProfiles.Types.DomainStats 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++-- | Usage-specific statistics about the domain.+--+-- /See:/ 'newDomainStats' smart constructor.+data DomainStats = DomainStats'+  { -- | The number of profiles that you are currently paying for in the domain.+    -- If you have more than 100 objects associated with a single profile, that+    -- profile counts as two profiles. If you have more than 200 objects, that+    -- profile counts as three, and so on.+    meteringProfileCount :: Prelude.Maybe Prelude.Integer,+    -- | The total number of objects in domain.+    objectCount :: Prelude.Maybe Prelude.Integer,+    -- | The total number of profiles currently in the domain.+    profileCount :: Prelude.Maybe Prelude.Integer,+    -- | The total size, in bytes, of all objects in the domain.+    totalSize :: Prelude.Maybe Prelude.Integer+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DomainStats' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'meteringProfileCount', 'domainStats_meteringProfileCount' - The number of profiles that you are currently paying for in the domain.+-- If you have more than 100 objects associated with a single profile, that+-- profile counts as two profiles. If you have more than 200 objects, that+-- profile counts as three, and so on.+--+-- 'objectCount', 'domainStats_objectCount' - The total number of objects in domain.+--+-- 'profileCount', 'domainStats_profileCount' - The total number of profiles currently in the domain.+--+-- 'totalSize', 'domainStats_totalSize' - The total size, in bytes, of all objects in the domain.+newDomainStats ::+  DomainStats+newDomainStats =+  DomainStats'+    { meteringProfileCount =+        Prelude.Nothing,+      objectCount = Prelude.Nothing,+      profileCount = Prelude.Nothing,+      totalSize = Prelude.Nothing+    }++-- | The number of profiles that you are currently paying for in the domain.+-- If you have more than 100 objects associated with a single profile, that+-- profile counts as two profiles. If you have more than 200 objects, that+-- profile counts as three, and so on.+domainStats_meteringProfileCount :: Lens.Lens' DomainStats (Prelude.Maybe Prelude.Integer)+domainStats_meteringProfileCount = Lens.lens (\DomainStats' {meteringProfileCount} -> meteringProfileCount) (\s@DomainStats' {} a -> s {meteringProfileCount = a} :: DomainStats)++-- | The total number of objects in domain.+domainStats_objectCount :: Lens.Lens' DomainStats (Prelude.Maybe Prelude.Integer)+domainStats_objectCount = Lens.lens (\DomainStats' {objectCount} -> objectCount) (\s@DomainStats' {} a -> s {objectCount = a} :: DomainStats)++-- | The total number of profiles currently in the domain.+domainStats_profileCount :: Lens.Lens' DomainStats (Prelude.Maybe Prelude.Integer)+domainStats_profileCount = Lens.lens (\DomainStats' {profileCount} -> profileCount) (\s@DomainStats' {} a -> s {profileCount = a} :: DomainStats)++-- | The total size, in bytes, of all objects in the domain.+domainStats_totalSize :: Lens.Lens' DomainStats (Prelude.Maybe Prelude.Integer)+domainStats_totalSize = Lens.lens (\DomainStats' {totalSize} -> totalSize) (\s@DomainStats' {} a -> s {totalSize = a} :: DomainStats)++instance Data.FromJSON DomainStats where+  parseJSON =+    Data.withObject+      "DomainStats"+      ( \x ->+          DomainStats'+            Prelude.<$> (x Data..:? "MeteringProfileCount")+            Prelude.<*> (x Data..:? "ObjectCount")+            Prelude.<*> (x Data..:? "ProfileCount")+            Prelude.<*> (x Data..:? "TotalSize")+      )++instance Prelude.Hashable DomainStats where+  hashWithSalt _salt DomainStats' {..} =+    _salt+      `Prelude.hashWithSalt` meteringProfileCount+      `Prelude.hashWithSalt` objectCount+      `Prelude.hashWithSalt` profileCount+      `Prelude.hashWithSalt` totalSize++instance Prelude.NFData DomainStats where+  rnf DomainStats' {..} =+    Prelude.rnf meteringProfileCount+      `Prelude.seq` Prelude.rnf objectCount+      `Prelude.seq` Prelude.rnf profileCount+      `Prelude.seq` Prelude.rnf totalSize
+ gen/Amazonka/CustomerProfiles/Types/ExportingConfig.hs view
@@ -0,0 +1,82 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.Types.ExportingConfig+-- Copyright   : (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.CustomerProfiles.Types.ExportingConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types.S3ExportingConfig+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Configuration information about the S3 bucket where Identity Resolution+-- Jobs writes result files.+--+-- You need to give Customer Profiles service principal write permission to+-- your S3 bucket. Otherwise, you\'ll get an exception in the API response.+-- For an example policy, see+-- <https://docs.aws.amazon.com/connect/latest/adminguide/cross-service-confused-deputy-prevention.html#customer-profiles-cross-service Amazon Connect Customer Profiles cross-service confused deputy prevention>.+--+-- /See:/ 'newExportingConfig' smart constructor.+data ExportingConfig = ExportingConfig'+  { -- | The S3 location where Identity Resolution Jobs write result files.+    s3Exporting :: Prelude.Maybe S3ExportingConfig+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExportingConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 's3Exporting', 'exportingConfig_s3Exporting' - The S3 location where Identity Resolution Jobs write result files.+newExportingConfig ::+  ExportingConfig+newExportingConfig =+  ExportingConfig' {s3Exporting = Prelude.Nothing}++-- | The S3 location where Identity Resolution Jobs write result files.+exportingConfig_s3Exporting :: Lens.Lens' ExportingConfig (Prelude.Maybe S3ExportingConfig)+exportingConfig_s3Exporting = Lens.lens (\ExportingConfig' {s3Exporting} -> s3Exporting) (\s@ExportingConfig' {} a -> s {s3Exporting = a} :: ExportingConfig)++instance Data.FromJSON ExportingConfig where+  parseJSON =+    Data.withObject+      "ExportingConfig"+      ( \x ->+          ExportingConfig'+            Prelude.<$> (x Data..:? "S3Exporting")+      )++instance Prelude.Hashable ExportingConfig where+  hashWithSalt _salt ExportingConfig' {..} =+    _salt `Prelude.hashWithSalt` s3Exporting++instance Prelude.NFData ExportingConfig where+  rnf ExportingConfig' {..} = Prelude.rnf s3Exporting++instance Data.ToJSON ExportingConfig where+  toJSON ExportingConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [("S3Exporting" Data..=) Prelude.<$> s3Exporting]+      )
+ gen/Amazonka/CustomerProfiles/Types/ExportingLocation.hs view
@@ -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.CustomerProfiles.Types.ExportingLocation+-- Copyright   : (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.CustomerProfiles.Types.ExportingLocation where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types.S3ExportingLocation+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The S3 location where Identity Resolution Jobs write result files.+--+-- /See:/ 'newExportingLocation' smart constructor.+data ExportingLocation = ExportingLocation'+  { -- | Information about the S3 location where Identity Resolution Jobs write+    -- result files.+    s3Exporting :: Prelude.Maybe S3ExportingLocation+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExportingLocation' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 's3Exporting', 'exportingLocation_s3Exporting' - Information about the S3 location where Identity Resolution Jobs write+-- result files.+newExportingLocation ::+  ExportingLocation+newExportingLocation =+  ExportingLocation' {s3Exporting = Prelude.Nothing}++-- | Information about the S3 location where Identity Resolution Jobs write+-- result files.+exportingLocation_s3Exporting :: Lens.Lens' ExportingLocation (Prelude.Maybe S3ExportingLocation)+exportingLocation_s3Exporting = Lens.lens (\ExportingLocation' {s3Exporting} -> s3Exporting) (\s@ExportingLocation' {} a -> s {s3Exporting = a} :: ExportingLocation)++instance Data.FromJSON ExportingLocation where+  parseJSON =+    Data.withObject+      "ExportingLocation"+      ( \x ->+          ExportingLocation'+            Prelude.<$> (x Data..:? "S3Exporting")+      )++instance Prelude.Hashable ExportingLocation where+  hashWithSalt _salt ExportingLocation' {..} =+    _salt `Prelude.hashWithSalt` s3Exporting++instance Prelude.NFData ExportingLocation where+  rnf ExportingLocation' {..} = Prelude.rnf s3Exporting
+ gen/Amazonka/CustomerProfiles/Types/FieldContentType.hs view
@@ -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.CustomerProfiles.Types.FieldContentType+-- Copyright   : (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.CustomerProfiles.Types.FieldContentType+  ( FieldContentType+      ( ..,+        FieldContentType_EMAIL_ADDRESS,+        FieldContentType_NAME,+        FieldContentType_NUMBER,+        FieldContentType_PHONE_NUMBER,+        FieldContentType_STRING+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype FieldContentType = FieldContentType'+  { fromFieldContentType ::+      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 FieldContentType_EMAIL_ADDRESS :: FieldContentType+pattern FieldContentType_EMAIL_ADDRESS = FieldContentType' "EMAIL_ADDRESS"++pattern FieldContentType_NAME :: FieldContentType+pattern FieldContentType_NAME = FieldContentType' "NAME"++pattern FieldContentType_NUMBER :: FieldContentType+pattern FieldContentType_NUMBER = FieldContentType' "NUMBER"++pattern FieldContentType_PHONE_NUMBER :: FieldContentType+pattern FieldContentType_PHONE_NUMBER = FieldContentType' "PHONE_NUMBER"++pattern FieldContentType_STRING :: FieldContentType+pattern FieldContentType_STRING = FieldContentType' "STRING"++{-# COMPLETE+  FieldContentType_EMAIL_ADDRESS,+  FieldContentType_NAME,+  FieldContentType_NUMBER,+  FieldContentType_PHONE_NUMBER,+  FieldContentType_STRING,+  FieldContentType'+  #-}
+ gen/Amazonka/CustomerProfiles/Types/FieldSourceProfileIds.hs view
@@ -0,0 +1,321 @@+{-# 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.CustomerProfiles.Types.FieldSourceProfileIds+-- Copyright   : (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.CustomerProfiles.Types.FieldSourceProfileIds where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A duplicate customer profile that is to be merged into a main profile.+--+-- /See:/ 'newFieldSourceProfileIds' smart constructor.+data FieldSourceProfileIds = FieldSourceProfileIds'+  { -- | A unique identifier for the account number field to be merged.+    accountNumber :: Prelude.Maybe Prelude.Text,+    -- | A unique identifier for the additional information field to be merged.+    additionalInformation :: Prelude.Maybe Prelude.Text,+    -- | A unique identifier for the party type field to be merged.+    address :: Prelude.Maybe Prelude.Text,+    -- | A unique identifier for the attributes field to be merged.+    attributes :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | A unique identifier for the billing type field to be merged.+    billingAddress :: Prelude.Maybe Prelude.Text,+    -- | A unique identifier for the birthdate field to be merged.+    birthDate :: Prelude.Maybe Prelude.Text,+    -- | A unique identifier for the party type field to be merged.+    businessEmailAddress :: Prelude.Maybe Prelude.Text,+    -- | A unique identifier for the business name field to be merged.+    businessName :: Prelude.Maybe Prelude.Text,+    -- | A unique identifier for the business phone number field to be merged.+    businessPhoneNumber :: Prelude.Maybe Prelude.Text,+    -- | A unique identifier for the email address field to be merged.+    emailAddress :: Prelude.Maybe Prelude.Text,+    -- | A unique identifier for the first name field to be merged.+    firstName :: Prelude.Maybe Prelude.Text,+    -- | A unique identifier for the gender field to be merged.+    gender :: Prelude.Maybe Prelude.Text,+    -- | A unique identifier for the home phone number field to be merged.+    homePhoneNumber :: Prelude.Maybe Prelude.Text,+    -- | A unique identifier for the last name field to be merged.+    lastName :: Prelude.Maybe Prelude.Text,+    -- | A unique identifier for the mailing address field to be merged.+    mailingAddress :: Prelude.Maybe Prelude.Text,+    -- | A unique identifier for the middle name field to be merged.+    middleName :: Prelude.Maybe Prelude.Text,+    -- | A unique identifier for the mobile phone number field to be merged.+    mobilePhoneNumber :: Prelude.Maybe Prelude.Text,+    -- | A unique identifier for the party type field to be merged.+    partyType :: Prelude.Maybe Prelude.Text,+    -- | A unique identifier for the personal email address field to be merged.+    personalEmailAddress :: Prelude.Maybe Prelude.Text,+    -- | A unique identifier for the phone number field to be merged.+    phoneNumber :: Prelude.Maybe Prelude.Text,+    -- | A unique identifier for the shipping address field to be merged.+    shippingAddress :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'FieldSourceProfileIds' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accountNumber', 'fieldSourceProfileIds_accountNumber' - A unique identifier for the account number field to be merged.+--+-- 'additionalInformation', 'fieldSourceProfileIds_additionalInformation' - A unique identifier for the additional information field to be merged.+--+-- 'address', 'fieldSourceProfileIds_address' - A unique identifier for the party type field to be merged.+--+-- 'attributes', 'fieldSourceProfileIds_attributes' - A unique identifier for the attributes field to be merged.+--+-- 'billingAddress', 'fieldSourceProfileIds_billingAddress' - A unique identifier for the billing type field to be merged.+--+-- 'birthDate', 'fieldSourceProfileIds_birthDate' - A unique identifier for the birthdate field to be merged.+--+-- 'businessEmailAddress', 'fieldSourceProfileIds_businessEmailAddress' - A unique identifier for the party type field to be merged.+--+-- 'businessName', 'fieldSourceProfileIds_businessName' - A unique identifier for the business name field to be merged.+--+-- 'businessPhoneNumber', 'fieldSourceProfileIds_businessPhoneNumber' - A unique identifier for the business phone number field to be merged.+--+-- 'emailAddress', 'fieldSourceProfileIds_emailAddress' - A unique identifier for the email address field to be merged.+--+-- 'firstName', 'fieldSourceProfileIds_firstName' - A unique identifier for the first name field to be merged.+--+-- 'gender', 'fieldSourceProfileIds_gender' - A unique identifier for the gender field to be merged.+--+-- 'homePhoneNumber', 'fieldSourceProfileIds_homePhoneNumber' - A unique identifier for the home phone number field to be merged.+--+-- 'lastName', 'fieldSourceProfileIds_lastName' - A unique identifier for the last name field to be merged.+--+-- 'mailingAddress', 'fieldSourceProfileIds_mailingAddress' - A unique identifier for the mailing address field to be merged.+--+-- 'middleName', 'fieldSourceProfileIds_middleName' - A unique identifier for the middle name field to be merged.+--+-- 'mobilePhoneNumber', 'fieldSourceProfileIds_mobilePhoneNumber' - A unique identifier for the mobile phone number field to be merged.+--+-- 'partyType', 'fieldSourceProfileIds_partyType' - A unique identifier for the party type field to be merged.+--+-- 'personalEmailAddress', 'fieldSourceProfileIds_personalEmailAddress' - A unique identifier for the personal email address field to be merged.+--+-- 'phoneNumber', 'fieldSourceProfileIds_phoneNumber' - A unique identifier for the phone number field to be merged.+--+-- 'shippingAddress', 'fieldSourceProfileIds_shippingAddress' - A unique identifier for the shipping address field to be merged.+newFieldSourceProfileIds ::+  FieldSourceProfileIds+newFieldSourceProfileIds =+  FieldSourceProfileIds'+    { accountNumber =+        Prelude.Nothing,+      additionalInformation = Prelude.Nothing,+      address = Prelude.Nothing,+      attributes = Prelude.Nothing,+      billingAddress = Prelude.Nothing,+      birthDate = Prelude.Nothing,+      businessEmailAddress = Prelude.Nothing,+      businessName = Prelude.Nothing,+      businessPhoneNumber = Prelude.Nothing,+      emailAddress = Prelude.Nothing,+      firstName = Prelude.Nothing,+      gender = Prelude.Nothing,+      homePhoneNumber = Prelude.Nothing,+      lastName = Prelude.Nothing,+      mailingAddress = Prelude.Nothing,+      middleName = Prelude.Nothing,+      mobilePhoneNumber = Prelude.Nothing,+      partyType = Prelude.Nothing,+      personalEmailAddress = Prelude.Nothing,+      phoneNumber = Prelude.Nothing,+      shippingAddress = Prelude.Nothing+    }++-- | A unique identifier for the account number field to be merged.+fieldSourceProfileIds_accountNumber :: Lens.Lens' FieldSourceProfileIds (Prelude.Maybe Prelude.Text)+fieldSourceProfileIds_accountNumber = Lens.lens (\FieldSourceProfileIds' {accountNumber} -> accountNumber) (\s@FieldSourceProfileIds' {} a -> s {accountNumber = a} :: FieldSourceProfileIds)++-- | A unique identifier for the additional information field to be merged.+fieldSourceProfileIds_additionalInformation :: Lens.Lens' FieldSourceProfileIds (Prelude.Maybe Prelude.Text)+fieldSourceProfileIds_additionalInformation = Lens.lens (\FieldSourceProfileIds' {additionalInformation} -> additionalInformation) (\s@FieldSourceProfileIds' {} a -> s {additionalInformation = a} :: FieldSourceProfileIds)++-- | A unique identifier for the party type field to be merged.+fieldSourceProfileIds_address :: Lens.Lens' FieldSourceProfileIds (Prelude.Maybe Prelude.Text)+fieldSourceProfileIds_address = Lens.lens (\FieldSourceProfileIds' {address} -> address) (\s@FieldSourceProfileIds' {} a -> s {address = a} :: FieldSourceProfileIds)++-- | A unique identifier for the attributes field to be merged.+fieldSourceProfileIds_attributes :: Lens.Lens' FieldSourceProfileIds (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+fieldSourceProfileIds_attributes = Lens.lens (\FieldSourceProfileIds' {attributes} -> attributes) (\s@FieldSourceProfileIds' {} a -> s {attributes = a} :: FieldSourceProfileIds) Prelude.. Lens.mapping Lens.coerced++-- | A unique identifier for the billing type field to be merged.+fieldSourceProfileIds_billingAddress :: Lens.Lens' FieldSourceProfileIds (Prelude.Maybe Prelude.Text)+fieldSourceProfileIds_billingAddress = Lens.lens (\FieldSourceProfileIds' {billingAddress} -> billingAddress) (\s@FieldSourceProfileIds' {} a -> s {billingAddress = a} :: FieldSourceProfileIds)++-- | A unique identifier for the birthdate field to be merged.+fieldSourceProfileIds_birthDate :: Lens.Lens' FieldSourceProfileIds (Prelude.Maybe Prelude.Text)+fieldSourceProfileIds_birthDate = Lens.lens (\FieldSourceProfileIds' {birthDate} -> birthDate) (\s@FieldSourceProfileIds' {} a -> s {birthDate = a} :: FieldSourceProfileIds)++-- | A unique identifier for the party type field to be merged.+fieldSourceProfileIds_businessEmailAddress :: Lens.Lens' FieldSourceProfileIds (Prelude.Maybe Prelude.Text)+fieldSourceProfileIds_businessEmailAddress = Lens.lens (\FieldSourceProfileIds' {businessEmailAddress} -> businessEmailAddress) (\s@FieldSourceProfileIds' {} a -> s {businessEmailAddress = a} :: FieldSourceProfileIds)++-- | A unique identifier for the business name field to be merged.+fieldSourceProfileIds_businessName :: Lens.Lens' FieldSourceProfileIds (Prelude.Maybe Prelude.Text)+fieldSourceProfileIds_businessName = Lens.lens (\FieldSourceProfileIds' {businessName} -> businessName) (\s@FieldSourceProfileIds' {} a -> s {businessName = a} :: FieldSourceProfileIds)++-- | A unique identifier for the business phone number field to be merged.+fieldSourceProfileIds_businessPhoneNumber :: Lens.Lens' FieldSourceProfileIds (Prelude.Maybe Prelude.Text)+fieldSourceProfileIds_businessPhoneNumber = Lens.lens (\FieldSourceProfileIds' {businessPhoneNumber} -> businessPhoneNumber) (\s@FieldSourceProfileIds' {} a -> s {businessPhoneNumber = a} :: FieldSourceProfileIds)++-- | A unique identifier for the email address field to be merged.+fieldSourceProfileIds_emailAddress :: Lens.Lens' FieldSourceProfileIds (Prelude.Maybe Prelude.Text)+fieldSourceProfileIds_emailAddress = Lens.lens (\FieldSourceProfileIds' {emailAddress} -> emailAddress) (\s@FieldSourceProfileIds' {} a -> s {emailAddress = a} :: FieldSourceProfileIds)++-- | A unique identifier for the first name field to be merged.+fieldSourceProfileIds_firstName :: Lens.Lens' FieldSourceProfileIds (Prelude.Maybe Prelude.Text)+fieldSourceProfileIds_firstName = Lens.lens (\FieldSourceProfileIds' {firstName} -> firstName) (\s@FieldSourceProfileIds' {} a -> s {firstName = a} :: FieldSourceProfileIds)++-- | A unique identifier for the gender field to be merged.+fieldSourceProfileIds_gender :: Lens.Lens' FieldSourceProfileIds (Prelude.Maybe Prelude.Text)+fieldSourceProfileIds_gender = Lens.lens (\FieldSourceProfileIds' {gender} -> gender) (\s@FieldSourceProfileIds' {} a -> s {gender = a} :: FieldSourceProfileIds)++-- | A unique identifier for the home phone number field to be merged.+fieldSourceProfileIds_homePhoneNumber :: Lens.Lens' FieldSourceProfileIds (Prelude.Maybe Prelude.Text)+fieldSourceProfileIds_homePhoneNumber = Lens.lens (\FieldSourceProfileIds' {homePhoneNumber} -> homePhoneNumber) (\s@FieldSourceProfileIds' {} a -> s {homePhoneNumber = a} :: FieldSourceProfileIds)++-- | A unique identifier for the last name field to be merged.+fieldSourceProfileIds_lastName :: Lens.Lens' FieldSourceProfileIds (Prelude.Maybe Prelude.Text)+fieldSourceProfileIds_lastName = Lens.lens (\FieldSourceProfileIds' {lastName} -> lastName) (\s@FieldSourceProfileIds' {} a -> s {lastName = a} :: FieldSourceProfileIds)++-- | A unique identifier for the mailing address field to be merged.+fieldSourceProfileIds_mailingAddress :: Lens.Lens' FieldSourceProfileIds (Prelude.Maybe Prelude.Text)+fieldSourceProfileIds_mailingAddress = Lens.lens (\FieldSourceProfileIds' {mailingAddress} -> mailingAddress) (\s@FieldSourceProfileIds' {} a -> s {mailingAddress = a} :: FieldSourceProfileIds)++-- | A unique identifier for the middle name field to be merged.+fieldSourceProfileIds_middleName :: Lens.Lens' FieldSourceProfileIds (Prelude.Maybe Prelude.Text)+fieldSourceProfileIds_middleName = Lens.lens (\FieldSourceProfileIds' {middleName} -> middleName) (\s@FieldSourceProfileIds' {} a -> s {middleName = a} :: FieldSourceProfileIds)++-- | A unique identifier for the mobile phone number field to be merged.+fieldSourceProfileIds_mobilePhoneNumber :: Lens.Lens' FieldSourceProfileIds (Prelude.Maybe Prelude.Text)+fieldSourceProfileIds_mobilePhoneNumber = Lens.lens (\FieldSourceProfileIds' {mobilePhoneNumber} -> mobilePhoneNumber) (\s@FieldSourceProfileIds' {} a -> s {mobilePhoneNumber = a} :: FieldSourceProfileIds)++-- | A unique identifier for the party type field to be merged.+fieldSourceProfileIds_partyType :: Lens.Lens' FieldSourceProfileIds (Prelude.Maybe Prelude.Text)+fieldSourceProfileIds_partyType = Lens.lens (\FieldSourceProfileIds' {partyType} -> partyType) (\s@FieldSourceProfileIds' {} a -> s {partyType = a} :: FieldSourceProfileIds)++-- | A unique identifier for the personal email address field to be merged.+fieldSourceProfileIds_personalEmailAddress :: Lens.Lens' FieldSourceProfileIds (Prelude.Maybe Prelude.Text)+fieldSourceProfileIds_personalEmailAddress = Lens.lens (\FieldSourceProfileIds' {personalEmailAddress} -> personalEmailAddress) (\s@FieldSourceProfileIds' {} a -> s {personalEmailAddress = a} :: FieldSourceProfileIds)++-- | A unique identifier for the phone number field to be merged.+fieldSourceProfileIds_phoneNumber :: Lens.Lens' FieldSourceProfileIds (Prelude.Maybe Prelude.Text)+fieldSourceProfileIds_phoneNumber = Lens.lens (\FieldSourceProfileIds' {phoneNumber} -> phoneNumber) (\s@FieldSourceProfileIds' {} a -> s {phoneNumber = a} :: FieldSourceProfileIds)++-- | A unique identifier for the shipping address field to be merged.+fieldSourceProfileIds_shippingAddress :: Lens.Lens' FieldSourceProfileIds (Prelude.Maybe Prelude.Text)+fieldSourceProfileIds_shippingAddress = Lens.lens (\FieldSourceProfileIds' {shippingAddress} -> shippingAddress) (\s@FieldSourceProfileIds' {} a -> s {shippingAddress = a} :: FieldSourceProfileIds)++instance Prelude.Hashable FieldSourceProfileIds where+  hashWithSalt _salt FieldSourceProfileIds' {..} =+    _salt+      `Prelude.hashWithSalt` accountNumber+      `Prelude.hashWithSalt` additionalInformation+      `Prelude.hashWithSalt` address+      `Prelude.hashWithSalt` attributes+      `Prelude.hashWithSalt` billingAddress+      `Prelude.hashWithSalt` birthDate+      `Prelude.hashWithSalt` businessEmailAddress+      `Prelude.hashWithSalt` businessName+      `Prelude.hashWithSalt` businessPhoneNumber+      `Prelude.hashWithSalt` emailAddress+      `Prelude.hashWithSalt` firstName+      `Prelude.hashWithSalt` gender+      `Prelude.hashWithSalt` homePhoneNumber+      `Prelude.hashWithSalt` lastName+      `Prelude.hashWithSalt` mailingAddress+      `Prelude.hashWithSalt` middleName+      `Prelude.hashWithSalt` mobilePhoneNumber+      `Prelude.hashWithSalt` partyType+      `Prelude.hashWithSalt` personalEmailAddress+      `Prelude.hashWithSalt` phoneNumber+      `Prelude.hashWithSalt` shippingAddress++instance Prelude.NFData FieldSourceProfileIds where+  rnf FieldSourceProfileIds' {..} =+    Prelude.rnf accountNumber+      `Prelude.seq` Prelude.rnf additionalInformation+      `Prelude.seq` Prelude.rnf address+      `Prelude.seq` Prelude.rnf attributes+      `Prelude.seq` Prelude.rnf billingAddress+      `Prelude.seq` Prelude.rnf birthDate+      `Prelude.seq` Prelude.rnf businessEmailAddress+      `Prelude.seq` Prelude.rnf businessName+      `Prelude.seq` Prelude.rnf businessPhoneNumber+      `Prelude.seq` Prelude.rnf emailAddress+      `Prelude.seq` Prelude.rnf firstName+      `Prelude.seq` Prelude.rnf gender+      `Prelude.seq` Prelude.rnf homePhoneNumber+      `Prelude.seq` Prelude.rnf lastName+      `Prelude.seq` Prelude.rnf mailingAddress+      `Prelude.seq` Prelude.rnf middleName+      `Prelude.seq` Prelude.rnf mobilePhoneNumber+      `Prelude.seq` Prelude.rnf partyType+      `Prelude.seq` Prelude.rnf personalEmailAddress+      `Prelude.seq` Prelude.rnf phoneNumber+      `Prelude.seq` Prelude.rnf shippingAddress++instance Data.ToJSON FieldSourceProfileIds where+  toJSON FieldSourceProfileIds' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("AccountNumber" Data..=) Prelude.<$> accountNumber,+            ("AdditionalInformation" Data..=)+              Prelude.<$> additionalInformation,+            ("Address" Data..=) Prelude.<$> address,+            ("Attributes" Data..=) Prelude.<$> attributes,+            ("BillingAddress" Data..=)+              Prelude.<$> billingAddress,+            ("BirthDate" Data..=) Prelude.<$> birthDate,+            ("BusinessEmailAddress" Data..=)+              Prelude.<$> businessEmailAddress,+            ("BusinessName" Data..=) Prelude.<$> businessName,+            ("BusinessPhoneNumber" Data..=)+              Prelude.<$> businessPhoneNumber,+            ("EmailAddress" Data..=) Prelude.<$> emailAddress,+            ("FirstName" Data..=) Prelude.<$> firstName,+            ("Gender" Data..=) Prelude.<$> gender,+            ("HomePhoneNumber" Data..=)+              Prelude.<$> homePhoneNumber,+            ("LastName" Data..=) Prelude.<$> lastName,+            ("MailingAddress" Data..=)+              Prelude.<$> mailingAddress,+            ("MiddleName" Data..=) Prelude.<$> middleName,+            ("MobilePhoneNumber" Data..=)+              Prelude.<$> mobilePhoneNumber,+            ("PartyType" Data..=) Prelude.<$> partyType,+            ("PersonalEmailAddress" Data..=)+              Prelude.<$> personalEmailAddress,+            ("PhoneNumber" Data..=) Prelude.<$> phoneNumber,+            ("ShippingAddress" Data..=)+              Prelude.<$> shippingAddress+          ]+      )
+ gen/Amazonka/CustomerProfiles/Types/FlowDefinition.hs view
@@ -0,0 +1,162 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.Types.FlowDefinition+-- Copyright   : (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.CustomerProfiles.Types.FlowDefinition where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types.SourceFlowConfig+import Amazonka.CustomerProfiles.Types.Task+import Amazonka.CustomerProfiles.Types.TriggerConfig+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The configurations that control how Customer Profiles retrieves data+-- from the source, Amazon AppFlow. Customer Profiles uses this information+-- to create an AppFlow flow on behalf of customers.+--+-- /See:/ 'newFlowDefinition' smart constructor.+data FlowDefinition = FlowDefinition'+  { -- | A description of the flow you want to create.+    description :: Prelude.Maybe Prelude.Text,+    -- | The specified name of the flow. Use underscores (_) or hyphens (-) only.+    -- Spaces are not allowed.+    flowName :: Prelude.Text,+    -- | The Amazon Resource Name of the AWS Key Management Service (KMS) key you+    -- provide for encryption.+    kmsArn :: Prelude.Text,+    -- | The configuration that controls how Customer Profiles retrieves data+    -- from the source.+    sourceFlowConfig :: SourceFlowConfig,+    -- | A list of tasks that Customer Profiles performs while transferring the+    -- data in the flow run.+    tasks :: [Task],+    -- | The trigger settings that determine how and when the flow runs.+    triggerConfig :: TriggerConfig+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'FlowDefinition' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'description', 'flowDefinition_description' - A description of the flow you want to create.+--+-- 'flowName', 'flowDefinition_flowName' - The specified name of the flow. Use underscores (_) or hyphens (-) only.+-- Spaces are not allowed.+--+-- 'kmsArn', 'flowDefinition_kmsArn' - The Amazon Resource Name of the AWS Key Management Service (KMS) key you+-- provide for encryption.+--+-- 'sourceFlowConfig', 'flowDefinition_sourceFlowConfig' - The configuration that controls how Customer Profiles retrieves data+-- from the source.+--+-- 'tasks', 'flowDefinition_tasks' - A list of tasks that Customer Profiles performs while transferring the+-- data in the flow run.+--+-- 'triggerConfig', 'flowDefinition_triggerConfig' - The trigger settings that determine how and when the flow runs.+newFlowDefinition ::+  -- | 'flowName'+  Prelude.Text ->+  -- | 'kmsArn'+  Prelude.Text ->+  -- | 'sourceFlowConfig'+  SourceFlowConfig ->+  -- | 'triggerConfig'+  TriggerConfig ->+  FlowDefinition+newFlowDefinition+  pFlowName_+  pKmsArn_+  pSourceFlowConfig_+  pTriggerConfig_ =+    FlowDefinition'+      { description = Prelude.Nothing,+        flowName = pFlowName_,+        kmsArn = pKmsArn_,+        sourceFlowConfig = pSourceFlowConfig_,+        tasks = Prelude.mempty,+        triggerConfig = pTriggerConfig_+      }++-- | A description of the flow you want to create.+flowDefinition_description :: Lens.Lens' FlowDefinition (Prelude.Maybe Prelude.Text)+flowDefinition_description = Lens.lens (\FlowDefinition' {description} -> description) (\s@FlowDefinition' {} a -> s {description = a} :: FlowDefinition)++-- | The specified name of the flow. Use underscores (_) or hyphens (-) only.+-- Spaces are not allowed.+flowDefinition_flowName :: Lens.Lens' FlowDefinition Prelude.Text+flowDefinition_flowName = Lens.lens (\FlowDefinition' {flowName} -> flowName) (\s@FlowDefinition' {} a -> s {flowName = a} :: FlowDefinition)++-- | The Amazon Resource Name of the AWS Key Management Service (KMS) key you+-- provide for encryption.+flowDefinition_kmsArn :: Lens.Lens' FlowDefinition Prelude.Text+flowDefinition_kmsArn = Lens.lens (\FlowDefinition' {kmsArn} -> kmsArn) (\s@FlowDefinition' {} a -> s {kmsArn = a} :: FlowDefinition)++-- | The configuration that controls how Customer Profiles retrieves data+-- from the source.+flowDefinition_sourceFlowConfig :: Lens.Lens' FlowDefinition SourceFlowConfig+flowDefinition_sourceFlowConfig = Lens.lens (\FlowDefinition' {sourceFlowConfig} -> sourceFlowConfig) (\s@FlowDefinition' {} a -> s {sourceFlowConfig = a} :: FlowDefinition)++-- | A list of tasks that Customer Profiles performs while transferring the+-- data in the flow run.+flowDefinition_tasks :: Lens.Lens' FlowDefinition [Task]+flowDefinition_tasks = Lens.lens (\FlowDefinition' {tasks} -> tasks) (\s@FlowDefinition' {} a -> s {tasks = a} :: FlowDefinition) Prelude.. Lens.coerced++-- | The trigger settings that determine how and when the flow runs.+flowDefinition_triggerConfig :: Lens.Lens' FlowDefinition TriggerConfig+flowDefinition_triggerConfig = Lens.lens (\FlowDefinition' {triggerConfig} -> triggerConfig) (\s@FlowDefinition' {} a -> s {triggerConfig = a} :: FlowDefinition)++instance Prelude.Hashable FlowDefinition where+  hashWithSalt _salt FlowDefinition' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` flowName+      `Prelude.hashWithSalt` kmsArn+      `Prelude.hashWithSalt` sourceFlowConfig+      `Prelude.hashWithSalt` tasks+      `Prelude.hashWithSalt` triggerConfig++instance Prelude.NFData FlowDefinition where+  rnf FlowDefinition' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf flowName+      `Prelude.seq` Prelude.rnf kmsArn+      `Prelude.seq` Prelude.rnf sourceFlowConfig+      `Prelude.seq` Prelude.rnf tasks+      `Prelude.seq` Prelude.rnf triggerConfig++instance Data.ToJSON FlowDefinition where+  toJSON FlowDefinition' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Description" Data..=) Prelude.<$> description,+            Prelude.Just ("FlowName" Data..= flowName),+            Prelude.Just ("KmsArn" Data..= kmsArn),+            Prelude.Just+              ("SourceFlowConfig" Data..= sourceFlowConfig),+            Prelude.Just ("Tasks" Data..= tasks),+            Prelude.Just+              ("TriggerConfig" Data..= triggerConfig)+          ]+      )
+ gen/Amazonka/CustomerProfiles/Types/FoundByKeyValue.hs view
@@ -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.CustomerProfiles.Types.FoundByKeyValue+-- Copyright   : (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.CustomerProfiles.Types.FoundByKeyValue where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A data type pair that consists of a @KeyName@ and @Values@ list that+-- were used to find a profile returned in response to a+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_SearchProfiles.html SearchProfiles>+-- request.+--+-- /See:/ 'newFoundByKeyValue' smart constructor.+data FoundByKeyValue = FoundByKeyValue'+  { -- | A searchable identifier of a customer profile.+    keyName :: Prelude.Maybe Prelude.Text,+    -- | A list of key values.+    values :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'FoundByKeyValue' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'keyName', 'foundByKeyValue_keyName' - A searchable identifier of a customer profile.+--+-- 'values', 'foundByKeyValue_values' - A list of key values.+newFoundByKeyValue ::+  FoundByKeyValue+newFoundByKeyValue =+  FoundByKeyValue'+    { keyName = Prelude.Nothing,+      values = Prelude.Nothing+    }++-- | A searchable identifier of a customer profile.+foundByKeyValue_keyName :: Lens.Lens' FoundByKeyValue (Prelude.Maybe Prelude.Text)+foundByKeyValue_keyName = Lens.lens (\FoundByKeyValue' {keyName} -> keyName) (\s@FoundByKeyValue' {} a -> s {keyName = a} :: FoundByKeyValue)++-- | A list of key values.+foundByKeyValue_values :: Lens.Lens' FoundByKeyValue (Prelude.Maybe [Prelude.Text])+foundByKeyValue_values = Lens.lens (\FoundByKeyValue' {values} -> values) (\s@FoundByKeyValue' {} a -> s {values = a} :: FoundByKeyValue) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON FoundByKeyValue where+  parseJSON =+    Data.withObject+      "FoundByKeyValue"+      ( \x ->+          FoundByKeyValue'+            Prelude.<$> (x Data..:? "KeyName")+            Prelude.<*> (x Data..:? "Values" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable FoundByKeyValue where+  hashWithSalt _salt FoundByKeyValue' {..} =+    _salt+      `Prelude.hashWithSalt` keyName+      `Prelude.hashWithSalt` values++instance Prelude.NFData FoundByKeyValue where+  rnf FoundByKeyValue' {..} =+    Prelude.rnf keyName+      `Prelude.seq` Prelude.rnf values
+ gen/Amazonka/CustomerProfiles/Types/Gender.hs view
@@ -0,0 +1,73 @@+{-# 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.CustomerProfiles.Types.Gender+-- Copyright   : (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.CustomerProfiles.Types.Gender+  ( Gender+      ( ..,+        Gender_FEMALE,+        Gender_MALE,+        Gender_UNSPECIFIED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype Gender = Gender' {fromGender :: 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 Gender_FEMALE :: Gender+pattern Gender_FEMALE = Gender' "FEMALE"++pattern Gender_MALE :: Gender+pattern Gender_MALE = Gender' "MALE"++pattern Gender_UNSPECIFIED :: Gender+pattern Gender_UNSPECIFIED = Gender' "UNSPECIFIED"++{-# COMPLETE+  Gender_FEMALE,+  Gender_MALE,+  Gender_UNSPECIFIED,+  Gender'+  #-}
+ gen/Amazonka/CustomerProfiles/Types/IdentityResolutionJob.hs view
@@ -0,0 +1,229 @@+{-# 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.CustomerProfiles.Types.IdentityResolutionJob+-- Copyright   : (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.CustomerProfiles.Types.IdentityResolutionJob where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types.ExportingLocation+import Amazonka.CustomerProfiles.Types.IdentityResolutionJobStatus+import Amazonka.CustomerProfiles.Types.JobStats+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Information about the Identity Resolution Job.+--+-- /See:/ 'newIdentityResolutionJob' smart constructor.+data IdentityResolutionJob = IdentityResolutionJob'+  { -- | The unique name of the domain.+    domainName :: Prelude.Maybe Prelude.Text,+    -- | The S3 location where the Identity Resolution Job writes result files.+    exportingLocation :: Prelude.Maybe ExportingLocation,+    -- | The timestamp of when the job was completed.+    jobEndTime :: Prelude.Maybe Data.POSIX,+    -- | The unique identifier of the Identity Resolution Job.+    jobId :: Prelude.Maybe Prelude.Text,+    -- | The timestamp of when the job was started or will be started.+    jobStartTime :: Prelude.Maybe Data.POSIX,+    -- | Statistics about an Identity Resolution Job.+    jobStats :: Prelude.Maybe JobStats,+    -- | The error messages that are generated when the Identity Resolution Job+    -- runs.+    message :: Prelude.Maybe Prelude.Text,+    -- | The status of the Identity Resolution Job.+    --+    -- -   @PENDING@: The Identity Resolution Job is scheduled but has not+    --     started yet. If you turn off the Identity Resolution feature in your+    --     domain, jobs in the @PENDING@ state are deleted.+    --+    -- -   @PREPROCESSING@: The Identity Resolution Job is loading your data.+    --+    -- -   @FIND_MATCHING@: The Identity Resolution Job is using the machine+    --     learning model to identify profiles that belong to the same matching+    --     group.+    --+    -- -   @MERGING@: The Identity Resolution Job is merging duplicate+    --     profiles.+    --+    -- -   @COMPLETED@: The Identity Resolution Job completed successfully.+    --+    -- -   @PARTIAL_SUCCESS@: There\'s a system error and not all of the data+    --     is merged. The Identity Resolution Job writes a message indicating+    --     the source of the problem.+    --+    -- -   @FAILED@: The Identity Resolution Job did not merge any data. It+    --     writes a message indicating the source of the problem.+    status :: Prelude.Maybe IdentityResolutionJobStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'IdentityResolutionJob' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'domainName', 'identityResolutionJob_domainName' - The unique name of the domain.+--+-- 'exportingLocation', 'identityResolutionJob_exportingLocation' - The S3 location where the Identity Resolution Job writes result files.+--+-- 'jobEndTime', 'identityResolutionJob_jobEndTime' - The timestamp of when the job was completed.+--+-- 'jobId', 'identityResolutionJob_jobId' - The unique identifier of the Identity Resolution Job.+--+-- 'jobStartTime', 'identityResolutionJob_jobStartTime' - The timestamp of when the job was started or will be started.+--+-- 'jobStats', 'identityResolutionJob_jobStats' - Statistics about an Identity Resolution Job.+--+-- 'message', 'identityResolutionJob_message' - The error messages that are generated when the Identity Resolution Job+-- runs.+--+-- 'status', 'identityResolutionJob_status' - The status of the Identity Resolution Job.+--+-- -   @PENDING@: The Identity Resolution Job is scheduled but has not+--     started yet. If you turn off the Identity Resolution feature in your+--     domain, jobs in the @PENDING@ state are deleted.+--+-- -   @PREPROCESSING@: The Identity Resolution Job is loading your data.+--+-- -   @FIND_MATCHING@: The Identity Resolution Job is using the machine+--     learning model to identify profiles that belong to the same matching+--     group.+--+-- -   @MERGING@: The Identity Resolution Job is merging duplicate+--     profiles.+--+-- -   @COMPLETED@: The Identity Resolution Job completed successfully.+--+-- -   @PARTIAL_SUCCESS@: There\'s a system error and not all of the data+--     is merged. The Identity Resolution Job writes a message indicating+--     the source of the problem.+--+-- -   @FAILED@: The Identity Resolution Job did not merge any data. It+--     writes a message indicating the source of the problem.+newIdentityResolutionJob ::+  IdentityResolutionJob+newIdentityResolutionJob =+  IdentityResolutionJob'+    { domainName =+        Prelude.Nothing,+      exportingLocation = Prelude.Nothing,+      jobEndTime = Prelude.Nothing,+      jobId = Prelude.Nothing,+      jobStartTime = Prelude.Nothing,+      jobStats = Prelude.Nothing,+      message = Prelude.Nothing,+      status = Prelude.Nothing+    }++-- | The unique name of the domain.+identityResolutionJob_domainName :: Lens.Lens' IdentityResolutionJob (Prelude.Maybe Prelude.Text)+identityResolutionJob_domainName = Lens.lens (\IdentityResolutionJob' {domainName} -> domainName) (\s@IdentityResolutionJob' {} a -> s {domainName = a} :: IdentityResolutionJob)++-- | The S3 location where the Identity Resolution Job writes result files.+identityResolutionJob_exportingLocation :: Lens.Lens' IdentityResolutionJob (Prelude.Maybe ExportingLocation)+identityResolutionJob_exportingLocation = Lens.lens (\IdentityResolutionJob' {exportingLocation} -> exportingLocation) (\s@IdentityResolutionJob' {} a -> s {exportingLocation = a} :: IdentityResolutionJob)++-- | The timestamp of when the job was completed.+identityResolutionJob_jobEndTime :: Lens.Lens' IdentityResolutionJob (Prelude.Maybe Prelude.UTCTime)+identityResolutionJob_jobEndTime = Lens.lens (\IdentityResolutionJob' {jobEndTime} -> jobEndTime) (\s@IdentityResolutionJob' {} a -> s {jobEndTime = a} :: IdentityResolutionJob) Prelude.. Lens.mapping Data._Time++-- | The unique identifier of the Identity Resolution Job.+identityResolutionJob_jobId :: Lens.Lens' IdentityResolutionJob (Prelude.Maybe Prelude.Text)+identityResolutionJob_jobId = Lens.lens (\IdentityResolutionJob' {jobId} -> jobId) (\s@IdentityResolutionJob' {} a -> s {jobId = a} :: IdentityResolutionJob)++-- | The timestamp of when the job was started or will be started.+identityResolutionJob_jobStartTime :: Lens.Lens' IdentityResolutionJob (Prelude.Maybe Prelude.UTCTime)+identityResolutionJob_jobStartTime = Lens.lens (\IdentityResolutionJob' {jobStartTime} -> jobStartTime) (\s@IdentityResolutionJob' {} a -> s {jobStartTime = a} :: IdentityResolutionJob) Prelude.. Lens.mapping Data._Time++-- | Statistics about an Identity Resolution Job.+identityResolutionJob_jobStats :: Lens.Lens' IdentityResolutionJob (Prelude.Maybe JobStats)+identityResolutionJob_jobStats = Lens.lens (\IdentityResolutionJob' {jobStats} -> jobStats) (\s@IdentityResolutionJob' {} a -> s {jobStats = a} :: IdentityResolutionJob)++-- | The error messages that are generated when the Identity Resolution Job+-- runs.+identityResolutionJob_message :: Lens.Lens' IdentityResolutionJob (Prelude.Maybe Prelude.Text)+identityResolutionJob_message = Lens.lens (\IdentityResolutionJob' {message} -> message) (\s@IdentityResolutionJob' {} a -> s {message = a} :: IdentityResolutionJob)++-- | The status of the Identity Resolution Job.+--+-- -   @PENDING@: The Identity Resolution Job is scheduled but has not+--     started yet. If you turn off the Identity Resolution feature in your+--     domain, jobs in the @PENDING@ state are deleted.+--+-- -   @PREPROCESSING@: The Identity Resolution Job is loading your data.+--+-- -   @FIND_MATCHING@: The Identity Resolution Job is using the machine+--     learning model to identify profiles that belong to the same matching+--     group.+--+-- -   @MERGING@: The Identity Resolution Job is merging duplicate+--     profiles.+--+-- -   @COMPLETED@: The Identity Resolution Job completed successfully.+--+-- -   @PARTIAL_SUCCESS@: There\'s a system error and not all of the data+--     is merged. The Identity Resolution Job writes a message indicating+--     the source of the problem.+--+-- -   @FAILED@: The Identity Resolution Job did not merge any data. It+--     writes a message indicating the source of the problem.+identityResolutionJob_status :: Lens.Lens' IdentityResolutionJob (Prelude.Maybe IdentityResolutionJobStatus)+identityResolutionJob_status = Lens.lens (\IdentityResolutionJob' {status} -> status) (\s@IdentityResolutionJob' {} a -> s {status = a} :: IdentityResolutionJob)++instance Data.FromJSON IdentityResolutionJob where+  parseJSON =+    Data.withObject+      "IdentityResolutionJob"+      ( \x ->+          IdentityResolutionJob'+            Prelude.<$> (x Data..:? "DomainName")+            Prelude.<*> (x Data..:? "ExportingLocation")+            Prelude.<*> (x Data..:? "JobEndTime")+            Prelude.<*> (x Data..:? "JobId")+            Prelude.<*> (x Data..:? "JobStartTime")+            Prelude.<*> (x Data..:? "JobStats")+            Prelude.<*> (x Data..:? "Message")+            Prelude.<*> (x Data..:? "Status")+      )++instance Prelude.Hashable IdentityResolutionJob where+  hashWithSalt _salt IdentityResolutionJob' {..} =+    _salt+      `Prelude.hashWithSalt` domainName+      `Prelude.hashWithSalt` exportingLocation+      `Prelude.hashWithSalt` jobEndTime+      `Prelude.hashWithSalt` jobId+      `Prelude.hashWithSalt` jobStartTime+      `Prelude.hashWithSalt` jobStats+      `Prelude.hashWithSalt` message+      `Prelude.hashWithSalt` status++instance Prelude.NFData IdentityResolutionJob where+  rnf IdentityResolutionJob' {..} =+    Prelude.rnf domainName+      `Prelude.seq` Prelude.rnf exportingLocation+      `Prelude.seq` Prelude.rnf jobEndTime+      `Prelude.seq` Prelude.rnf jobId+      `Prelude.seq` Prelude.rnf jobStartTime+      `Prelude.seq` Prelude.rnf jobStats+      `Prelude.seq` Prelude.rnf message+      `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/CustomerProfiles/Types/IdentityResolutionJobStatus.hs view
@@ -0,0 +1,96 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.Types.IdentityResolutionJobStatus+-- Copyright   : (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.CustomerProfiles.Types.IdentityResolutionJobStatus+  ( IdentityResolutionJobStatus+      ( ..,+        IdentityResolutionJobStatus_COMPLETED,+        IdentityResolutionJobStatus_FAILED,+        IdentityResolutionJobStatus_FIND_MATCHING,+        IdentityResolutionJobStatus_MERGING,+        IdentityResolutionJobStatus_PARTIAL_SUCCESS,+        IdentityResolutionJobStatus_PENDING,+        IdentityResolutionJobStatus_PREPROCESSING+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype IdentityResolutionJobStatus = IdentityResolutionJobStatus'+  { fromIdentityResolutionJobStatus ::+      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 IdentityResolutionJobStatus_COMPLETED :: IdentityResolutionJobStatus+pattern IdentityResolutionJobStatus_COMPLETED = IdentityResolutionJobStatus' "COMPLETED"++pattern IdentityResolutionJobStatus_FAILED :: IdentityResolutionJobStatus+pattern IdentityResolutionJobStatus_FAILED = IdentityResolutionJobStatus' "FAILED"++pattern IdentityResolutionJobStatus_FIND_MATCHING :: IdentityResolutionJobStatus+pattern IdentityResolutionJobStatus_FIND_MATCHING = IdentityResolutionJobStatus' "FIND_MATCHING"++pattern IdentityResolutionJobStatus_MERGING :: IdentityResolutionJobStatus+pattern IdentityResolutionJobStatus_MERGING = IdentityResolutionJobStatus' "MERGING"++pattern IdentityResolutionJobStatus_PARTIAL_SUCCESS :: IdentityResolutionJobStatus+pattern IdentityResolutionJobStatus_PARTIAL_SUCCESS = IdentityResolutionJobStatus' "PARTIAL_SUCCESS"++pattern IdentityResolutionJobStatus_PENDING :: IdentityResolutionJobStatus+pattern IdentityResolutionJobStatus_PENDING = IdentityResolutionJobStatus' "PENDING"++pattern IdentityResolutionJobStatus_PREPROCESSING :: IdentityResolutionJobStatus+pattern IdentityResolutionJobStatus_PREPROCESSING = IdentityResolutionJobStatus' "PREPROCESSING"++{-# COMPLETE+  IdentityResolutionJobStatus_COMPLETED,+  IdentityResolutionJobStatus_FAILED,+  IdentityResolutionJobStatus_FIND_MATCHING,+  IdentityResolutionJobStatus_MERGING,+  IdentityResolutionJobStatus_PARTIAL_SUCCESS,+  IdentityResolutionJobStatus_PENDING,+  IdentityResolutionJobStatus_PREPROCESSING,+  IdentityResolutionJobStatus'+  #-}
+ gen/Amazonka/CustomerProfiles/Types/IncrementalPullConfig.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.Types.IncrementalPullConfig+-- Copyright   : (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.CustomerProfiles.Types.IncrementalPullConfig 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++-- | Specifies the configuration used when importing incremental records from+-- the source.+--+-- /See:/ 'newIncrementalPullConfig' smart constructor.+data IncrementalPullConfig = IncrementalPullConfig'+  { -- | A field that specifies the date time or timestamp field as the criteria+    -- to use when importing incremental records from the source.+    datetimeTypeFieldName :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'IncrementalPullConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'datetimeTypeFieldName', 'incrementalPullConfig_datetimeTypeFieldName' - A field that specifies the date time or timestamp field as the criteria+-- to use when importing incremental records from the source.+newIncrementalPullConfig ::+  IncrementalPullConfig+newIncrementalPullConfig =+  IncrementalPullConfig'+    { datetimeTypeFieldName =+        Prelude.Nothing+    }++-- | A field that specifies the date time or timestamp field as the criteria+-- to use when importing incremental records from the source.+incrementalPullConfig_datetimeTypeFieldName :: Lens.Lens' IncrementalPullConfig (Prelude.Maybe Prelude.Text)+incrementalPullConfig_datetimeTypeFieldName = Lens.lens (\IncrementalPullConfig' {datetimeTypeFieldName} -> datetimeTypeFieldName) (\s@IncrementalPullConfig' {} a -> s {datetimeTypeFieldName = a} :: IncrementalPullConfig)++instance Prelude.Hashable IncrementalPullConfig where+  hashWithSalt _salt IncrementalPullConfig' {..} =+    _salt `Prelude.hashWithSalt` datetimeTypeFieldName++instance Prelude.NFData IncrementalPullConfig where+  rnf IncrementalPullConfig' {..} =+    Prelude.rnf datetimeTypeFieldName++instance Data.ToJSON IncrementalPullConfig where+  toJSON IncrementalPullConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("DatetimeTypeFieldName" Data..=)+              Prelude.<$> datetimeTypeFieldName+          ]+      )
+ gen/Amazonka/CustomerProfiles/Types/IntegrationConfig.hs view
@@ -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.CustomerProfiles.Types.IntegrationConfig+-- Copyright   : (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.CustomerProfiles.Types.IntegrationConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types.AppflowIntegration+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Configuration data for integration workflow.+--+-- /See:/ 'newIntegrationConfig' smart constructor.+data IntegrationConfig = IntegrationConfig'+  { -- | Configuration data for @APPFLOW_INTEGRATION@ workflow type.+    appflowIntegration :: Prelude.Maybe AppflowIntegration+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'IntegrationConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'appflowIntegration', 'integrationConfig_appflowIntegration' - Configuration data for @APPFLOW_INTEGRATION@ workflow type.+newIntegrationConfig ::+  IntegrationConfig+newIntegrationConfig =+  IntegrationConfig'+    { appflowIntegration =+        Prelude.Nothing+    }++-- | Configuration data for @APPFLOW_INTEGRATION@ workflow type.+integrationConfig_appflowIntegration :: Lens.Lens' IntegrationConfig (Prelude.Maybe AppflowIntegration)+integrationConfig_appflowIntegration = Lens.lens (\IntegrationConfig' {appflowIntegration} -> appflowIntegration) (\s@IntegrationConfig' {} a -> s {appflowIntegration = a} :: IntegrationConfig)++instance Prelude.Hashable IntegrationConfig where+  hashWithSalt _salt IntegrationConfig' {..} =+    _salt `Prelude.hashWithSalt` appflowIntegration++instance Prelude.NFData IntegrationConfig where+  rnf IntegrationConfig' {..} =+    Prelude.rnf appflowIntegration++instance Data.ToJSON IntegrationConfig where+  toJSON IntegrationConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("AppflowIntegration" Data..=)+              Prelude.<$> appflowIntegration+          ]+      )
+ gen/Amazonka/CustomerProfiles/Types/JobSchedule.hs view
@@ -0,0 +1,99 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.Types.JobSchedule+-- Copyright   : (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.CustomerProfiles.Types.JobSchedule where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types.JobScheduleDayOfTheWeek+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The day and time when do you want to start the Identity Resolution Job+-- every week.+--+-- /See:/ 'newJobSchedule' smart constructor.+data JobSchedule = JobSchedule'+  { -- | The day when the Identity Resolution Job should run every week.+    dayOfTheWeek :: JobScheduleDayOfTheWeek,+    -- | The time when the Identity Resolution Job should run every week.+    time :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'JobSchedule' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'dayOfTheWeek', 'jobSchedule_dayOfTheWeek' - The day when the Identity Resolution Job should run every week.+--+-- 'time', 'jobSchedule_time' - The time when the Identity Resolution Job should run every week.+newJobSchedule ::+  -- | 'dayOfTheWeek'+  JobScheduleDayOfTheWeek ->+  -- | 'time'+  Prelude.Text ->+  JobSchedule+newJobSchedule pDayOfTheWeek_ pTime_ =+  JobSchedule'+    { dayOfTheWeek = pDayOfTheWeek_,+      time = pTime_+    }++-- | The day when the Identity Resolution Job should run every week.+jobSchedule_dayOfTheWeek :: Lens.Lens' JobSchedule JobScheduleDayOfTheWeek+jobSchedule_dayOfTheWeek = Lens.lens (\JobSchedule' {dayOfTheWeek} -> dayOfTheWeek) (\s@JobSchedule' {} a -> s {dayOfTheWeek = a} :: JobSchedule)++-- | The time when the Identity Resolution Job should run every week.+jobSchedule_time :: Lens.Lens' JobSchedule Prelude.Text+jobSchedule_time = Lens.lens (\JobSchedule' {time} -> time) (\s@JobSchedule' {} a -> s {time = a} :: JobSchedule)++instance Data.FromJSON JobSchedule where+  parseJSON =+    Data.withObject+      "JobSchedule"+      ( \x ->+          JobSchedule'+            Prelude.<$> (x Data..: "DayOfTheWeek")+            Prelude.<*> (x Data..: "Time")+      )++instance Prelude.Hashable JobSchedule where+  hashWithSalt _salt JobSchedule' {..} =+    _salt+      `Prelude.hashWithSalt` dayOfTheWeek+      `Prelude.hashWithSalt` time++instance Prelude.NFData JobSchedule where+  rnf JobSchedule' {..} =+    Prelude.rnf dayOfTheWeek+      `Prelude.seq` Prelude.rnf time++instance Data.ToJSON JobSchedule where+  toJSON JobSchedule' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("DayOfTheWeek" Data..= dayOfTheWeek),+            Prelude.Just ("Time" Data..= time)+          ]+      )
+ gen/Amazonka/CustomerProfiles/Types/JobScheduleDayOfTheWeek.hs view
@@ -0,0 +1,96 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.Types.JobScheduleDayOfTheWeek+-- Copyright   : (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.CustomerProfiles.Types.JobScheduleDayOfTheWeek+  ( JobScheduleDayOfTheWeek+      ( ..,+        JobScheduleDayOfTheWeek_FRIDAY,+        JobScheduleDayOfTheWeek_MONDAY,+        JobScheduleDayOfTheWeek_SATURDAY,+        JobScheduleDayOfTheWeek_SUNDAY,+        JobScheduleDayOfTheWeek_THURSDAY,+        JobScheduleDayOfTheWeek_TUESDAY,+        JobScheduleDayOfTheWeek_WEDNESDAY+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype JobScheduleDayOfTheWeek = JobScheduleDayOfTheWeek'+  { fromJobScheduleDayOfTheWeek ::+      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 JobScheduleDayOfTheWeek_FRIDAY :: JobScheduleDayOfTheWeek+pattern JobScheduleDayOfTheWeek_FRIDAY = JobScheduleDayOfTheWeek' "FRIDAY"++pattern JobScheduleDayOfTheWeek_MONDAY :: JobScheduleDayOfTheWeek+pattern JobScheduleDayOfTheWeek_MONDAY = JobScheduleDayOfTheWeek' "MONDAY"++pattern JobScheduleDayOfTheWeek_SATURDAY :: JobScheduleDayOfTheWeek+pattern JobScheduleDayOfTheWeek_SATURDAY = JobScheduleDayOfTheWeek' "SATURDAY"++pattern JobScheduleDayOfTheWeek_SUNDAY :: JobScheduleDayOfTheWeek+pattern JobScheduleDayOfTheWeek_SUNDAY = JobScheduleDayOfTheWeek' "SUNDAY"++pattern JobScheduleDayOfTheWeek_THURSDAY :: JobScheduleDayOfTheWeek+pattern JobScheduleDayOfTheWeek_THURSDAY = JobScheduleDayOfTheWeek' "THURSDAY"++pattern JobScheduleDayOfTheWeek_TUESDAY :: JobScheduleDayOfTheWeek+pattern JobScheduleDayOfTheWeek_TUESDAY = JobScheduleDayOfTheWeek' "TUESDAY"++pattern JobScheduleDayOfTheWeek_WEDNESDAY :: JobScheduleDayOfTheWeek+pattern JobScheduleDayOfTheWeek_WEDNESDAY = JobScheduleDayOfTheWeek' "WEDNESDAY"++{-# COMPLETE+  JobScheduleDayOfTheWeek_FRIDAY,+  JobScheduleDayOfTheWeek_MONDAY,+  JobScheduleDayOfTheWeek_SATURDAY,+  JobScheduleDayOfTheWeek_SUNDAY,+  JobScheduleDayOfTheWeek_THURSDAY,+  JobScheduleDayOfTheWeek_TUESDAY,+  JobScheduleDayOfTheWeek_WEDNESDAY,+  JobScheduleDayOfTheWeek'+  #-}
+ gen/Amazonka/CustomerProfiles/Types/JobStats.hs view
@@ -0,0 +1,96 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.Types.JobStats+-- Copyright   : (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.CustomerProfiles.Types.JobStats 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++-- | Statistics about the Identity Resolution Job.+--+-- /See:/ 'newJobStats' smart constructor.+data JobStats = JobStats'+  { -- | The number of matches found.+    numberOfMatchesFound :: Prelude.Maybe Prelude.Integer,+    -- | The number of merges completed.+    numberOfMergesDone :: Prelude.Maybe Prelude.Integer,+    -- | The number of profiles reviewed.+    numberOfProfilesReviewed :: Prelude.Maybe Prelude.Integer+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'JobStats' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'numberOfMatchesFound', 'jobStats_numberOfMatchesFound' - The number of matches found.+--+-- 'numberOfMergesDone', 'jobStats_numberOfMergesDone' - The number of merges completed.+--+-- 'numberOfProfilesReviewed', 'jobStats_numberOfProfilesReviewed' - The number of profiles reviewed.+newJobStats ::+  JobStats+newJobStats =+  JobStats'+    { numberOfMatchesFound = Prelude.Nothing,+      numberOfMergesDone = Prelude.Nothing,+      numberOfProfilesReviewed = Prelude.Nothing+    }++-- | The number of matches found.+jobStats_numberOfMatchesFound :: Lens.Lens' JobStats (Prelude.Maybe Prelude.Integer)+jobStats_numberOfMatchesFound = Lens.lens (\JobStats' {numberOfMatchesFound} -> numberOfMatchesFound) (\s@JobStats' {} a -> s {numberOfMatchesFound = a} :: JobStats)++-- | The number of merges completed.+jobStats_numberOfMergesDone :: Lens.Lens' JobStats (Prelude.Maybe Prelude.Integer)+jobStats_numberOfMergesDone = Lens.lens (\JobStats' {numberOfMergesDone} -> numberOfMergesDone) (\s@JobStats' {} a -> s {numberOfMergesDone = a} :: JobStats)++-- | The number of profiles reviewed.+jobStats_numberOfProfilesReviewed :: Lens.Lens' JobStats (Prelude.Maybe Prelude.Integer)+jobStats_numberOfProfilesReviewed = Lens.lens (\JobStats' {numberOfProfilesReviewed} -> numberOfProfilesReviewed) (\s@JobStats' {} a -> s {numberOfProfilesReviewed = a} :: JobStats)++instance Data.FromJSON JobStats where+  parseJSON =+    Data.withObject+      "JobStats"+      ( \x ->+          JobStats'+            Prelude.<$> (x Data..:? "NumberOfMatchesFound")+            Prelude.<*> (x Data..:? "NumberOfMergesDone")+            Prelude.<*> (x Data..:? "NumberOfProfilesReviewed")+      )++instance Prelude.Hashable JobStats where+  hashWithSalt _salt JobStats' {..} =+    _salt+      `Prelude.hashWithSalt` numberOfMatchesFound+      `Prelude.hashWithSalt` numberOfMergesDone+      `Prelude.hashWithSalt` numberOfProfilesReviewed++instance Prelude.NFData JobStats where+  rnf JobStats' {..} =+    Prelude.rnf numberOfMatchesFound+      `Prelude.seq` Prelude.rnf numberOfMergesDone+      `Prelude.seq` Prelude.rnf numberOfProfilesReviewed
+ gen/Amazonka/CustomerProfiles/Types/ListDomainItem.hs view
@@ -0,0 +1,117 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.Types.ListDomainItem+-- Copyright   : (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.CustomerProfiles.Types.ListDomainItem 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 object in a list that represents a domain.+--+-- /See:/ 'newListDomainItem' smart constructor.+data ListDomainItem = ListDomainItem'+  { -- | The tags used to organize, track, or control access for this resource.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The unique name of the domain.+    domainName :: Prelude.Text,+    -- | The timestamp of when the domain was created.+    createdAt :: Data.POSIX,+    -- | The timestamp of when the domain was most recently edited.+    lastUpdatedAt :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListDomainItem' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'tags', 'listDomainItem_tags' - The tags used to organize, track, or control access for this resource.+--+-- 'domainName', 'listDomainItem_domainName' - The unique name of the domain.+--+-- 'createdAt', 'listDomainItem_createdAt' - The timestamp of when the domain was created.+--+-- 'lastUpdatedAt', 'listDomainItem_lastUpdatedAt' - The timestamp of when the domain was most recently edited.+newListDomainItem ::+  -- | 'domainName'+  Prelude.Text ->+  -- | 'createdAt'+  Prelude.UTCTime ->+  -- | 'lastUpdatedAt'+  Prelude.UTCTime ->+  ListDomainItem+newListDomainItem+  pDomainName_+  pCreatedAt_+  pLastUpdatedAt_ =+    ListDomainItem'+      { tags = Prelude.Nothing,+        domainName = pDomainName_,+        createdAt = Data._Time Lens.# pCreatedAt_,+        lastUpdatedAt = Data._Time Lens.# pLastUpdatedAt_+      }++-- | The tags used to organize, track, or control access for this resource.+listDomainItem_tags :: Lens.Lens' ListDomainItem (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+listDomainItem_tags = Lens.lens (\ListDomainItem' {tags} -> tags) (\s@ListDomainItem' {} a -> s {tags = a} :: ListDomainItem) Prelude.. Lens.mapping Lens.coerced++-- | The unique name of the domain.+listDomainItem_domainName :: Lens.Lens' ListDomainItem Prelude.Text+listDomainItem_domainName = Lens.lens (\ListDomainItem' {domainName} -> domainName) (\s@ListDomainItem' {} a -> s {domainName = a} :: ListDomainItem)++-- | The timestamp of when the domain was created.+listDomainItem_createdAt :: Lens.Lens' ListDomainItem Prelude.UTCTime+listDomainItem_createdAt = Lens.lens (\ListDomainItem' {createdAt} -> createdAt) (\s@ListDomainItem' {} a -> s {createdAt = a} :: ListDomainItem) Prelude.. Data._Time++-- | The timestamp of when the domain was most recently edited.+listDomainItem_lastUpdatedAt :: Lens.Lens' ListDomainItem Prelude.UTCTime+listDomainItem_lastUpdatedAt = Lens.lens (\ListDomainItem' {lastUpdatedAt} -> lastUpdatedAt) (\s@ListDomainItem' {} a -> s {lastUpdatedAt = a} :: ListDomainItem) Prelude.. Data._Time++instance Data.FromJSON ListDomainItem where+  parseJSON =+    Data.withObject+      "ListDomainItem"+      ( \x ->+          ListDomainItem'+            Prelude.<$> (x Data..:? "Tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..: "DomainName")+            Prelude.<*> (x Data..: "CreatedAt")+            Prelude.<*> (x Data..: "LastUpdatedAt")+      )++instance Prelude.Hashable ListDomainItem where+  hashWithSalt _salt ListDomainItem' {..} =+    _salt+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` domainName+      `Prelude.hashWithSalt` createdAt+      `Prelude.hashWithSalt` lastUpdatedAt++instance Prelude.NFData ListDomainItem where+  rnf ListDomainItem' {..} =+    Prelude.rnf tags+      `Prelude.seq` Prelude.rnf domainName+      `Prelude.seq` Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf lastUpdatedAt
+ gen/Amazonka/CustomerProfiles/Types/ListIntegrationItem.hs view
@@ -0,0 +1,208 @@+{-# 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.CustomerProfiles.Types.ListIntegrationItem+-- Copyright   : (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.CustomerProfiles.Types.ListIntegrationItem 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 integration in list of integrations.+--+-- /See:/ 'newListIntegrationItem' smart constructor.+data ListIntegrationItem = ListIntegrationItem'+  { -- | Boolean to indicate if the Flow associated with the Integration is+    -- created via Appflow console or with ObjectTypeName equals _unstructured+    -- via API\/CLI in flowDefinition+    isUnstructured :: Prelude.Maybe Prelude.Bool,+    -- | The name of the profile object type.+    objectTypeName :: Prelude.Maybe Prelude.Text,+    -- | A map in which each key is an event type from an external application+    -- such as Segment or Shopify, and each value is an @ObjectTypeName@+    -- (template) used to ingest the event. It supports the following event+    -- types: @SegmentIdentify@, @ShopifyCreateCustomers@,+    -- @ShopifyUpdateCustomers@, @ShopifyCreateDraftOrders@,+    -- @ShopifyUpdateDraftOrders@, @ShopifyCreateOrders@, and+    -- @ShopifyUpdatedOrders@.+    objectTypeNames :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The tags used to organize, track, or control access for this resource.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | Unique identifier for the workflow.+    workflowId :: Prelude.Maybe Prelude.Text,+    -- | The unique name of the domain.+    domainName :: Prelude.Text,+    -- | The URI of the S3 bucket or any other type of data source.+    uri :: Prelude.Text,+    -- | The timestamp of when the domain was created.+    createdAt :: Data.POSIX,+    -- | The timestamp of when the domain was most recently edited.+    lastUpdatedAt :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListIntegrationItem' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'isUnstructured', 'listIntegrationItem_isUnstructured' - Boolean to indicate if the Flow associated with the Integration is+-- created via Appflow console or with ObjectTypeName equals _unstructured+-- via API\/CLI in flowDefinition+--+-- 'objectTypeName', 'listIntegrationItem_objectTypeName' - The name of the profile object type.+--+-- 'objectTypeNames', 'listIntegrationItem_objectTypeNames' - A map in which each key is an event type from an external application+-- such as Segment or Shopify, and each value is an @ObjectTypeName@+-- (template) used to ingest the event. It supports the following event+-- types: @SegmentIdentify@, @ShopifyCreateCustomers@,+-- @ShopifyUpdateCustomers@, @ShopifyCreateDraftOrders@,+-- @ShopifyUpdateDraftOrders@, @ShopifyCreateOrders@, and+-- @ShopifyUpdatedOrders@.+--+-- 'tags', 'listIntegrationItem_tags' - The tags used to organize, track, or control access for this resource.+--+-- 'workflowId', 'listIntegrationItem_workflowId' - Unique identifier for the workflow.+--+-- 'domainName', 'listIntegrationItem_domainName' - The unique name of the domain.+--+-- 'uri', 'listIntegrationItem_uri' - The URI of the S3 bucket or any other type of data source.+--+-- 'createdAt', 'listIntegrationItem_createdAt' - The timestamp of when the domain was created.+--+-- 'lastUpdatedAt', 'listIntegrationItem_lastUpdatedAt' - The timestamp of when the domain was most recently edited.+newListIntegrationItem ::+  -- | 'domainName'+  Prelude.Text ->+  -- | 'uri'+  Prelude.Text ->+  -- | 'createdAt'+  Prelude.UTCTime ->+  -- | 'lastUpdatedAt'+  Prelude.UTCTime ->+  ListIntegrationItem+newListIntegrationItem+  pDomainName_+  pUri_+  pCreatedAt_+  pLastUpdatedAt_ =+    ListIntegrationItem'+      { isUnstructured =+          Prelude.Nothing,+        objectTypeName = Prelude.Nothing,+        objectTypeNames = Prelude.Nothing,+        tags = Prelude.Nothing,+        workflowId = Prelude.Nothing,+        domainName = pDomainName_,+        uri = pUri_,+        createdAt = Data._Time Lens.# pCreatedAt_,+        lastUpdatedAt = Data._Time Lens.# pLastUpdatedAt_+      }++-- | Boolean to indicate if the Flow associated with the Integration is+-- created via Appflow console or with ObjectTypeName equals _unstructured+-- via API\/CLI in flowDefinition+listIntegrationItem_isUnstructured :: Lens.Lens' ListIntegrationItem (Prelude.Maybe Prelude.Bool)+listIntegrationItem_isUnstructured = Lens.lens (\ListIntegrationItem' {isUnstructured} -> isUnstructured) (\s@ListIntegrationItem' {} a -> s {isUnstructured = a} :: ListIntegrationItem)++-- | The name of the profile object type.+listIntegrationItem_objectTypeName :: Lens.Lens' ListIntegrationItem (Prelude.Maybe Prelude.Text)+listIntegrationItem_objectTypeName = Lens.lens (\ListIntegrationItem' {objectTypeName} -> objectTypeName) (\s@ListIntegrationItem' {} a -> s {objectTypeName = a} :: ListIntegrationItem)++-- | A map in which each key is an event type from an external application+-- such as Segment or Shopify, and each value is an @ObjectTypeName@+-- (template) used to ingest the event. It supports the following event+-- types: @SegmentIdentify@, @ShopifyCreateCustomers@,+-- @ShopifyUpdateCustomers@, @ShopifyCreateDraftOrders@,+-- @ShopifyUpdateDraftOrders@, @ShopifyCreateOrders@, and+-- @ShopifyUpdatedOrders@.+listIntegrationItem_objectTypeNames :: Lens.Lens' ListIntegrationItem (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+listIntegrationItem_objectTypeNames = Lens.lens (\ListIntegrationItem' {objectTypeNames} -> objectTypeNames) (\s@ListIntegrationItem' {} a -> s {objectTypeNames = a} :: ListIntegrationItem) Prelude.. Lens.mapping Lens.coerced++-- | The tags used to organize, track, or control access for this resource.+listIntegrationItem_tags :: Lens.Lens' ListIntegrationItem (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+listIntegrationItem_tags = Lens.lens (\ListIntegrationItem' {tags} -> tags) (\s@ListIntegrationItem' {} a -> s {tags = a} :: ListIntegrationItem) Prelude.. Lens.mapping Lens.coerced++-- | Unique identifier for the workflow.+listIntegrationItem_workflowId :: Lens.Lens' ListIntegrationItem (Prelude.Maybe Prelude.Text)+listIntegrationItem_workflowId = Lens.lens (\ListIntegrationItem' {workflowId} -> workflowId) (\s@ListIntegrationItem' {} a -> s {workflowId = a} :: ListIntegrationItem)++-- | The unique name of the domain.+listIntegrationItem_domainName :: Lens.Lens' ListIntegrationItem Prelude.Text+listIntegrationItem_domainName = Lens.lens (\ListIntegrationItem' {domainName} -> domainName) (\s@ListIntegrationItem' {} a -> s {domainName = a} :: ListIntegrationItem)++-- | The URI of the S3 bucket or any other type of data source.+listIntegrationItem_uri :: Lens.Lens' ListIntegrationItem Prelude.Text+listIntegrationItem_uri = Lens.lens (\ListIntegrationItem' {uri} -> uri) (\s@ListIntegrationItem' {} a -> s {uri = a} :: ListIntegrationItem)++-- | The timestamp of when the domain was created.+listIntegrationItem_createdAt :: Lens.Lens' ListIntegrationItem Prelude.UTCTime+listIntegrationItem_createdAt = Lens.lens (\ListIntegrationItem' {createdAt} -> createdAt) (\s@ListIntegrationItem' {} a -> s {createdAt = a} :: ListIntegrationItem) Prelude.. Data._Time++-- | The timestamp of when the domain was most recently edited.+listIntegrationItem_lastUpdatedAt :: Lens.Lens' ListIntegrationItem Prelude.UTCTime+listIntegrationItem_lastUpdatedAt = Lens.lens (\ListIntegrationItem' {lastUpdatedAt} -> lastUpdatedAt) (\s@ListIntegrationItem' {} a -> s {lastUpdatedAt = a} :: ListIntegrationItem) Prelude.. Data._Time++instance Data.FromJSON ListIntegrationItem where+  parseJSON =+    Data.withObject+      "ListIntegrationItem"+      ( \x ->+          ListIntegrationItem'+            Prelude.<$> (x Data..:? "IsUnstructured")+            Prelude.<*> (x Data..:? "ObjectTypeName")+            Prelude.<*> ( x+                            Data..:? "ObjectTypeNames"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "WorkflowId")+            Prelude.<*> (x Data..: "DomainName")+            Prelude.<*> (x Data..: "Uri")+            Prelude.<*> (x Data..: "CreatedAt")+            Prelude.<*> (x Data..: "LastUpdatedAt")+      )++instance Prelude.Hashable ListIntegrationItem where+  hashWithSalt _salt ListIntegrationItem' {..} =+    _salt+      `Prelude.hashWithSalt` isUnstructured+      `Prelude.hashWithSalt` objectTypeName+      `Prelude.hashWithSalt` objectTypeNames+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` workflowId+      `Prelude.hashWithSalt` domainName+      `Prelude.hashWithSalt` uri+      `Prelude.hashWithSalt` createdAt+      `Prelude.hashWithSalt` lastUpdatedAt++instance Prelude.NFData ListIntegrationItem where+  rnf ListIntegrationItem' {..} =+    Prelude.rnf isUnstructured+      `Prelude.seq` Prelude.rnf objectTypeName+      `Prelude.seq` Prelude.rnf objectTypeNames+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf workflowId+      `Prelude.seq` Prelude.rnf domainName+      `Prelude.seq` Prelude.rnf uri+      `Prelude.seq` Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf lastUpdatedAt
+ gen/Amazonka/CustomerProfiles/Types/ListProfileObjectTypeItem.hs view
@@ -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.CustomerProfiles.Types.ListProfileObjectTypeItem+-- Copyright   : (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.CustomerProfiles.Types.ListProfileObjectTypeItem where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A ProfileObjectType instance.+--+-- /See:/ 'newListProfileObjectTypeItem' smart constructor.+data ListProfileObjectTypeItem = ListProfileObjectTypeItem'+  { -- | The timestamp of when the domain was created.+    createdAt :: Prelude.Maybe Data.POSIX,+    -- | The timestamp of when the domain was most recently edited.+    lastUpdatedAt :: Prelude.Maybe Data.POSIX,+    -- | The tags used to organize, track, or control access for this resource.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The name of the profile object type.+    objectTypeName :: Prelude.Text,+    -- | Description of the profile object type.+    description :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListProfileObjectTypeItem' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'createdAt', 'listProfileObjectTypeItem_createdAt' - The timestamp of when the domain was created.+--+-- 'lastUpdatedAt', 'listProfileObjectTypeItem_lastUpdatedAt' - The timestamp of when the domain was most recently edited.+--+-- 'tags', 'listProfileObjectTypeItem_tags' - The tags used to organize, track, or control access for this resource.+--+-- 'objectTypeName', 'listProfileObjectTypeItem_objectTypeName' - The name of the profile object type.+--+-- 'description', 'listProfileObjectTypeItem_description' - Description of the profile object type.+newListProfileObjectTypeItem ::+  -- | 'objectTypeName'+  Prelude.Text ->+  -- | 'description'+  Prelude.Text ->+  ListProfileObjectTypeItem+newListProfileObjectTypeItem+  pObjectTypeName_+  pDescription_ =+    ListProfileObjectTypeItem'+      { createdAt =+          Prelude.Nothing,+        lastUpdatedAt = Prelude.Nothing,+        tags = Prelude.Nothing,+        objectTypeName = pObjectTypeName_,+        description = pDescription_+      }++-- | The timestamp of when the domain was created.+listProfileObjectTypeItem_createdAt :: Lens.Lens' ListProfileObjectTypeItem (Prelude.Maybe Prelude.UTCTime)+listProfileObjectTypeItem_createdAt = Lens.lens (\ListProfileObjectTypeItem' {createdAt} -> createdAt) (\s@ListProfileObjectTypeItem' {} a -> s {createdAt = a} :: ListProfileObjectTypeItem) Prelude.. Lens.mapping Data._Time++-- | The timestamp of when the domain was most recently edited.+listProfileObjectTypeItem_lastUpdatedAt :: Lens.Lens' ListProfileObjectTypeItem (Prelude.Maybe Prelude.UTCTime)+listProfileObjectTypeItem_lastUpdatedAt = Lens.lens (\ListProfileObjectTypeItem' {lastUpdatedAt} -> lastUpdatedAt) (\s@ListProfileObjectTypeItem' {} a -> s {lastUpdatedAt = a} :: ListProfileObjectTypeItem) Prelude.. Lens.mapping Data._Time++-- | The tags used to organize, track, or control access for this resource.+listProfileObjectTypeItem_tags :: Lens.Lens' ListProfileObjectTypeItem (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+listProfileObjectTypeItem_tags = Lens.lens (\ListProfileObjectTypeItem' {tags} -> tags) (\s@ListProfileObjectTypeItem' {} a -> s {tags = a} :: ListProfileObjectTypeItem) Prelude.. Lens.mapping Lens.coerced++-- | The name of the profile object type.+listProfileObjectTypeItem_objectTypeName :: Lens.Lens' ListProfileObjectTypeItem Prelude.Text+listProfileObjectTypeItem_objectTypeName = Lens.lens (\ListProfileObjectTypeItem' {objectTypeName} -> objectTypeName) (\s@ListProfileObjectTypeItem' {} a -> s {objectTypeName = a} :: ListProfileObjectTypeItem)++-- | Description of the profile object type.+listProfileObjectTypeItem_description :: Lens.Lens' ListProfileObjectTypeItem Prelude.Text+listProfileObjectTypeItem_description = Lens.lens (\ListProfileObjectTypeItem' {description} -> description) (\s@ListProfileObjectTypeItem' {} a -> s {description = a} :: ListProfileObjectTypeItem)++instance Data.FromJSON ListProfileObjectTypeItem where+  parseJSON =+    Data.withObject+      "ListProfileObjectTypeItem"+      ( \x ->+          ListProfileObjectTypeItem'+            Prelude.<$> (x Data..:? "CreatedAt")+            Prelude.<*> (x Data..:? "LastUpdatedAt")+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..: "ObjectTypeName")+            Prelude.<*> (x Data..: "Description")+      )++instance Prelude.Hashable ListProfileObjectTypeItem where+  hashWithSalt _salt ListProfileObjectTypeItem' {..} =+    _salt+      `Prelude.hashWithSalt` createdAt+      `Prelude.hashWithSalt` lastUpdatedAt+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` objectTypeName+      `Prelude.hashWithSalt` description++instance Prelude.NFData ListProfileObjectTypeItem where+  rnf ListProfileObjectTypeItem' {..} =+    Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf lastUpdatedAt+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf objectTypeName+      `Prelude.seq` Prelude.rnf description
+ gen/Amazonka/CustomerProfiles/Types/ListProfileObjectTypeTemplateItem.hs view
@@ -0,0 +1,108 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.Types.ListProfileObjectTypeTemplateItem+-- Copyright   : (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.CustomerProfiles.Types.ListProfileObjectTypeTemplateItem where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A ProfileObjectTypeTemplate in a list of ProfileObjectTypeTemplates.+--+-- /See:/ 'newListProfileObjectTypeTemplateItem' smart constructor.+data ListProfileObjectTypeTemplateItem = ListProfileObjectTypeTemplateItem'+  { -- | The name of the source of the object template.+    sourceName :: Prelude.Maybe Prelude.Text,+    -- | The source of the object template.+    sourceObject :: Prelude.Maybe Prelude.Text,+    -- | A unique identifier for the object template.+    templateId :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListProfileObjectTypeTemplateItem' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'sourceName', 'listProfileObjectTypeTemplateItem_sourceName' - The name of the source of the object template.+--+-- 'sourceObject', 'listProfileObjectTypeTemplateItem_sourceObject' - The source of the object template.+--+-- 'templateId', 'listProfileObjectTypeTemplateItem_templateId' - A unique identifier for the object template.+newListProfileObjectTypeTemplateItem ::+  ListProfileObjectTypeTemplateItem+newListProfileObjectTypeTemplateItem =+  ListProfileObjectTypeTemplateItem'+    { sourceName =+        Prelude.Nothing,+      sourceObject = Prelude.Nothing,+      templateId = Prelude.Nothing+    }++-- | The name of the source of the object template.+listProfileObjectTypeTemplateItem_sourceName :: Lens.Lens' ListProfileObjectTypeTemplateItem (Prelude.Maybe Prelude.Text)+listProfileObjectTypeTemplateItem_sourceName = Lens.lens (\ListProfileObjectTypeTemplateItem' {sourceName} -> sourceName) (\s@ListProfileObjectTypeTemplateItem' {} a -> s {sourceName = a} :: ListProfileObjectTypeTemplateItem)++-- | The source of the object template.+listProfileObjectTypeTemplateItem_sourceObject :: Lens.Lens' ListProfileObjectTypeTemplateItem (Prelude.Maybe Prelude.Text)+listProfileObjectTypeTemplateItem_sourceObject = Lens.lens (\ListProfileObjectTypeTemplateItem' {sourceObject} -> sourceObject) (\s@ListProfileObjectTypeTemplateItem' {} a -> s {sourceObject = a} :: ListProfileObjectTypeTemplateItem)++-- | A unique identifier for the object template.+listProfileObjectTypeTemplateItem_templateId :: Lens.Lens' ListProfileObjectTypeTemplateItem (Prelude.Maybe Prelude.Text)+listProfileObjectTypeTemplateItem_templateId = Lens.lens (\ListProfileObjectTypeTemplateItem' {templateId} -> templateId) (\s@ListProfileObjectTypeTemplateItem' {} a -> s {templateId = a} :: ListProfileObjectTypeTemplateItem)++instance+  Data.FromJSON+    ListProfileObjectTypeTemplateItem+  where+  parseJSON =+    Data.withObject+      "ListProfileObjectTypeTemplateItem"+      ( \x ->+          ListProfileObjectTypeTemplateItem'+            Prelude.<$> (x Data..:? "SourceName")+            Prelude.<*> (x Data..:? "SourceObject")+            Prelude.<*> (x Data..:? "TemplateId")+      )++instance+  Prelude.Hashable+    ListProfileObjectTypeTemplateItem+  where+  hashWithSalt+    _salt+    ListProfileObjectTypeTemplateItem' {..} =+      _salt+        `Prelude.hashWithSalt` sourceName+        `Prelude.hashWithSalt` sourceObject+        `Prelude.hashWithSalt` templateId++instance+  Prelude.NFData+    ListProfileObjectTypeTemplateItem+  where+  rnf ListProfileObjectTypeTemplateItem' {..} =+    Prelude.rnf sourceName+      `Prelude.seq` Prelude.rnf sourceObject+      `Prelude.seq` Prelude.rnf templateId
+ gen/Amazonka/CustomerProfiles/Types/ListProfileObjectsItem.hs view
@@ -0,0 +1,99 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.Types.ListProfileObjectsItem+-- Copyright   : (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.CustomerProfiles.Types.ListProfileObjectsItem where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A ProfileObject in a list of ProfileObjects.+--+-- /See:/ 'newListProfileObjectsItem' smart constructor.+data ListProfileObjectsItem = ListProfileObjectsItem'+  { -- | A JSON representation of a ProfileObject that belongs to a profile.+    object' :: Prelude.Maybe Prelude.Text,+    -- | Specifies the kind of object being added to a profile, such as+    -- \"Salesforce-Account.\"+    objectTypeName :: Prelude.Maybe Prelude.Text,+    -- | The unique identifier of the ProfileObject generated by the service.+    profileObjectUniqueKey :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListProfileObjectsItem' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'object'', 'listProfileObjectsItem_object' - A JSON representation of a ProfileObject that belongs to a profile.+--+-- 'objectTypeName', 'listProfileObjectsItem_objectTypeName' - Specifies the kind of object being added to a profile, such as+-- \"Salesforce-Account.\"+--+-- 'profileObjectUniqueKey', 'listProfileObjectsItem_profileObjectUniqueKey' - The unique identifier of the ProfileObject generated by the service.+newListProfileObjectsItem ::+  ListProfileObjectsItem+newListProfileObjectsItem =+  ListProfileObjectsItem'+    { object' = Prelude.Nothing,+      objectTypeName = Prelude.Nothing,+      profileObjectUniqueKey = Prelude.Nothing+    }++-- | A JSON representation of a ProfileObject that belongs to a profile.+listProfileObjectsItem_object :: Lens.Lens' ListProfileObjectsItem (Prelude.Maybe Prelude.Text)+listProfileObjectsItem_object = Lens.lens (\ListProfileObjectsItem' {object'} -> object') (\s@ListProfileObjectsItem' {} a -> s {object' = a} :: ListProfileObjectsItem)++-- | Specifies the kind of object being added to a profile, such as+-- \"Salesforce-Account.\"+listProfileObjectsItem_objectTypeName :: Lens.Lens' ListProfileObjectsItem (Prelude.Maybe Prelude.Text)+listProfileObjectsItem_objectTypeName = Lens.lens (\ListProfileObjectsItem' {objectTypeName} -> objectTypeName) (\s@ListProfileObjectsItem' {} a -> s {objectTypeName = a} :: ListProfileObjectsItem)++-- | The unique identifier of the ProfileObject generated by the service.+listProfileObjectsItem_profileObjectUniqueKey :: Lens.Lens' ListProfileObjectsItem (Prelude.Maybe Prelude.Text)+listProfileObjectsItem_profileObjectUniqueKey = Lens.lens (\ListProfileObjectsItem' {profileObjectUniqueKey} -> profileObjectUniqueKey) (\s@ListProfileObjectsItem' {} a -> s {profileObjectUniqueKey = a} :: ListProfileObjectsItem)++instance Data.FromJSON ListProfileObjectsItem where+  parseJSON =+    Data.withObject+      "ListProfileObjectsItem"+      ( \x ->+          ListProfileObjectsItem'+            Prelude.<$> (x Data..:? "Object")+            Prelude.<*> (x Data..:? "ObjectTypeName")+            Prelude.<*> (x Data..:? "ProfileObjectUniqueKey")+      )++instance Prelude.Hashable ListProfileObjectsItem where+  hashWithSalt _salt ListProfileObjectsItem' {..} =+    _salt+      `Prelude.hashWithSalt` object'+      `Prelude.hashWithSalt` objectTypeName+      `Prelude.hashWithSalt` profileObjectUniqueKey++instance Prelude.NFData ListProfileObjectsItem where+  rnf ListProfileObjectsItem' {..} =+    Prelude.rnf object'+      `Prelude.seq` Prelude.rnf objectTypeName+      `Prelude.seq` Prelude.rnf profileObjectUniqueKey
+ gen/Amazonka/CustomerProfiles/Types/ListWorkflowsItem.hs view
@@ -0,0 +1,152 @@+{-# 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.CustomerProfiles.Types.ListWorkflowsItem+-- Copyright   : (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.CustomerProfiles.Types.ListWorkflowsItem where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types.Status+import Amazonka.CustomerProfiles.Types.WorkflowType+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A workflow in list of workflows.+--+-- /See:/ 'newListWorkflowsItem' smart constructor.+data ListWorkflowsItem = ListWorkflowsItem'+  { -- | The type of workflow. The only supported value is APPFLOW_INTEGRATION.+    workflowType :: WorkflowType,+    -- | Unique identifier for the workflow.+    workflowId :: Prelude.Text,+    -- | Status of workflow execution.+    status :: Status,+    -- | Description for workflow execution status.+    statusDescription :: Prelude.Text,+    -- | Creation timestamp for workflow.+    createdAt :: Data.POSIX,+    -- | Last updated timestamp for workflow.+    lastUpdatedAt :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListWorkflowsItem' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'workflowType', 'listWorkflowsItem_workflowType' - The type of workflow. The only supported value is APPFLOW_INTEGRATION.+--+-- 'workflowId', 'listWorkflowsItem_workflowId' - Unique identifier for the workflow.+--+-- 'status', 'listWorkflowsItem_status' - Status of workflow execution.+--+-- 'statusDescription', 'listWorkflowsItem_statusDescription' - Description for workflow execution status.+--+-- 'createdAt', 'listWorkflowsItem_createdAt' - Creation timestamp for workflow.+--+-- 'lastUpdatedAt', 'listWorkflowsItem_lastUpdatedAt' - Last updated timestamp for workflow.+newListWorkflowsItem ::+  -- | 'workflowType'+  WorkflowType ->+  -- | 'workflowId'+  Prelude.Text ->+  -- | 'status'+  Status ->+  -- | 'statusDescription'+  Prelude.Text ->+  -- | 'createdAt'+  Prelude.UTCTime ->+  -- | 'lastUpdatedAt'+  Prelude.UTCTime ->+  ListWorkflowsItem+newListWorkflowsItem+  pWorkflowType_+  pWorkflowId_+  pStatus_+  pStatusDescription_+  pCreatedAt_+  pLastUpdatedAt_ =+    ListWorkflowsItem'+      { workflowType = pWorkflowType_,+        workflowId = pWorkflowId_,+        status = pStatus_,+        statusDescription = pStatusDescription_,+        createdAt = Data._Time Lens.# pCreatedAt_,+        lastUpdatedAt = Data._Time Lens.# pLastUpdatedAt_+      }++-- | The type of workflow. The only supported value is APPFLOW_INTEGRATION.+listWorkflowsItem_workflowType :: Lens.Lens' ListWorkflowsItem WorkflowType+listWorkflowsItem_workflowType = Lens.lens (\ListWorkflowsItem' {workflowType} -> workflowType) (\s@ListWorkflowsItem' {} a -> s {workflowType = a} :: ListWorkflowsItem)++-- | Unique identifier for the workflow.+listWorkflowsItem_workflowId :: Lens.Lens' ListWorkflowsItem Prelude.Text+listWorkflowsItem_workflowId = Lens.lens (\ListWorkflowsItem' {workflowId} -> workflowId) (\s@ListWorkflowsItem' {} a -> s {workflowId = a} :: ListWorkflowsItem)++-- | Status of workflow execution.+listWorkflowsItem_status :: Lens.Lens' ListWorkflowsItem Status+listWorkflowsItem_status = Lens.lens (\ListWorkflowsItem' {status} -> status) (\s@ListWorkflowsItem' {} a -> s {status = a} :: ListWorkflowsItem)++-- | Description for workflow execution status.+listWorkflowsItem_statusDescription :: Lens.Lens' ListWorkflowsItem Prelude.Text+listWorkflowsItem_statusDescription = Lens.lens (\ListWorkflowsItem' {statusDescription} -> statusDescription) (\s@ListWorkflowsItem' {} a -> s {statusDescription = a} :: ListWorkflowsItem)++-- | Creation timestamp for workflow.+listWorkflowsItem_createdAt :: Lens.Lens' ListWorkflowsItem Prelude.UTCTime+listWorkflowsItem_createdAt = Lens.lens (\ListWorkflowsItem' {createdAt} -> createdAt) (\s@ListWorkflowsItem' {} a -> s {createdAt = a} :: ListWorkflowsItem) Prelude.. Data._Time++-- | Last updated timestamp for workflow.+listWorkflowsItem_lastUpdatedAt :: Lens.Lens' ListWorkflowsItem Prelude.UTCTime+listWorkflowsItem_lastUpdatedAt = Lens.lens (\ListWorkflowsItem' {lastUpdatedAt} -> lastUpdatedAt) (\s@ListWorkflowsItem' {} a -> s {lastUpdatedAt = a} :: ListWorkflowsItem) Prelude.. Data._Time++instance Data.FromJSON ListWorkflowsItem where+  parseJSON =+    Data.withObject+      "ListWorkflowsItem"+      ( \x ->+          ListWorkflowsItem'+            Prelude.<$> (x Data..: "WorkflowType")+            Prelude.<*> (x Data..: "WorkflowId")+            Prelude.<*> (x Data..: "Status")+            Prelude.<*> (x Data..: "StatusDescription")+            Prelude.<*> (x Data..: "CreatedAt")+            Prelude.<*> (x Data..: "LastUpdatedAt")+      )++instance Prelude.Hashable ListWorkflowsItem where+  hashWithSalt _salt ListWorkflowsItem' {..} =+    _salt+      `Prelude.hashWithSalt` workflowType+      `Prelude.hashWithSalt` workflowId+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` statusDescription+      `Prelude.hashWithSalt` createdAt+      `Prelude.hashWithSalt` lastUpdatedAt++instance Prelude.NFData ListWorkflowsItem where+  rnf ListWorkflowsItem' {..} =+    Prelude.rnf workflowType+      `Prelude.seq` Prelude.rnf workflowId+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf statusDescription+      `Prelude.seq` Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf lastUpdatedAt
+ gen/Amazonka/CustomerProfiles/Types/LogicalOperator.hs view
@@ -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.CustomerProfiles.Types.LogicalOperator+-- Copyright   : (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.CustomerProfiles.Types.LogicalOperator+  ( LogicalOperator+      ( ..,+        LogicalOperator_AND,+        LogicalOperator_OR+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype LogicalOperator = LogicalOperator'+  { fromLogicalOperator ::+      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 LogicalOperator_AND :: LogicalOperator+pattern LogicalOperator_AND = LogicalOperator' "AND"++pattern LogicalOperator_OR :: LogicalOperator+pattern LogicalOperator_OR = LogicalOperator' "OR"++{-# COMPLETE+  LogicalOperator_AND,+  LogicalOperator_OR,+  LogicalOperator'+  #-}
+ gen/Amazonka/CustomerProfiles/Types/MarketoConnectorOperator.hs view
@@ -0,0 +1,141 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.Types.MarketoConnectorOperator+-- Copyright   : (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.CustomerProfiles.Types.MarketoConnectorOperator+  ( MarketoConnectorOperator+      ( ..,+        MarketoConnectorOperator_ADDITION,+        MarketoConnectorOperator_BETWEEN,+        MarketoConnectorOperator_DIVISION,+        MarketoConnectorOperator_GREATER_THAN,+        MarketoConnectorOperator_LESS_THAN,+        MarketoConnectorOperator_MASK_ALL,+        MarketoConnectorOperator_MASK_FIRST_N,+        MarketoConnectorOperator_MASK_LAST_N,+        MarketoConnectorOperator_MULTIPLICATION,+        MarketoConnectorOperator_NO_OP,+        MarketoConnectorOperator_PROJECTION,+        MarketoConnectorOperator_SUBTRACTION,+        MarketoConnectorOperator_VALIDATE_NON_NEGATIVE,+        MarketoConnectorOperator_VALIDATE_NON_NULL,+        MarketoConnectorOperator_VALIDATE_NON_ZERO,+        MarketoConnectorOperator_VALIDATE_NUMERIC+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype MarketoConnectorOperator = MarketoConnectorOperator'+  { fromMarketoConnectorOperator ::+      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 MarketoConnectorOperator_ADDITION :: MarketoConnectorOperator+pattern MarketoConnectorOperator_ADDITION = MarketoConnectorOperator' "ADDITION"++pattern MarketoConnectorOperator_BETWEEN :: MarketoConnectorOperator+pattern MarketoConnectorOperator_BETWEEN = MarketoConnectorOperator' "BETWEEN"++pattern MarketoConnectorOperator_DIVISION :: MarketoConnectorOperator+pattern MarketoConnectorOperator_DIVISION = MarketoConnectorOperator' "DIVISION"++pattern MarketoConnectorOperator_GREATER_THAN :: MarketoConnectorOperator+pattern MarketoConnectorOperator_GREATER_THAN = MarketoConnectorOperator' "GREATER_THAN"++pattern MarketoConnectorOperator_LESS_THAN :: MarketoConnectorOperator+pattern MarketoConnectorOperator_LESS_THAN = MarketoConnectorOperator' "LESS_THAN"++pattern MarketoConnectorOperator_MASK_ALL :: MarketoConnectorOperator+pattern MarketoConnectorOperator_MASK_ALL = MarketoConnectorOperator' "MASK_ALL"++pattern MarketoConnectorOperator_MASK_FIRST_N :: MarketoConnectorOperator+pattern MarketoConnectorOperator_MASK_FIRST_N = MarketoConnectorOperator' "MASK_FIRST_N"++pattern MarketoConnectorOperator_MASK_LAST_N :: MarketoConnectorOperator+pattern MarketoConnectorOperator_MASK_LAST_N = MarketoConnectorOperator' "MASK_LAST_N"++pattern MarketoConnectorOperator_MULTIPLICATION :: MarketoConnectorOperator+pattern MarketoConnectorOperator_MULTIPLICATION = MarketoConnectorOperator' "MULTIPLICATION"++pattern MarketoConnectorOperator_NO_OP :: MarketoConnectorOperator+pattern MarketoConnectorOperator_NO_OP = MarketoConnectorOperator' "NO_OP"++pattern MarketoConnectorOperator_PROJECTION :: MarketoConnectorOperator+pattern MarketoConnectorOperator_PROJECTION = MarketoConnectorOperator' "PROJECTION"++pattern MarketoConnectorOperator_SUBTRACTION :: MarketoConnectorOperator+pattern MarketoConnectorOperator_SUBTRACTION = MarketoConnectorOperator' "SUBTRACTION"++pattern MarketoConnectorOperator_VALIDATE_NON_NEGATIVE :: MarketoConnectorOperator+pattern MarketoConnectorOperator_VALIDATE_NON_NEGATIVE = MarketoConnectorOperator' "VALIDATE_NON_NEGATIVE"++pattern MarketoConnectorOperator_VALIDATE_NON_NULL :: MarketoConnectorOperator+pattern MarketoConnectorOperator_VALIDATE_NON_NULL = MarketoConnectorOperator' "VALIDATE_NON_NULL"++pattern MarketoConnectorOperator_VALIDATE_NON_ZERO :: MarketoConnectorOperator+pattern MarketoConnectorOperator_VALIDATE_NON_ZERO = MarketoConnectorOperator' "VALIDATE_NON_ZERO"++pattern MarketoConnectorOperator_VALIDATE_NUMERIC :: MarketoConnectorOperator+pattern MarketoConnectorOperator_VALIDATE_NUMERIC = MarketoConnectorOperator' "VALIDATE_NUMERIC"++{-# COMPLETE+  MarketoConnectorOperator_ADDITION,+  MarketoConnectorOperator_BETWEEN,+  MarketoConnectorOperator_DIVISION,+  MarketoConnectorOperator_GREATER_THAN,+  MarketoConnectorOperator_LESS_THAN,+  MarketoConnectorOperator_MASK_ALL,+  MarketoConnectorOperator_MASK_FIRST_N,+  MarketoConnectorOperator_MASK_LAST_N,+  MarketoConnectorOperator_MULTIPLICATION,+  MarketoConnectorOperator_NO_OP,+  MarketoConnectorOperator_PROJECTION,+  MarketoConnectorOperator_SUBTRACTION,+  MarketoConnectorOperator_VALIDATE_NON_NEGATIVE,+  MarketoConnectorOperator_VALIDATE_NON_NULL,+  MarketoConnectorOperator_VALIDATE_NON_ZERO,+  MarketoConnectorOperator_VALIDATE_NUMERIC,+  MarketoConnectorOperator'+  #-}
+ gen/Amazonka/CustomerProfiles/Types/MarketoSourceProperties.hs view
@@ -0,0 +1,69 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.Types.MarketoSourceProperties+-- Copyright   : (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.CustomerProfiles.Types.MarketoSourceProperties 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 properties that are applied when Marketo is being used as a source.+--+-- /See:/ 'newMarketoSourceProperties' smart constructor.+data MarketoSourceProperties = MarketoSourceProperties'+  { -- | The object specified in the Marketo flow source.+    object' :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'MarketoSourceProperties' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'object'', 'marketoSourceProperties_object' - The object specified in the Marketo flow source.+newMarketoSourceProperties ::+  -- | 'object''+  Prelude.Text ->+  MarketoSourceProperties+newMarketoSourceProperties pObject_ =+  MarketoSourceProperties' {object' = pObject_}++-- | The object specified in the Marketo flow source.+marketoSourceProperties_object :: Lens.Lens' MarketoSourceProperties Prelude.Text+marketoSourceProperties_object = Lens.lens (\MarketoSourceProperties' {object'} -> object') (\s@MarketoSourceProperties' {} a -> s {object' = a} :: MarketoSourceProperties)++instance Prelude.Hashable MarketoSourceProperties where+  hashWithSalt _salt MarketoSourceProperties' {..} =+    _salt `Prelude.hashWithSalt` object'++instance Prelude.NFData MarketoSourceProperties where+  rnf MarketoSourceProperties' {..} =+    Prelude.rnf object'++instance Data.ToJSON MarketoSourceProperties where+  toJSON MarketoSourceProperties' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("Object" Data..= object')]+      )
+ gen/Amazonka/CustomerProfiles/Types/MatchItem.hs view
@@ -0,0 +1,117 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.Types.MatchItem+-- Copyright   : (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.CustomerProfiles.Types.MatchItem 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 Match group object.+--+-- /See:/ 'newMatchItem' smart constructor.+data MatchItem = MatchItem'+  { -- | A number between 0 and 1, where a higher score means higher similarity.+    -- Examining match confidence scores lets you distinguish between groups of+    -- similar records in which the system is highly confident (which you may+    -- decide to merge), groups of similar records about which the system is+    -- uncertain (which you may decide to have reviewed by a human), and groups+    -- of similar records that the system deems to be unlikely (which you may+    -- decide to reject). Given confidence scores vary as per the data input,+    -- it should not be used an absolute measure of matching quality.+    confidenceScore :: Prelude.Maybe Prelude.Double,+    -- | The unique identifiers for this group of profiles that match.+    matchId :: Prelude.Maybe Prelude.Text,+    -- | A list of identifiers for profiles that match.+    profileIds :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'MatchItem' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'confidenceScore', 'matchItem_confidenceScore' - A number between 0 and 1, where a higher score means higher similarity.+-- Examining match confidence scores lets you distinguish between groups of+-- similar records in which the system is highly confident (which you may+-- decide to merge), groups of similar records about which the system is+-- uncertain (which you may decide to have reviewed by a human), and groups+-- of similar records that the system deems to be unlikely (which you may+-- decide to reject). Given confidence scores vary as per the data input,+-- it should not be used an absolute measure of matching quality.+--+-- 'matchId', 'matchItem_matchId' - The unique identifiers for this group of profiles that match.+--+-- 'profileIds', 'matchItem_profileIds' - A list of identifiers for profiles that match.+newMatchItem ::+  MatchItem+newMatchItem =+  MatchItem'+    { confidenceScore = Prelude.Nothing,+      matchId = Prelude.Nothing,+      profileIds = Prelude.Nothing+    }++-- | A number between 0 and 1, where a higher score means higher similarity.+-- Examining match confidence scores lets you distinguish between groups of+-- similar records in which the system is highly confident (which you may+-- decide to merge), groups of similar records about which the system is+-- uncertain (which you may decide to have reviewed by a human), and groups+-- of similar records that the system deems to be unlikely (which you may+-- decide to reject). Given confidence scores vary as per the data input,+-- it should not be used an absolute measure of matching quality.+matchItem_confidenceScore :: Lens.Lens' MatchItem (Prelude.Maybe Prelude.Double)+matchItem_confidenceScore = Lens.lens (\MatchItem' {confidenceScore} -> confidenceScore) (\s@MatchItem' {} a -> s {confidenceScore = a} :: MatchItem)++-- | The unique identifiers for this group of profiles that match.+matchItem_matchId :: Lens.Lens' MatchItem (Prelude.Maybe Prelude.Text)+matchItem_matchId = Lens.lens (\MatchItem' {matchId} -> matchId) (\s@MatchItem' {} a -> s {matchId = a} :: MatchItem)++-- | A list of identifiers for profiles that match.+matchItem_profileIds :: Lens.Lens' MatchItem (Prelude.Maybe [Prelude.Text])+matchItem_profileIds = Lens.lens (\MatchItem' {profileIds} -> profileIds) (\s@MatchItem' {} a -> s {profileIds = a} :: MatchItem) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON MatchItem where+  parseJSON =+    Data.withObject+      "MatchItem"+      ( \x ->+          MatchItem'+            Prelude.<$> (x Data..:? "ConfidenceScore")+            Prelude.<*> (x Data..:? "MatchId")+            Prelude.<*> (x Data..:? "ProfileIds" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable MatchItem where+  hashWithSalt _salt MatchItem' {..} =+    _salt+      `Prelude.hashWithSalt` confidenceScore+      `Prelude.hashWithSalt` matchId+      `Prelude.hashWithSalt` profileIds++instance Prelude.NFData MatchItem where+  rnf MatchItem' {..} =+    Prelude.rnf confidenceScore+      `Prelude.seq` Prelude.rnf matchId+      `Prelude.seq` Prelude.rnf profileIds
+ gen/Amazonka/CustomerProfiles/Types/MatchingRequest.hs view
@@ -0,0 +1,119 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.Types.MatchingRequest+-- Copyright   : (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.CustomerProfiles.Types.MatchingRequest where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types.AutoMerging+import Amazonka.CustomerProfiles.Types.ExportingConfig+import Amazonka.CustomerProfiles.Types.JobSchedule+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The flag that enables the matching process of duplicate profiles.+--+-- /See:/ 'newMatchingRequest' smart constructor.+data MatchingRequest = MatchingRequest'+  { -- | Configuration information about the auto-merging process.+    autoMerging :: Prelude.Maybe AutoMerging,+    -- | Configuration information for exporting Identity Resolution results, for+    -- example, to an S3 bucket.+    exportingConfig :: Prelude.Maybe ExportingConfig,+    -- | The day and time when do you want to start the Identity Resolution Job+    -- every week.+    jobSchedule :: Prelude.Maybe JobSchedule,+    -- | The flag that enables the matching process of duplicate profiles.+    enabled :: Prelude.Bool+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'MatchingRequest' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'autoMerging', 'matchingRequest_autoMerging' - Configuration information about the auto-merging process.+--+-- 'exportingConfig', 'matchingRequest_exportingConfig' - Configuration information for exporting Identity Resolution results, for+-- example, to an S3 bucket.+--+-- 'jobSchedule', 'matchingRequest_jobSchedule' - The day and time when do you want to start the Identity Resolution Job+-- every week.+--+-- 'enabled', 'matchingRequest_enabled' - The flag that enables the matching process of duplicate profiles.+newMatchingRequest ::+  -- | 'enabled'+  Prelude.Bool ->+  MatchingRequest+newMatchingRequest pEnabled_ =+  MatchingRequest'+    { autoMerging = Prelude.Nothing,+      exportingConfig = Prelude.Nothing,+      jobSchedule = Prelude.Nothing,+      enabled = pEnabled_+    }++-- | Configuration information about the auto-merging process.+matchingRequest_autoMerging :: Lens.Lens' MatchingRequest (Prelude.Maybe AutoMerging)+matchingRequest_autoMerging = Lens.lens (\MatchingRequest' {autoMerging} -> autoMerging) (\s@MatchingRequest' {} a -> s {autoMerging = a} :: MatchingRequest)++-- | Configuration information for exporting Identity Resolution results, for+-- example, to an S3 bucket.+matchingRequest_exportingConfig :: Lens.Lens' MatchingRequest (Prelude.Maybe ExportingConfig)+matchingRequest_exportingConfig = Lens.lens (\MatchingRequest' {exportingConfig} -> exportingConfig) (\s@MatchingRequest' {} a -> s {exportingConfig = a} :: MatchingRequest)++-- | The day and time when do you want to start the Identity Resolution Job+-- every week.+matchingRequest_jobSchedule :: Lens.Lens' MatchingRequest (Prelude.Maybe JobSchedule)+matchingRequest_jobSchedule = Lens.lens (\MatchingRequest' {jobSchedule} -> jobSchedule) (\s@MatchingRequest' {} a -> s {jobSchedule = a} :: MatchingRequest)++-- | The flag that enables the matching process of duplicate profiles.+matchingRequest_enabled :: Lens.Lens' MatchingRequest Prelude.Bool+matchingRequest_enabled = Lens.lens (\MatchingRequest' {enabled} -> enabled) (\s@MatchingRequest' {} a -> s {enabled = a} :: MatchingRequest)++instance Prelude.Hashable MatchingRequest where+  hashWithSalt _salt MatchingRequest' {..} =+    _salt+      `Prelude.hashWithSalt` autoMerging+      `Prelude.hashWithSalt` exportingConfig+      `Prelude.hashWithSalt` jobSchedule+      `Prelude.hashWithSalt` enabled++instance Prelude.NFData MatchingRequest where+  rnf MatchingRequest' {..} =+    Prelude.rnf autoMerging+      `Prelude.seq` Prelude.rnf exportingConfig+      `Prelude.seq` Prelude.rnf jobSchedule+      `Prelude.seq` Prelude.rnf enabled++instance Data.ToJSON MatchingRequest where+  toJSON MatchingRequest' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("AutoMerging" Data..=) Prelude.<$> autoMerging,+            ("ExportingConfig" Data..=)+              Prelude.<$> exportingConfig,+            ("JobSchedule" Data..=) Prelude.<$> jobSchedule,+            Prelude.Just ("Enabled" Data..= enabled)+          ]+      )
+ gen/Amazonka/CustomerProfiles/Types/MatchingResponse.hs view
@@ -0,0 +1,117 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.Types.MatchingResponse+-- Copyright   : (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.CustomerProfiles.Types.MatchingResponse where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types.AutoMerging+import Amazonka.CustomerProfiles.Types.ExportingConfig+import Amazonka.CustomerProfiles.Types.JobSchedule+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The flag that enables the matching process of duplicate profiles.+--+-- /See:/ 'newMatchingResponse' smart constructor.+data MatchingResponse = MatchingResponse'+  { -- | Configuration information about the auto-merging process.+    autoMerging :: Prelude.Maybe AutoMerging,+    -- | The flag that enables the matching process of duplicate profiles.+    enabled :: Prelude.Maybe Prelude.Bool,+    -- | Configuration information for exporting Identity Resolution results, for+    -- example, to an S3 bucket.+    exportingConfig :: Prelude.Maybe ExportingConfig,+    -- | The day and time when do you want to start the Identity Resolution Job+    -- every week.+    jobSchedule :: Prelude.Maybe JobSchedule+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'MatchingResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'autoMerging', 'matchingResponse_autoMerging' - Configuration information about the auto-merging process.+--+-- 'enabled', 'matchingResponse_enabled' - The flag that enables the matching process of duplicate profiles.+--+-- 'exportingConfig', 'matchingResponse_exportingConfig' - Configuration information for exporting Identity Resolution results, for+-- example, to an S3 bucket.+--+-- 'jobSchedule', 'matchingResponse_jobSchedule' - The day and time when do you want to start the Identity Resolution Job+-- every week.+newMatchingResponse ::+  MatchingResponse+newMatchingResponse =+  MatchingResponse'+    { autoMerging = Prelude.Nothing,+      enabled = Prelude.Nothing,+      exportingConfig = Prelude.Nothing,+      jobSchedule = Prelude.Nothing+    }++-- | Configuration information about the auto-merging process.+matchingResponse_autoMerging :: Lens.Lens' MatchingResponse (Prelude.Maybe AutoMerging)+matchingResponse_autoMerging = Lens.lens (\MatchingResponse' {autoMerging} -> autoMerging) (\s@MatchingResponse' {} a -> s {autoMerging = a} :: MatchingResponse)++-- | The flag that enables the matching process of duplicate profiles.+matchingResponse_enabled :: Lens.Lens' MatchingResponse (Prelude.Maybe Prelude.Bool)+matchingResponse_enabled = Lens.lens (\MatchingResponse' {enabled} -> enabled) (\s@MatchingResponse' {} a -> s {enabled = a} :: MatchingResponse)++-- | Configuration information for exporting Identity Resolution results, for+-- example, to an S3 bucket.+matchingResponse_exportingConfig :: Lens.Lens' MatchingResponse (Prelude.Maybe ExportingConfig)+matchingResponse_exportingConfig = Lens.lens (\MatchingResponse' {exportingConfig} -> exportingConfig) (\s@MatchingResponse' {} a -> s {exportingConfig = a} :: MatchingResponse)++-- | The day and time when do you want to start the Identity Resolution Job+-- every week.+matchingResponse_jobSchedule :: Lens.Lens' MatchingResponse (Prelude.Maybe JobSchedule)+matchingResponse_jobSchedule = Lens.lens (\MatchingResponse' {jobSchedule} -> jobSchedule) (\s@MatchingResponse' {} a -> s {jobSchedule = a} :: MatchingResponse)++instance Data.FromJSON MatchingResponse where+  parseJSON =+    Data.withObject+      "MatchingResponse"+      ( \x ->+          MatchingResponse'+            Prelude.<$> (x Data..:? "AutoMerging")+            Prelude.<*> (x Data..:? "Enabled")+            Prelude.<*> (x Data..:? "ExportingConfig")+            Prelude.<*> (x Data..:? "JobSchedule")+      )++instance Prelude.Hashable MatchingResponse where+  hashWithSalt _salt MatchingResponse' {..} =+    _salt+      `Prelude.hashWithSalt` autoMerging+      `Prelude.hashWithSalt` enabled+      `Prelude.hashWithSalt` exportingConfig+      `Prelude.hashWithSalt` jobSchedule++instance Prelude.NFData MatchingResponse where+  rnf MatchingResponse' {..} =+    Prelude.rnf autoMerging+      `Prelude.seq` Prelude.rnf enabled+      `Prelude.seq` Prelude.rnf exportingConfig+      `Prelude.seq` Prelude.rnf jobSchedule
+ gen/Amazonka/CustomerProfiles/Types/ObjectFilter.hs view
@@ -0,0 +1,99 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.Types.ObjectFilter+-- Copyright   : (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.CustomerProfiles.Types.ObjectFilter 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 filter applied to ListProfileObjects response to include profile+-- objects with the specified index values. This filter is only supported+-- for ObjectTypeName _asset, _case and _order.+--+-- /See:/ 'newObjectFilter' smart constructor.+data ObjectFilter = ObjectFilter'+  { -- | A searchable identifier of a standard profile object. The predefined+    -- keys you can use to search for _asset include: _assetId, _assetName,+    -- _serialNumber. The predefined keys you can use to search for _case+    -- include: _caseId. The predefined keys you can use to search for _order+    -- include: _orderId.+    keyName :: Prelude.Text,+    -- | A list of key values.+    values :: [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ObjectFilter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'keyName', 'objectFilter_keyName' - A searchable identifier of a standard profile object. The predefined+-- keys you can use to search for _asset include: _assetId, _assetName,+-- _serialNumber. The predefined keys you can use to search for _case+-- include: _caseId. The predefined keys you can use to search for _order+-- include: _orderId.+--+-- 'values', 'objectFilter_values' - A list of key values.+newObjectFilter ::+  -- | 'keyName'+  Prelude.Text ->+  ObjectFilter+newObjectFilter pKeyName_ =+  ObjectFilter'+    { keyName = pKeyName_,+      values = Prelude.mempty+    }++-- | A searchable identifier of a standard profile object. The predefined+-- keys you can use to search for _asset include: _assetId, _assetName,+-- _serialNumber. The predefined keys you can use to search for _case+-- include: _caseId. The predefined keys you can use to search for _order+-- include: _orderId.+objectFilter_keyName :: Lens.Lens' ObjectFilter Prelude.Text+objectFilter_keyName = Lens.lens (\ObjectFilter' {keyName} -> keyName) (\s@ObjectFilter' {} a -> s {keyName = a} :: ObjectFilter)++-- | A list of key values.+objectFilter_values :: Lens.Lens' ObjectFilter [Prelude.Text]+objectFilter_values = Lens.lens (\ObjectFilter' {values} -> values) (\s@ObjectFilter' {} a -> s {values = a} :: ObjectFilter) Prelude.. Lens.coerced++instance Prelude.Hashable ObjectFilter where+  hashWithSalt _salt ObjectFilter' {..} =+    _salt+      `Prelude.hashWithSalt` keyName+      `Prelude.hashWithSalt` values++instance Prelude.NFData ObjectFilter where+  rnf ObjectFilter' {..} =+    Prelude.rnf keyName+      `Prelude.seq` Prelude.rnf values++instance Data.ToJSON ObjectFilter where+  toJSON ObjectFilter' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("KeyName" Data..= keyName),+            Prelude.Just ("Values" Data..= values)+          ]+      )
+ gen/Amazonka/CustomerProfiles/Types/ObjectTypeField.hs view
@@ -0,0 +1,119 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.Types.ObjectTypeField+-- Copyright   : (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.CustomerProfiles.Types.ObjectTypeField where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types.FieldContentType+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Represents a field in a ProfileObjectType.+--+-- /See:/ 'newObjectTypeField' smart constructor.+data ObjectTypeField = ObjectTypeField'+  { -- | The content type of the field. Used for determining equality when+    -- searching.+    contentType :: Prelude.Maybe FieldContentType,+    -- | A field of a ProfileObject. For example: _source.FirstName, where+    -- “_source” is a ProfileObjectType of a Zendesk user and “FirstName” is a+    -- field in that ObjectType.+    source :: Prelude.Maybe Prelude.Text,+    -- | The location of the data in the standard ProfileObject model. For+    -- example: _profile.Address.PostalCode.+    target :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ObjectTypeField' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'contentType', 'objectTypeField_contentType' - The content type of the field. Used for determining equality when+-- searching.+--+-- 'source', 'objectTypeField_source' - A field of a ProfileObject. For example: _source.FirstName, where+-- “_source” is a ProfileObjectType of a Zendesk user and “FirstName” is a+-- field in that ObjectType.+--+-- 'target', 'objectTypeField_target' - The location of the data in the standard ProfileObject model. For+-- example: _profile.Address.PostalCode.+newObjectTypeField ::+  ObjectTypeField+newObjectTypeField =+  ObjectTypeField'+    { contentType = Prelude.Nothing,+      source = Prelude.Nothing,+      target = Prelude.Nothing+    }++-- | The content type of the field. Used for determining equality when+-- searching.+objectTypeField_contentType :: Lens.Lens' ObjectTypeField (Prelude.Maybe FieldContentType)+objectTypeField_contentType = Lens.lens (\ObjectTypeField' {contentType} -> contentType) (\s@ObjectTypeField' {} a -> s {contentType = a} :: ObjectTypeField)++-- | A field of a ProfileObject. For example: _source.FirstName, where+-- “_source” is a ProfileObjectType of a Zendesk user and “FirstName” is a+-- field in that ObjectType.+objectTypeField_source :: Lens.Lens' ObjectTypeField (Prelude.Maybe Prelude.Text)+objectTypeField_source = Lens.lens (\ObjectTypeField' {source} -> source) (\s@ObjectTypeField' {} a -> s {source = a} :: ObjectTypeField)++-- | The location of the data in the standard ProfileObject model. For+-- example: _profile.Address.PostalCode.+objectTypeField_target :: Lens.Lens' ObjectTypeField (Prelude.Maybe Prelude.Text)+objectTypeField_target = Lens.lens (\ObjectTypeField' {target} -> target) (\s@ObjectTypeField' {} a -> s {target = a} :: ObjectTypeField)++instance Data.FromJSON ObjectTypeField where+  parseJSON =+    Data.withObject+      "ObjectTypeField"+      ( \x ->+          ObjectTypeField'+            Prelude.<$> (x Data..:? "ContentType")+            Prelude.<*> (x Data..:? "Source")+            Prelude.<*> (x Data..:? "Target")+      )++instance Prelude.Hashable ObjectTypeField where+  hashWithSalt _salt ObjectTypeField' {..} =+    _salt+      `Prelude.hashWithSalt` contentType+      `Prelude.hashWithSalt` source+      `Prelude.hashWithSalt` target++instance Prelude.NFData ObjectTypeField where+  rnf ObjectTypeField' {..} =+    Prelude.rnf contentType+      `Prelude.seq` Prelude.rnf source+      `Prelude.seq` Prelude.rnf target++instance Data.ToJSON ObjectTypeField where+  toJSON ObjectTypeField' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ContentType" Data..=) Prelude.<$> contentType,+            ("Source" Data..=) Prelude.<$> source,+            ("Target" Data..=) Prelude.<$> target+          ]+      )
+ gen/Amazonka/CustomerProfiles/Types/ObjectTypeKey.hs view
@@ -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.CustomerProfiles.Types.ObjectTypeKey+-- Copyright   : (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.CustomerProfiles.Types.ObjectTypeKey where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types.StandardIdentifier+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that defines the Key element of a ProfileObject. A Key is a+-- special element that can be used to search for a customer profile.+--+-- /See:/ 'newObjectTypeKey' smart constructor.+data ObjectTypeKey = ObjectTypeKey'+  { -- | The reference for the key name of the fields map.+    fieldNames :: Prelude.Maybe [Prelude.Text],+    -- | The types of keys that a ProfileObject can have. Each ProfileObject can+    -- have only 1 UNIQUE key but multiple PROFILE keys. PROFILE, ASSET, CASE,+    -- or ORDER means that this key can be used to tie an object to a PROFILE,+    -- ASSET, CASE, or ORDER respectively. UNIQUE means that it can be used to+    -- uniquely identify an object. If a key a is marked as SECONDARY, it will+    -- be used to search for profiles after all other PROFILE keys have been+    -- searched. A LOOKUP_ONLY key is only used to match a profile but is not+    -- persisted to be used for searching of the profile. A NEW_ONLY key is+    -- only used if the profile does not already exist before the object is+    -- ingested, otherwise it is only used for matching objects to profiles.+    standardIdentifiers :: Prelude.Maybe [StandardIdentifier]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ObjectTypeKey' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'fieldNames', 'objectTypeKey_fieldNames' - The reference for the key name of the fields map.+--+-- 'standardIdentifiers', 'objectTypeKey_standardIdentifiers' - The types of keys that a ProfileObject can have. Each ProfileObject can+-- have only 1 UNIQUE key but multiple PROFILE keys. PROFILE, ASSET, CASE,+-- or ORDER means that this key can be used to tie an object to a PROFILE,+-- ASSET, CASE, or ORDER respectively. UNIQUE means that it can be used to+-- uniquely identify an object. If a key a is marked as SECONDARY, it will+-- be used to search for profiles after all other PROFILE keys have been+-- searched. A LOOKUP_ONLY key is only used to match a profile but is not+-- persisted to be used for searching of the profile. A NEW_ONLY key is+-- only used if the profile does not already exist before the object is+-- ingested, otherwise it is only used for matching objects to profiles.+newObjectTypeKey ::+  ObjectTypeKey+newObjectTypeKey =+  ObjectTypeKey'+    { fieldNames = Prelude.Nothing,+      standardIdentifiers = Prelude.Nothing+    }++-- | The reference for the key name of the fields map.+objectTypeKey_fieldNames :: Lens.Lens' ObjectTypeKey (Prelude.Maybe [Prelude.Text])+objectTypeKey_fieldNames = Lens.lens (\ObjectTypeKey' {fieldNames} -> fieldNames) (\s@ObjectTypeKey' {} a -> s {fieldNames = a} :: ObjectTypeKey) Prelude.. Lens.mapping Lens.coerced++-- | The types of keys that a ProfileObject can have. Each ProfileObject can+-- have only 1 UNIQUE key but multiple PROFILE keys. PROFILE, ASSET, CASE,+-- or ORDER means that this key can be used to tie an object to a PROFILE,+-- ASSET, CASE, or ORDER respectively. UNIQUE means that it can be used to+-- uniquely identify an object. If a key a is marked as SECONDARY, it will+-- be used to search for profiles after all other PROFILE keys have been+-- searched. A LOOKUP_ONLY key is only used to match a profile but is not+-- persisted to be used for searching of the profile. A NEW_ONLY key is+-- only used if the profile does not already exist before the object is+-- ingested, otherwise it is only used for matching objects to profiles.+objectTypeKey_standardIdentifiers :: Lens.Lens' ObjectTypeKey (Prelude.Maybe [StandardIdentifier])+objectTypeKey_standardIdentifiers = Lens.lens (\ObjectTypeKey' {standardIdentifiers} -> standardIdentifiers) (\s@ObjectTypeKey' {} a -> s {standardIdentifiers = a} :: ObjectTypeKey) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON ObjectTypeKey where+  parseJSON =+    Data.withObject+      "ObjectTypeKey"+      ( \x ->+          ObjectTypeKey'+            Prelude.<$> (x Data..:? "FieldNames" Data..!= Prelude.mempty)+            Prelude.<*> ( x+                            Data..:? "StandardIdentifiers"+                            Data..!= Prelude.mempty+                        )+      )++instance Prelude.Hashable ObjectTypeKey where+  hashWithSalt _salt ObjectTypeKey' {..} =+    _salt+      `Prelude.hashWithSalt` fieldNames+      `Prelude.hashWithSalt` standardIdentifiers++instance Prelude.NFData ObjectTypeKey where+  rnf ObjectTypeKey' {..} =+    Prelude.rnf fieldNames+      `Prelude.seq` Prelude.rnf standardIdentifiers++instance Data.ToJSON ObjectTypeKey where+  toJSON ObjectTypeKey' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("FieldNames" Data..=) Prelude.<$> fieldNames,+            ("StandardIdentifiers" Data..=)+              Prelude.<$> standardIdentifiers+          ]+      )
+ gen/Amazonka/CustomerProfiles/Types/OperatorPropertiesKeys.hs view
@@ -0,0 +1,131 @@+{-# 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.CustomerProfiles.Types.OperatorPropertiesKeys+-- Copyright   : (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.CustomerProfiles.Types.OperatorPropertiesKeys+  ( OperatorPropertiesKeys+      ( ..,+        OperatorPropertiesKeys_CONCAT_FORMAT,+        OperatorPropertiesKeys_DATA_TYPE,+        OperatorPropertiesKeys_DESTINATION_DATA_TYPE,+        OperatorPropertiesKeys_LOWER_BOUND,+        OperatorPropertiesKeys_MASK_LENGTH,+        OperatorPropertiesKeys_MASK_VALUE,+        OperatorPropertiesKeys_MATH_OPERATION_FIELDS_ORDER,+        OperatorPropertiesKeys_SOURCE_DATA_TYPE,+        OperatorPropertiesKeys_SUBFIELD_CATEGORY_MAP,+        OperatorPropertiesKeys_TRUNCATE_LENGTH,+        OperatorPropertiesKeys_UPPER_BOUND,+        OperatorPropertiesKeys_VALIDATION_ACTION,+        OperatorPropertiesKeys_VALUE,+        OperatorPropertiesKeys_VALUES+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype OperatorPropertiesKeys = OperatorPropertiesKeys'+  { fromOperatorPropertiesKeys ::+      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 OperatorPropertiesKeys_CONCAT_FORMAT :: OperatorPropertiesKeys+pattern OperatorPropertiesKeys_CONCAT_FORMAT = OperatorPropertiesKeys' "CONCAT_FORMAT"++pattern OperatorPropertiesKeys_DATA_TYPE :: OperatorPropertiesKeys+pattern OperatorPropertiesKeys_DATA_TYPE = OperatorPropertiesKeys' "DATA_TYPE"++pattern OperatorPropertiesKeys_DESTINATION_DATA_TYPE :: OperatorPropertiesKeys+pattern OperatorPropertiesKeys_DESTINATION_DATA_TYPE = OperatorPropertiesKeys' "DESTINATION_DATA_TYPE"++pattern OperatorPropertiesKeys_LOWER_BOUND :: OperatorPropertiesKeys+pattern OperatorPropertiesKeys_LOWER_BOUND = OperatorPropertiesKeys' "LOWER_BOUND"++pattern OperatorPropertiesKeys_MASK_LENGTH :: OperatorPropertiesKeys+pattern OperatorPropertiesKeys_MASK_LENGTH = OperatorPropertiesKeys' "MASK_LENGTH"++pattern OperatorPropertiesKeys_MASK_VALUE :: OperatorPropertiesKeys+pattern OperatorPropertiesKeys_MASK_VALUE = OperatorPropertiesKeys' "MASK_VALUE"++pattern OperatorPropertiesKeys_MATH_OPERATION_FIELDS_ORDER :: OperatorPropertiesKeys+pattern OperatorPropertiesKeys_MATH_OPERATION_FIELDS_ORDER = OperatorPropertiesKeys' "MATH_OPERATION_FIELDS_ORDER"++pattern OperatorPropertiesKeys_SOURCE_DATA_TYPE :: OperatorPropertiesKeys+pattern OperatorPropertiesKeys_SOURCE_DATA_TYPE = OperatorPropertiesKeys' "SOURCE_DATA_TYPE"++pattern OperatorPropertiesKeys_SUBFIELD_CATEGORY_MAP :: OperatorPropertiesKeys+pattern OperatorPropertiesKeys_SUBFIELD_CATEGORY_MAP = OperatorPropertiesKeys' "SUBFIELD_CATEGORY_MAP"++pattern OperatorPropertiesKeys_TRUNCATE_LENGTH :: OperatorPropertiesKeys+pattern OperatorPropertiesKeys_TRUNCATE_LENGTH = OperatorPropertiesKeys' "TRUNCATE_LENGTH"++pattern OperatorPropertiesKeys_UPPER_BOUND :: OperatorPropertiesKeys+pattern OperatorPropertiesKeys_UPPER_BOUND = OperatorPropertiesKeys' "UPPER_BOUND"++pattern OperatorPropertiesKeys_VALIDATION_ACTION :: OperatorPropertiesKeys+pattern OperatorPropertiesKeys_VALIDATION_ACTION = OperatorPropertiesKeys' "VALIDATION_ACTION"++pattern OperatorPropertiesKeys_VALUE :: OperatorPropertiesKeys+pattern OperatorPropertiesKeys_VALUE = OperatorPropertiesKeys' "VALUE"++pattern OperatorPropertiesKeys_VALUES :: OperatorPropertiesKeys+pattern OperatorPropertiesKeys_VALUES = OperatorPropertiesKeys' "VALUES"++{-# COMPLETE+  OperatorPropertiesKeys_CONCAT_FORMAT,+  OperatorPropertiesKeys_DATA_TYPE,+  OperatorPropertiesKeys_DESTINATION_DATA_TYPE,+  OperatorPropertiesKeys_LOWER_BOUND,+  OperatorPropertiesKeys_MASK_LENGTH,+  OperatorPropertiesKeys_MASK_VALUE,+  OperatorPropertiesKeys_MATH_OPERATION_FIELDS_ORDER,+  OperatorPropertiesKeys_SOURCE_DATA_TYPE,+  OperatorPropertiesKeys_SUBFIELD_CATEGORY_MAP,+  OperatorPropertiesKeys_TRUNCATE_LENGTH,+  OperatorPropertiesKeys_UPPER_BOUND,+  OperatorPropertiesKeys_VALIDATION_ACTION,+  OperatorPropertiesKeys_VALUE,+  OperatorPropertiesKeys_VALUES,+  OperatorPropertiesKeys'+  #-}
+ gen/Amazonka/CustomerProfiles/Types/PartyType.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.Types.PartyType+-- Copyright   : (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.CustomerProfiles.Types.PartyType+  ( PartyType+      ( ..,+        PartyType_BUSINESS,+        PartyType_INDIVIDUAL,+        PartyType_OTHER+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype PartyType = PartyType'+  { fromPartyType ::+      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 PartyType_BUSINESS :: PartyType+pattern PartyType_BUSINESS = PartyType' "BUSINESS"++pattern PartyType_INDIVIDUAL :: PartyType+pattern PartyType_INDIVIDUAL = PartyType' "INDIVIDUAL"++pattern PartyType_OTHER :: PartyType+pattern PartyType_OTHER = PartyType' "OTHER"++{-# COMPLETE+  PartyType_BUSINESS,+  PartyType_INDIVIDUAL,+  PartyType_OTHER,+  PartyType'+  #-}
+ gen/Amazonka/CustomerProfiles/Types/Profile.hs view
@@ -0,0 +1,420 @@+{-# 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.CustomerProfiles.Types.Profile+-- Copyright   : (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.CustomerProfiles.Types.Profile where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types.Address+import Amazonka.CustomerProfiles.Types.FoundByKeyValue+import Amazonka.CustomerProfiles.Types.Gender+import Amazonka.CustomerProfiles.Types.PartyType+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The standard profile of a customer.+--+-- /See:/ 'newProfile' smart constructor.+data Profile = Profile'+  { -- | A unique account number that you have given to the customer.+    accountNumber :: Prelude.Maybe Prelude.Text,+    -- | Any additional information relevant to the customer’s profile.+    additionalInformation :: Prelude.Maybe Prelude.Text,+    -- | A generic address associated with the customer that is not mailing,+    -- shipping, or billing.+    address :: Prelude.Maybe Address,+    -- | A key value pair of attributes of a customer profile.+    attributes :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The customer’s billing address.+    billingAddress :: Prelude.Maybe Address,+    -- | The customer’s birth date.+    birthDate :: Prelude.Maybe Prelude.Text,+    -- | The customer’s business email address.+    businessEmailAddress :: Prelude.Maybe Prelude.Text,+    -- | The name of the customer’s business.+    businessName :: Prelude.Maybe Prelude.Text,+    -- | The customer’s home phone number.+    businessPhoneNumber :: Prelude.Maybe Prelude.Text,+    -- | The customer’s email address, which has not been specified as a personal+    -- or business address.+    emailAddress :: Prelude.Maybe Prelude.Text,+    -- | The customer’s first name.+    firstName :: Prelude.Maybe Prelude.Text,+    -- | A list of items used to find a profile returned in a+    -- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_SearchProfiles.html SearchProfiles>+    -- response. An item is a key-value(s) pair that matches an attribute in+    -- the profile.+    --+    -- If the optional @AdditionalSearchKeys@ parameter was included in the+    -- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_SearchProfiles.html SearchProfiles>+    -- request, the @FoundByItems@ list should be interpreted based on the+    -- @LogicalOperator@ used in the request:+    --+    -- -   @AND@ - The profile included in the response matched all of the+    --     search keys specified in the request. The @FoundByItems@ will+    --     include all of the key-value(s) pairs that were specified in the+    --     request (as this is a requirement of @AND@ search logic).+    --+    -- -   @OR@ - The profile included in the response matched at least one of+    --     the search keys specified in the request. The @FoundByItems@ will+    --     include each of the key-value(s) pairs that the profile was found+    --     by.+    --+    -- The @OR@ relationship is the default behavior if the @LogicalOperator@+    -- parameter is not included in the+    -- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_SearchProfiles.html SearchProfiles>+    -- request.+    foundByItems :: Prelude.Maybe (Prelude.NonEmpty FoundByKeyValue),+    -- | The gender with which the customer identifies.+    gender :: Prelude.Maybe Gender,+    -- | The customer’s home phone number.+    homePhoneNumber :: Prelude.Maybe Prelude.Text,+    -- | The customer’s last name.+    lastName :: Prelude.Maybe Prelude.Text,+    -- | The customer’s mailing address.+    mailingAddress :: Prelude.Maybe Address,+    -- | The customer’s middle name.+    middleName :: Prelude.Maybe Prelude.Text,+    -- | The customer’s mobile phone number.+    mobilePhoneNumber :: Prelude.Maybe Prelude.Text,+    -- | The type of profile used to describe the customer.+    partyType :: Prelude.Maybe PartyType,+    -- | The customer’s personal email address.+    personalEmailAddress :: Prelude.Maybe Prelude.Text,+    -- | The customer\'s phone number, which has not been specified as a mobile,+    -- home, or business number.+    phoneNumber :: Prelude.Maybe Prelude.Text,+    -- | The unique identifier of a customer profile.+    profileId :: Prelude.Maybe Prelude.Text,+    -- | The customer’s shipping address.+    shippingAddress :: Prelude.Maybe Address+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Profile' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accountNumber', 'profile_accountNumber' - A unique account number that you have given to the customer.+--+-- 'additionalInformation', 'profile_additionalInformation' - Any additional information relevant to the customer’s profile.+--+-- 'address', 'profile_address' - A generic address associated with the customer that is not mailing,+-- shipping, or billing.+--+-- 'attributes', 'profile_attributes' - A key value pair of attributes of a customer profile.+--+-- 'billingAddress', 'profile_billingAddress' - The customer’s billing address.+--+-- 'birthDate', 'profile_birthDate' - The customer’s birth date.+--+-- 'businessEmailAddress', 'profile_businessEmailAddress' - The customer’s business email address.+--+-- 'businessName', 'profile_businessName' - The name of the customer’s business.+--+-- 'businessPhoneNumber', 'profile_businessPhoneNumber' - The customer’s home phone number.+--+-- 'emailAddress', 'profile_emailAddress' - The customer’s email address, which has not been specified as a personal+-- or business address.+--+-- 'firstName', 'profile_firstName' - The customer’s first name.+--+-- 'foundByItems', 'profile_foundByItems' - A list of items used to find a profile returned in a+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_SearchProfiles.html SearchProfiles>+-- response. An item is a key-value(s) pair that matches an attribute in+-- the profile.+--+-- If the optional @AdditionalSearchKeys@ parameter was included in the+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_SearchProfiles.html SearchProfiles>+-- request, the @FoundByItems@ list should be interpreted based on the+-- @LogicalOperator@ used in the request:+--+-- -   @AND@ - The profile included in the response matched all of the+--     search keys specified in the request. The @FoundByItems@ will+--     include all of the key-value(s) pairs that were specified in the+--     request (as this is a requirement of @AND@ search logic).+--+-- -   @OR@ - The profile included in the response matched at least one of+--     the search keys specified in the request. The @FoundByItems@ will+--     include each of the key-value(s) pairs that the profile was found+--     by.+--+-- The @OR@ relationship is the default behavior if the @LogicalOperator@+-- parameter is not included in the+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_SearchProfiles.html SearchProfiles>+-- request.+--+-- 'gender', 'profile_gender' - The gender with which the customer identifies.+--+-- 'homePhoneNumber', 'profile_homePhoneNumber' - The customer’s home phone number.+--+-- 'lastName', 'profile_lastName' - The customer’s last name.+--+-- 'mailingAddress', 'profile_mailingAddress' - The customer’s mailing address.+--+-- 'middleName', 'profile_middleName' - The customer’s middle name.+--+-- 'mobilePhoneNumber', 'profile_mobilePhoneNumber' - The customer’s mobile phone number.+--+-- 'partyType', 'profile_partyType' - The type of profile used to describe the customer.+--+-- 'personalEmailAddress', 'profile_personalEmailAddress' - The customer’s personal email address.+--+-- 'phoneNumber', 'profile_phoneNumber' - The customer\'s phone number, which has not been specified as a mobile,+-- home, or business number.+--+-- 'profileId', 'profile_profileId' - The unique identifier of a customer profile.+--+-- 'shippingAddress', 'profile_shippingAddress' - The customer’s shipping address.+newProfile ::+  Profile+newProfile =+  Profile'+    { accountNumber = Prelude.Nothing,+      additionalInformation = Prelude.Nothing,+      address = Prelude.Nothing,+      attributes = Prelude.Nothing,+      billingAddress = Prelude.Nothing,+      birthDate = Prelude.Nothing,+      businessEmailAddress = Prelude.Nothing,+      businessName = Prelude.Nothing,+      businessPhoneNumber = Prelude.Nothing,+      emailAddress = Prelude.Nothing,+      firstName = Prelude.Nothing,+      foundByItems = Prelude.Nothing,+      gender = Prelude.Nothing,+      homePhoneNumber = Prelude.Nothing,+      lastName = Prelude.Nothing,+      mailingAddress = Prelude.Nothing,+      middleName = Prelude.Nothing,+      mobilePhoneNumber = Prelude.Nothing,+      partyType = Prelude.Nothing,+      personalEmailAddress = Prelude.Nothing,+      phoneNumber = Prelude.Nothing,+      profileId = Prelude.Nothing,+      shippingAddress = Prelude.Nothing+    }++-- | A unique account number that you have given to the customer.+profile_accountNumber :: Lens.Lens' Profile (Prelude.Maybe Prelude.Text)+profile_accountNumber = Lens.lens (\Profile' {accountNumber} -> accountNumber) (\s@Profile' {} a -> s {accountNumber = a} :: Profile)++-- | Any additional information relevant to the customer’s profile.+profile_additionalInformation :: Lens.Lens' Profile (Prelude.Maybe Prelude.Text)+profile_additionalInformation = Lens.lens (\Profile' {additionalInformation} -> additionalInformation) (\s@Profile' {} a -> s {additionalInformation = a} :: Profile)++-- | A generic address associated with the customer that is not mailing,+-- shipping, or billing.+profile_address :: Lens.Lens' Profile (Prelude.Maybe Address)+profile_address = Lens.lens (\Profile' {address} -> address) (\s@Profile' {} a -> s {address = a} :: Profile)++-- | A key value pair of attributes of a customer profile.+profile_attributes :: Lens.Lens' Profile (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+profile_attributes = Lens.lens (\Profile' {attributes} -> attributes) (\s@Profile' {} a -> s {attributes = a} :: Profile) Prelude.. Lens.mapping Lens.coerced++-- | The customer’s billing address.+profile_billingAddress :: Lens.Lens' Profile (Prelude.Maybe Address)+profile_billingAddress = Lens.lens (\Profile' {billingAddress} -> billingAddress) (\s@Profile' {} a -> s {billingAddress = a} :: Profile)++-- | The customer’s birth date.+profile_birthDate :: Lens.Lens' Profile (Prelude.Maybe Prelude.Text)+profile_birthDate = Lens.lens (\Profile' {birthDate} -> birthDate) (\s@Profile' {} a -> s {birthDate = a} :: Profile)++-- | The customer’s business email address.+profile_businessEmailAddress :: Lens.Lens' Profile (Prelude.Maybe Prelude.Text)+profile_businessEmailAddress = Lens.lens (\Profile' {businessEmailAddress} -> businessEmailAddress) (\s@Profile' {} a -> s {businessEmailAddress = a} :: Profile)++-- | The name of the customer’s business.+profile_businessName :: Lens.Lens' Profile (Prelude.Maybe Prelude.Text)+profile_businessName = Lens.lens (\Profile' {businessName} -> businessName) (\s@Profile' {} a -> s {businessName = a} :: Profile)++-- | The customer’s home phone number.+profile_businessPhoneNumber :: Lens.Lens' Profile (Prelude.Maybe Prelude.Text)+profile_businessPhoneNumber = Lens.lens (\Profile' {businessPhoneNumber} -> businessPhoneNumber) (\s@Profile' {} a -> s {businessPhoneNumber = a} :: Profile)++-- | The customer’s email address, which has not been specified as a personal+-- or business address.+profile_emailAddress :: Lens.Lens' Profile (Prelude.Maybe Prelude.Text)+profile_emailAddress = Lens.lens (\Profile' {emailAddress} -> emailAddress) (\s@Profile' {} a -> s {emailAddress = a} :: Profile)++-- | The customer’s first name.+profile_firstName :: Lens.Lens' Profile (Prelude.Maybe Prelude.Text)+profile_firstName = Lens.lens (\Profile' {firstName} -> firstName) (\s@Profile' {} a -> s {firstName = a} :: Profile)++-- | A list of items used to find a profile returned in a+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_SearchProfiles.html SearchProfiles>+-- response. An item is a key-value(s) pair that matches an attribute in+-- the profile.+--+-- If the optional @AdditionalSearchKeys@ parameter was included in the+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_SearchProfiles.html SearchProfiles>+-- request, the @FoundByItems@ list should be interpreted based on the+-- @LogicalOperator@ used in the request:+--+-- -   @AND@ - The profile included in the response matched all of the+--     search keys specified in the request. The @FoundByItems@ will+--     include all of the key-value(s) pairs that were specified in the+--     request (as this is a requirement of @AND@ search logic).+--+-- -   @OR@ - The profile included in the response matched at least one of+--     the search keys specified in the request. The @FoundByItems@ will+--     include each of the key-value(s) pairs that the profile was found+--     by.+--+-- The @OR@ relationship is the default behavior if the @LogicalOperator@+-- parameter is not included in the+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_SearchProfiles.html SearchProfiles>+-- request.+profile_foundByItems :: Lens.Lens' Profile (Prelude.Maybe (Prelude.NonEmpty FoundByKeyValue))+profile_foundByItems = Lens.lens (\Profile' {foundByItems} -> foundByItems) (\s@Profile' {} a -> s {foundByItems = a} :: Profile) Prelude.. Lens.mapping Lens.coerced++-- | The gender with which the customer identifies.+profile_gender :: Lens.Lens' Profile (Prelude.Maybe Gender)+profile_gender = Lens.lens (\Profile' {gender} -> gender) (\s@Profile' {} a -> s {gender = a} :: Profile)++-- | The customer’s home phone number.+profile_homePhoneNumber :: Lens.Lens' Profile (Prelude.Maybe Prelude.Text)+profile_homePhoneNumber = Lens.lens (\Profile' {homePhoneNumber} -> homePhoneNumber) (\s@Profile' {} a -> s {homePhoneNumber = a} :: Profile)++-- | The customer’s last name.+profile_lastName :: Lens.Lens' Profile (Prelude.Maybe Prelude.Text)+profile_lastName = Lens.lens (\Profile' {lastName} -> lastName) (\s@Profile' {} a -> s {lastName = a} :: Profile)++-- | The customer’s mailing address.+profile_mailingAddress :: Lens.Lens' Profile (Prelude.Maybe Address)+profile_mailingAddress = Lens.lens (\Profile' {mailingAddress} -> mailingAddress) (\s@Profile' {} a -> s {mailingAddress = a} :: Profile)++-- | The customer’s middle name.+profile_middleName :: Lens.Lens' Profile (Prelude.Maybe Prelude.Text)+profile_middleName = Lens.lens (\Profile' {middleName} -> middleName) (\s@Profile' {} a -> s {middleName = a} :: Profile)++-- | The customer’s mobile phone number.+profile_mobilePhoneNumber :: Lens.Lens' Profile (Prelude.Maybe Prelude.Text)+profile_mobilePhoneNumber = Lens.lens (\Profile' {mobilePhoneNumber} -> mobilePhoneNumber) (\s@Profile' {} a -> s {mobilePhoneNumber = a} :: Profile)++-- | The type of profile used to describe the customer.+profile_partyType :: Lens.Lens' Profile (Prelude.Maybe PartyType)+profile_partyType = Lens.lens (\Profile' {partyType} -> partyType) (\s@Profile' {} a -> s {partyType = a} :: Profile)++-- | The customer’s personal email address.+profile_personalEmailAddress :: Lens.Lens' Profile (Prelude.Maybe Prelude.Text)+profile_personalEmailAddress = Lens.lens (\Profile' {personalEmailAddress} -> personalEmailAddress) (\s@Profile' {} a -> s {personalEmailAddress = a} :: Profile)++-- | The customer\'s phone number, which has not been specified as a mobile,+-- home, or business number.+profile_phoneNumber :: Lens.Lens' Profile (Prelude.Maybe Prelude.Text)+profile_phoneNumber = Lens.lens (\Profile' {phoneNumber} -> phoneNumber) (\s@Profile' {} a -> s {phoneNumber = a} :: Profile)++-- | The unique identifier of a customer profile.+profile_profileId :: Lens.Lens' Profile (Prelude.Maybe Prelude.Text)+profile_profileId = Lens.lens (\Profile' {profileId} -> profileId) (\s@Profile' {} a -> s {profileId = a} :: Profile)++-- | The customer’s shipping address.+profile_shippingAddress :: Lens.Lens' Profile (Prelude.Maybe Address)+profile_shippingAddress = Lens.lens (\Profile' {shippingAddress} -> shippingAddress) (\s@Profile' {} a -> s {shippingAddress = a} :: Profile)++instance Data.FromJSON Profile where+  parseJSON =+    Data.withObject+      "Profile"+      ( \x ->+          Profile'+            Prelude.<$> (x Data..:? "AccountNumber")+            Prelude.<*> (x Data..:? "AdditionalInformation")+            Prelude.<*> (x Data..:? "Address")+            Prelude.<*> (x Data..:? "Attributes" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "BillingAddress")+            Prelude.<*> (x Data..:? "BirthDate")+            Prelude.<*> (x Data..:? "BusinessEmailAddress")+            Prelude.<*> (x Data..:? "BusinessName")+            Prelude.<*> (x Data..:? "BusinessPhoneNumber")+            Prelude.<*> (x Data..:? "EmailAddress")+            Prelude.<*> (x Data..:? "FirstName")+            Prelude.<*> (x Data..:? "FoundByItems")+            Prelude.<*> (x Data..:? "Gender")+            Prelude.<*> (x Data..:? "HomePhoneNumber")+            Prelude.<*> (x Data..:? "LastName")+            Prelude.<*> (x Data..:? "MailingAddress")+            Prelude.<*> (x Data..:? "MiddleName")+            Prelude.<*> (x Data..:? "MobilePhoneNumber")+            Prelude.<*> (x Data..:? "PartyType")+            Prelude.<*> (x Data..:? "PersonalEmailAddress")+            Prelude.<*> (x Data..:? "PhoneNumber")+            Prelude.<*> (x Data..:? "ProfileId")+            Prelude.<*> (x Data..:? "ShippingAddress")+      )++instance Prelude.Hashable Profile where+  hashWithSalt _salt Profile' {..} =+    _salt+      `Prelude.hashWithSalt` accountNumber+      `Prelude.hashWithSalt` additionalInformation+      `Prelude.hashWithSalt` address+      `Prelude.hashWithSalt` attributes+      `Prelude.hashWithSalt` billingAddress+      `Prelude.hashWithSalt` birthDate+      `Prelude.hashWithSalt` businessEmailAddress+      `Prelude.hashWithSalt` businessName+      `Prelude.hashWithSalt` businessPhoneNumber+      `Prelude.hashWithSalt` emailAddress+      `Prelude.hashWithSalt` firstName+      `Prelude.hashWithSalt` foundByItems+      `Prelude.hashWithSalt` gender+      `Prelude.hashWithSalt` homePhoneNumber+      `Prelude.hashWithSalt` lastName+      `Prelude.hashWithSalt` mailingAddress+      `Prelude.hashWithSalt` middleName+      `Prelude.hashWithSalt` mobilePhoneNumber+      `Prelude.hashWithSalt` partyType+      `Prelude.hashWithSalt` personalEmailAddress+      `Prelude.hashWithSalt` phoneNumber+      `Prelude.hashWithSalt` profileId+      `Prelude.hashWithSalt` shippingAddress++instance Prelude.NFData Profile where+  rnf Profile' {..} =+    Prelude.rnf accountNumber+      `Prelude.seq` Prelude.rnf additionalInformation+      `Prelude.seq` Prelude.rnf address+      `Prelude.seq` Prelude.rnf attributes+      `Prelude.seq` Prelude.rnf billingAddress+      `Prelude.seq` Prelude.rnf birthDate+      `Prelude.seq` Prelude.rnf businessEmailAddress+      `Prelude.seq` Prelude.rnf businessName+      `Prelude.seq` Prelude.rnf businessPhoneNumber+      `Prelude.seq` Prelude.rnf emailAddress+      `Prelude.seq` Prelude.rnf firstName+      `Prelude.seq` Prelude.rnf foundByItems+      `Prelude.seq` Prelude.rnf gender+      `Prelude.seq` Prelude.rnf homePhoneNumber+      `Prelude.seq` Prelude.rnf lastName+      `Prelude.seq` Prelude.rnf mailingAddress+      `Prelude.seq` Prelude.rnf middleName+      `Prelude.seq` Prelude.rnf mobilePhoneNumber+      `Prelude.seq` Prelude.rnf partyType+      `Prelude.seq` Prelude.rnf+        personalEmailAddress+      `Prelude.seq` Prelude.rnf phoneNumber+      `Prelude.seq` Prelude.rnf profileId+      `Prelude.seq` Prelude.rnf+        shippingAddress
+ gen/Amazonka/CustomerProfiles/Types/S3ConnectorOperator.hs view
@@ -0,0 +1,161 @@+{-# 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.CustomerProfiles.Types.S3ConnectorOperator+-- Copyright   : (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.CustomerProfiles.Types.S3ConnectorOperator+  ( S3ConnectorOperator+      ( ..,+        S3ConnectorOperator_ADDITION,+        S3ConnectorOperator_BETWEEN,+        S3ConnectorOperator_DIVISION,+        S3ConnectorOperator_EQUAL_TO,+        S3ConnectorOperator_GREATER_THAN,+        S3ConnectorOperator_GREATER_THAN_OR_EQUAL_TO,+        S3ConnectorOperator_LESS_THAN,+        S3ConnectorOperator_LESS_THAN_OR_EQUAL_TO,+        S3ConnectorOperator_MASK_ALL,+        S3ConnectorOperator_MASK_FIRST_N,+        S3ConnectorOperator_MASK_LAST_N,+        S3ConnectorOperator_MULTIPLICATION,+        S3ConnectorOperator_NOT_EQUAL_TO,+        S3ConnectorOperator_NO_OP,+        S3ConnectorOperator_PROJECTION,+        S3ConnectorOperator_SUBTRACTION,+        S3ConnectorOperator_VALIDATE_NON_NEGATIVE,+        S3ConnectorOperator_VALIDATE_NON_NULL,+        S3ConnectorOperator_VALIDATE_NON_ZERO,+        S3ConnectorOperator_VALIDATE_NUMERIC+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype S3ConnectorOperator = S3ConnectorOperator'+  { fromS3ConnectorOperator ::+      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 S3ConnectorOperator_ADDITION :: S3ConnectorOperator+pattern S3ConnectorOperator_ADDITION = S3ConnectorOperator' "ADDITION"++pattern S3ConnectorOperator_BETWEEN :: S3ConnectorOperator+pattern S3ConnectorOperator_BETWEEN = S3ConnectorOperator' "BETWEEN"++pattern S3ConnectorOperator_DIVISION :: S3ConnectorOperator+pattern S3ConnectorOperator_DIVISION = S3ConnectorOperator' "DIVISION"++pattern S3ConnectorOperator_EQUAL_TO :: S3ConnectorOperator+pattern S3ConnectorOperator_EQUAL_TO = S3ConnectorOperator' "EQUAL_TO"++pattern S3ConnectorOperator_GREATER_THAN :: S3ConnectorOperator+pattern S3ConnectorOperator_GREATER_THAN = S3ConnectorOperator' "GREATER_THAN"++pattern S3ConnectorOperator_GREATER_THAN_OR_EQUAL_TO :: S3ConnectorOperator+pattern S3ConnectorOperator_GREATER_THAN_OR_EQUAL_TO = S3ConnectorOperator' "GREATER_THAN_OR_EQUAL_TO"++pattern S3ConnectorOperator_LESS_THAN :: S3ConnectorOperator+pattern S3ConnectorOperator_LESS_THAN = S3ConnectorOperator' "LESS_THAN"++pattern S3ConnectorOperator_LESS_THAN_OR_EQUAL_TO :: S3ConnectorOperator+pattern S3ConnectorOperator_LESS_THAN_OR_EQUAL_TO = S3ConnectorOperator' "LESS_THAN_OR_EQUAL_TO"++pattern S3ConnectorOperator_MASK_ALL :: S3ConnectorOperator+pattern S3ConnectorOperator_MASK_ALL = S3ConnectorOperator' "MASK_ALL"++pattern S3ConnectorOperator_MASK_FIRST_N :: S3ConnectorOperator+pattern S3ConnectorOperator_MASK_FIRST_N = S3ConnectorOperator' "MASK_FIRST_N"++pattern S3ConnectorOperator_MASK_LAST_N :: S3ConnectorOperator+pattern S3ConnectorOperator_MASK_LAST_N = S3ConnectorOperator' "MASK_LAST_N"++pattern S3ConnectorOperator_MULTIPLICATION :: S3ConnectorOperator+pattern S3ConnectorOperator_MULTIPLICATION = S3ConnectorOperator' "MULTIPLICATION"++pattern S3ConnectorOperator_NOT_EQUAL_TO :: S3ConnectorOperator+pattern S3ConnectorOperator_NOT_EQUAL_TO = S3ConnectorOperator' "NOT_EQUAL_TO"++pattern S3ConnectorOperator_NO_OP :: S3ConnectorOperator+pattern S3ConnectorOperator_NO_OP = S3ConnectorOperator' "NO_OP"++pattern S3ConnectorOperator_PROJECTION :: S3ConnectorOperator+pattern S3ConnectorOperator_PROJECTION = S3ConnectorOperator' "PROJECTION"++pattern S3ConnectorOperator_SUBTRACTION :: S3ConnectorOperator+pattern S3ConnectorOperator_SUBTRACTION = S3ConnectorOperator' "SUBTRACTION"++pattern S3ConnectorOperator_VALIDATE_NON_NEGATIVE :: S3ConnectorOperator+pattern S3ConnectorOperator_VALIDATE_NON_NEGATIVE = S3ConnectorOperator' "VALIDATE_NON_NEGATIVE"++pattern S3ConnectorOperator_VALIDATE_NON_NULL :: S3ConnectorOperator+pattern S3ConnectorOperator_VALIDATE_NON_NULL = S3ConnectorOperator' "VALIDATE_NON_NULL"++pattern S3ConnectorOperator_VALIDATE_NON_ZERO :: S3ConnectorOperator+pattern S3ConnectorOperator_VALIDATE_NON_ZERO = S3ConnectorOperator' "VALIDATE_NON_ZERO"++pattern S3ConnectorOperator_VALIDATE_NUMERIC :: S3ConnectorOperator+pattern S3ConnectorOperator_VALIDATE_NUMERIC = S3ConnectorOperator' "VALIDATE_NUMERIC"++{-# COMPLETE+  S3ConnectorOperator_ADDITION,+  S3ConnectorOperator_BETWEEN,+  S3ConnectorOperator_DIVISION,+  S3ConnectorOperator_EQUAL_TO,+  S3ConnectorOperator_GREATER_THAN,+  S3ConnectorOperator_GREATER_THAN_OR_EQUAL_TO,+  S3ConnectorOperator_LESS_THAN,+  S3ConnectorOperator_LESS_THAN_OR_EQUAL_TO,+  S3ConnectorOperator_MASK_ALL,+  S3ConnectorOperator_MASK_FIRST_N,+  S3ConnectorOperator_MASK_LAST_N,+  S3ConnectorOperator_MULTIPLICATION,+  S3ConnectorOperator_NOT_EQUAL_TO,+  S3ConnectorOperator_NO_OP,+  S3ConnectorOperator_PROJECTION,+  S3ConnectorOperator_SUBTRACTION,+  S3ConnectorOperator_VALIDATE_NON_NEGATIVE,+  S3ConnectorOperator_VALIDATE_NON_NULL,+  S3ConnectorOperator_VALIDATE_NON_ZERO,+  S3ConnectorOperator_VALIDATE_NUMERIC,+  S3ConnectorOperator'+  #-}
+ gen/Amazonka/CustomerProfiles/Types/S3ExportingConfig.hs view
@@ -0,0 +1,102 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.Types.S3ExportingConfig+-- Copyright   : (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.CustomerProfiles.Types.S3ExportingConfig 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++-- | Configuration information about the S3 bucket where Identity Resolution+-- Jobs write result files.+--+-- /See:/ 'newS3ExportingConfig' smart constructor.+data S3ExportingConfig = S3ExportingConfig'+  { -- | The S3 key name of the location where Identity Resolution Jobs write+    -- result files.+    s3KeyName :: Prelude.Maybe Prelude.Text,+    -- | The name of the S3 bucket where Identity Resolution Jobs write result+    -- files.+    s3BucketName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'S3ExportingConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 's3KeyName', 's3ExportingConfig_s3KeyName' - The S3 key name of the location where Identity Resolution Jobs write+-- result files.+--+-- 's3BucketName', 's3ExportingConfig_s3BucketName' - The name of the S3 bucket where Identity Resolution Jobs write result+-- files.+newS3ExportingConfig ::+  -- | 's3BucketName'+  Prelude.Text ->+  S3ExportingConfig+newS3ExportingConfig pS3BucketName_ =+  S3ExportingConfig'+    { s3KeyName = Prelude.Nothing,+      s3BucketName = pS3BucketName_+    }++-- | The S3 key name of the location where Identity Resolution Jobs write+-- result files.+s3ExportingConfig_s3KeyName :: Lens.Lens' S3ExportingConfig (Prelude.Maybe Prelude.Text)+s3ExportingConfig_s3KeyName = Lens.lens (\S3ExportingConfig' {s3KeyName} -> s3KeyName) (\s@S3ExportingConfig' {} a -> s {s3KeyName = a} :: S3ExportingConfig)++-- | The name of the S3 bucket where Identity Resolution Jobs write result+-- files.+s3ExportingConfig_s3BucketName :: Lens.Lens' S3ExportingConfig Prelude.Text+s3ExportingConfig_s3BucketName = Lens.lens (\S3ExportingConfig' {s3BucketName} -> s3BucketName) (\s@S3ExportingConfig' {} a -> s {s3BucketName = a} :: S3ExportingConfig)++instance Data.FromJSON S3ExportingConfig where+  parseJSON =+    Data.withObject+      "S3ExportingConfig"+      ( \x ->+          S3ExportingConfig'+            Prelude.<$> (x Data..:? "S3KeyName")+            Prelude.<*> (x Data..: "S3BucketName")+      )++instance Prelude.Hashable S3ExportingConfig where+  hashWithSalt _salt S3ExportingConfig' {..} =+    _salt+      `Prelude.hashWithSalt` s3KeyName+      `Prelude.hashWithSalt` s3BucketName++instance Prelude.NFData S3ExportingConfig where+  rnf S3ExportingConfig' {..} =+    Prelude.rnf s3KeyName+      `Prelude.seq` Prelude.rnf s3BucketName++instance Data.ToJSON S3ExportingConfig where+  toJSON S3ExportingConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("S3KeyName" Data..=) Prelude.<$> s3KeyName,+            Prelude.Just ("S3BucketName" Data..= s3BucketName)+          ]+      )
+ gen/Amazonka/CustomerProfiles/Types/S3ExportingLocation.hs view
@@ -0,0 +1,91 @@+{-# 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.CustomerProfiles.Types.S3ExportingLocation+-- Copyright   : (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.CustomerProfiles.Types.S3ExportingLocation 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 S3 location where Identity Resolution Jobs write result files.+--+-- /See:/ 'newS3ExportingLocation' smart constructor.+data S3ExportingLocation = S3ExportingLocation'+  { -- | The name of the S3 bucket name where Identity Resolution Jobs write+    -- result files.+    s3BucketName :: Prelude.Maybe Prelude.Text,+    -- | The S3 key name of the location where Identity Resolution Jobs write+    -- result files.+    s3KeyName :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'S3ExportingLocation' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 's3BucketName', 's3ExportingLocation_s3BucketName' - The name of the S3 bucket name where Identity Resolution Jobs write+-- result files.+--+-- 's3KeyName', 's3ExportingLocation_s3KeyName' - The S3 key name of the location where Identity Resolution Jobs write+-- result files.+newS3ExportingLocation ::+  S3ExportingLocation+newS3ExportingLocation =+  S3ExportingLocation'+    { s3BucketName =+        Prelude.Nothing,+      s3KeyName = Prelude.Nothing+    }++-- | The name of the S3 bucket name where Identity Resolution Jobs write+-- result files.+s3ExportingLocation_s3BucketName :: Lens.Lens' S3ExportingLocation (Prelude.Maybe Prelude.Text)+s3ExportingLocation_s3BucketName = Lens.lens (\S3ExportingLocation' {s3BucketName} -> s3BucketName) (\s@S3ExportingLocation' {} a -> s {s3BucketName = a} :: S3ExportingLocation)++-- | The S3 key name of the location where Identity Resolution Jobs write+-- result files.+s3ExportingLocation_s3KeyName :: Lens.Lens' S3ExportingLocation (Prelude.Maybe Prelude.Text)+s3ExportingLocation_s3KeyName = Lens.lens (\S3ExportingLocation' {s3KeyName} -> s3KeyName) (\s@S3ExportingLocation' {} a -> s {s3KeyName = a} :: S3ExportingLocation)++instance Data.FromJSON S3ExportingLocation where+  parseJSON =+    Data.withObject+      "S3ExportingLocation"+      ( \x ->+          S3ExportingLocation'+            Prelude.<$> (x Data..:? "S3BucketName")+            Prelude.<*> (x Data..:? "S3KeyName")+      )++instance Prelude.Hashable S3ExportingLocation where+  hashWithSalt _salt S3ExportingLocation' {..} =+    _salt+      `Prelude.hashWithSalt` s3BucketName+      `Prelude.hashWithSalt` s3KeyName++instance Prelude.NFData S3ExportingLocation where+  rnf S3ExportingLocation' {..} =+    Prelude.rnf s3BucketName+      `Prelude.seq` Prelude.rnf s3KeyName
+ gen/Amazonka/CustomerProfiles/Types/S3SourceProperties.hs view
@@ -0,0 +1,89 @@+{-# 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.CustomerProfiles.Types.S3SourceProperties+-- Copyright   : (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.CustomerProfiles.Types.S3SourceProperties 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 properties that are applied when Amazon S3 is being used as the flow+-- source.+--+-- /See:/ 'newS3SourceProperties' smart constructor.+data S3SourceProperties = S3SourceProperties'+  { -- | The object key for the Amazon S3 bucket in which the source files are+    -- stored.+    bucketPrefix :: Prelude.Maybe Prelude.Text,+    -- | The Amazon S3 bucket name where the source files are stored.+    bucketName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'S3SourceProperties' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'bucketPrefix', 's3SourceProperties_bucketPrefix' - The object key for the Amazon S3 bucket in which the source files are+-- stored.+--+-- 'bucketName', 's3SourceProperties_bucketName' - The Amazon S3 bucket name where the source files are stored.+newS3SourceProperties ::+  -- | 'bucketName'+  Prelude.Text ->+  S3SourceProperties+newS3SourceProperties pBucketName_ =+  S3SourceProperties'+    { bucketPrefix = Prelude.Nothing,+      bucketName = pBucketName_+    }++-- | The object key for the Amazon S3 bucket in which the source files are+-- stored.+s3SourceProperties_bucketPrefix :: Lens.Lens' S3SourceProperties (Prelude.Maybe Prelude.Text)+s3SourceProperties_bucketPrefix = Lens.lens (\S3SourceProperties' {bucketPrefix} -> bucketPrefix) (\s@S3SourceProperties' {} a -> s {bucketPrefix = a} :: S3SourceProperties)++-- | The Amazon S3 bucket name where the source files are stored.+s3SourceProperties_bucketName :: Lens.Lens' S3SourceProperties Prelude.Text+s3SourceProperties_bucketName = Lens.lens (\S3SourceProperties' {bucketName} -> bucketName) (\s@S3SourceProperties' {} a -> s {bucketName = a} :: S3SourceProperties)++instance Prelude.Hashable S3SourceProperties where+  hashWithSalt _salt S3SourceProperties' {..} =+    _salt+      `Prelude.hashWithSalt` bucketPrefix+      `Prelude.hashWithSalt` bucketName++instance Prelude.NFData S3SourceProperties where+  rnf S3SourceProperties' {..} =+    Prelude.rnf bucketPrefix+      `Prelude.seq` Prelude.rnf bucketName++instance Data.ToJSON S3SourceProperties where+  toJSON S3SourceProperties' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("BucketPrefix" Data..=) Prelude.<$> bucketPrefix,+            Prelude.Just ("BucketName" Data..= bucketName)+          ]+      )
+ gen/Amazonka/CustomerProfiles/Types/SalesforceConnectorOperator.hs view
@@ -0,0 +1,166 @@+{-# 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.CustomerProfiles.Types.SalesforceConnectorOperator+-- Copyright   : (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.CustomerProfiles.Types.SalesforceConnectorOperator+  ( SalesforceConnectorOperator+      ( ..,+        SalesforceConnectorOperator_ADDITION,+        SalesforceConnectorOperator_BETWEEN,+        SalesforceConnectorOperator_CONTAINS,+        SalesforceConnectorOperator_DIVISION,+        SalesforceConnectorOperator_EQUAL_TO,+        SalesforceConnectorOperator_GREATER_THAN,+        SalesforceConnectorOperator_GREATER_THAN_OR_EQUAL_TO,+        SalesforceConnectorOperator_LESS_THAN,+        SalesforceConnectorOperator_LESS_THAN_OR_EQUAL_TO,+        SalesforceConnectorOperator_MASK_ALL,+        SalesforceConnectorOperator_MASK_FIRST_N,+        SalesforceConnectorOperator_MASK_LAST_N,+        SalesforceConnectorOperator_MULTIPLICATION,+        SalesforceConnectorOperator_NOT_EQUAL_TO,+        SalesforceConnectorOperator_NO_OP,+        SalesforceConnectorOperator_PROJECTION,+        SalesforceConnectorOperator_SUBTRACTION,+        SalesforceConnectorOperator_VALIDATE_NON_NEGATIVE,+        SalesforceConnectorOperator_VALIDATE_NON_NULL,+        SalesforceConnectorOperator_VALIDATE_NON_ZERO,+        SalesforceConnectorOperator_VALIDATE_NUMERIC+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype SalesforceConnectorOperator = SalesforceConnectorOperator'+  { fromSalesforceConnectorOperator ::+      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 SalesforceConnectorOperator_ADDITION :: SalesforceConnectorOperator+pattern SalesforceConnectorOperator_ADDITION = SalesforceConnectorOperator' "ADDITION"++pattern SalesforceConnectorOperator_BETWEEN :: SalesforceConnectorOperator+pattern SalesforceConnectorOperator_BETWEEN = SalesforceConnectorOperator' "BETWEEN"++pattern SalesforceConnectorOperator_CONTAINS :: SalesforceConnectorOperator+pattern SalesforceConnectorOperator_CONTAINS = SalesforceConnectorOperator' "CONTAINS"++pattern SalesforceConnectorOperator_DIVISION :: SalesforceConnectorOperator+pattern SalesforceConnectorOperator_DIVISION = SalesforceConnectorOperator' "DIVISION"++pattern SalesforceConnectorOperator_EQUAL_TO :: SalesforceConnectorOperator+pattern SalesforceConnectorOperator_EQUAL_TO = SalesforceConnectorOperator' "EQUAL_TO"++pattern SalesforceConnectorOperator_GREATER_THAN :: SalesforceConnectorOperator+pattern SalesforceConnectorOperator_GREATER_THAN = SalesforceConnectorOperator' "GREATER_THAN"++pattern SalesforceConnectorOperator_GREATER_THAN_OR_EQUAL_TO :: SalesforceConnectorOperator+pattern SalesforceConnectorOperator_GREATER_THAN_OR_EQUAL_TO = SalesforceConnectorOperator' "GREATER_THAN_OR_EQUAL_TO"++pattern SalesforceConnectorOperator_LESS_THAN :: SalesforceConnectorOperator+pattern SalesforceConnectorOperator_LESS_THAN = SalesforceConnectorOperator' "LESS_THAN"++pattern SalesforceConnectorOperator_LESS_THAN_OR_EQUAL_TO :: SalesforceConnectorOperator+pattern SalesforceConnectorOperator_LESS_THAN_OR_EQUAL_TO = SalesforceConnectorOperator' "LESS_THAN_OR_EQUAL_TO"++pattern SalesforceConnectorOperator_MASK_ALL :: SalesforceConnectorOperator+pattern SalesforceConnectorOperator_MASK_ALL = SalesforceConnectorOperator' "MASK_ALL"++pattern SalesforceConnectorOperator_MASK_FIRST_N :: SalesforceConnectorOperator+pattern SalesforceConnectorOperator_MASK_FIRST_N = SalesforceConnectorOperator' "MASK_FIRST_N"++pattern SalesforceConnectorOperator_MASK_LAST_N :: SalesforceConnectorOperator+pattern SalesforceConnectorOperator_MASK_LAST_N = SalesforceConnectorOperator' "MASK_LAST_N"++pattern SalesforceConnectorOperator_MULTIPLICATION :: SalesforceConnectorOperator+pattern SalesforceConnectorOperator_MULTIPLICATION = SalesforceConnectorOperator' "MULTIPLICATION"++pattern SalesforceConnectorOperator_NOT_EQUAL_TO :: SalesforceConnectorOperator+pattern SalesforceConnectorOperator_NOT_EQUAL_TO = SalesforceConnectorOperator' "NOT_EQUAL_TO"++pattern SalesforceConnectorOperator_NO_OP :: SalesforceConnectorOperator+pattern SalesforceConnectorOperator_NO_OP = SalesforceConnectorOperator' "NO_OP"++pattern SalesforceConnectorOperator_PROJECTION :: SalesforceConnectorOperator+pattern SalesforceConnectorOperator_PROJECTION = SalesforceConnectorOperator' "PROJECTION"++pattern SalesforceConnectorOperator_SUBTRACTION :: SalesforceConnectorOperator+pattern SalesforceConnectorOperator_SUBTRACTION = SalesforceConnectorOperator' "SUBTRACTION"++pattern SalesforceConnectorOperator_VALIDATE_NON_NEGATIVE :: SalesforceConnectorOperator+pattern SalesforceConnectorOperator_VALIDATE_NON_NEGATIVE = SalesforceConnectorOperator' "VALIDATE_NON_NEGATIVE"++pattern SalesforceConnectorOperator_VALIDATE_NON_NULL :: SalesforceConnectorOperator+pattern SalesforceConnectorOperator_VALIDATE_NON_NULL = SalesforceConnectorOperator' "VALIDATE_NON_NULL"++pattern SalesforceConnectorOperator_VALIDATE_NON_ZERO :: SalesforceConnectorOperator+pattern SalesforceConnectorOperator_VALIDATE_NON_ZERO = SalesforceConnectorOperator' "VALIDATE_NON_ZERO"++pattern SalesforceConnectorOperator_VALIDATE_NUMERIC :: SalesforceConnectorOperator+pattern SalesforceConnectorOperator_VALIDATE_NUMERIC = SalesforceConnectorOperator' "VALIDATE_NUMERIC"++{-# COMPLETE+  SalesforceConnectorOperator_ADDITION,+  SalesforceConnectorOperator_BETWEEN,+  SalesforceConnectorOperator_CONTAINS,+  SalesforceConnectorOperator_DIVISION,+  SalesforceConnectorOperator_EQUAL_TO,+  SalesforceConnectorOperator_GREATER_THAN,+  SalesforceConnectorOperator_GREATER_THAN_OR_EQUAL_TO,+  SalesforceConnectorOperator_LESS_THAN,+  SalesforceConnectorOperator_LESS_THAN_OR_EQUAL_TO,+  SalesforceConnectorOperator_MASK_ALL,+  SalesforceConnectorOperator_MASK_FIRST_N,+  SalesforceConnectorOperator_MASK_LAST_N,+  SalesforceConnectorOperator_MULTIPLICATION,+  SalesforceConnectorOperator_NOT_EQUAL_TO,+  SalesforceConnectorOperator_NO_OP,+  SalesforceConnectorOperator_PROJECTION,+  SalesforceConnectorOperator_SUBTRACTION,+  SalesforceConnectorOperator_VALIDATE_NON_NEGATIVE,+  SalesforceConnectorOperator_VALIDATE_NON_NULL,+  SalesforceConnectorOperator_VALIDATE_NON_ZERO,+  SalesforceConnectorOperator_VALIDATE_NUMERIC,+  SalesforceConnectorOperator'+  #-}
+ gen/Amazonka/CustomerProfiles/Types/SalesforceSourceProperties.hs view
@@ -0,0 +1,104 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.Types.SalesforceSourceProperties+-- Copyright   : (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.CustomerProfiles.Types.SalesforceSourceProperties 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 properties that are applied when Salesforce is being used as a+-- source.+--+-- /See:/ 'newSalesforceSourceProperties' smart constructor.+data SalesforceSourceProperties = SalesforceSourceProperties'+  { -- | The flag that enables dynamic fetching of new (recently added) fields in+    -- the Salesforce objects while running a flow.+    enableDynamicFieldUpdate :: Prelude.Maybe Prelude.Bool,+    -- | Indicates whether Amazon AppFlow includes deleted files in the flow run.+    includeDeletedRecords :: Prelude.Maybe Prelude.Bool,+    -- | The object specified in the Salesforce flow source.+    object' :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SalesforceSourceProperties' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'enableDynamicFieldUpdate', 'salesforceSourceProperties_enableDynamicFieldUpdate' - The flag that enables dynamic fetching of new (recently added) fields in+-- the Salesforce objects while running a flow.+--+-- 'includeDeletedRecords', 'salesforceSourceProperties_includeDeletedRecords' - Indicates whether Amazon AppFlow includes deleted files in the flow run.+--+-- 'object'', 'salesforceSourceProperties_object' - The object specified in the Salesforce flow source.+newSalesforceSourceProperties ::+  -- | 'object''+  Prelude.Text ->+  SalesforceSourceProperties+newSalesforceSourceProperties pObject_ =+  SalesforceSourceProperties'+    { enableDynamicFieldUpdate =+        Prelude.Nothing,+      includeDeletedRecords = Prelude.Nothing,+      object' = pObject_+    }++-- | The flag that enables dynamic fetching of new (recently added) fields in+-- the Salesforce objects while running a flow.+salesforceSourceProperties_enableDynamicFieldUpdate :: Lens.Lens' SalesforceSourceProperties (Prelude.Maybe Prelude.Bool)+salesforceSourceProperties_enableDynamicFieldUpdate = Lens.lens (\SalesforceSourceProperties' {enableDynamicFieldUpdate} -> enableDynamicFieldUpdate) (\s@SalesforceSourceProperties' {} a -> s {enableDynamicFieldUpdate = a} :: SalesforceSourceProperties)++-- | Indicates whether Amazon AppFlow includes deleted files in the flow run.+salesforceSourceProperties_includeDeletedRecords :: Lens.Lens' SalesforceSourceProperties (Prelude.Maybe Prelude.Bool)+salesforceSourceProperties_includeDeletedRecords = Lens.lens (\SalesforceSourceProperties' {includeDeletedRecords} -> includeDeletedRecords) (\s@SalesforceSourceProperties' {} a -> s {includeDeletedRecords = a} :: SalesforceSourceProperties)++-- | The object specified in the Salesforce flow source.+salesforceSourceProperties_object :: Lens.Lens' SalesforceSourceProperties Prelude.Text+salesforceSourceProperties_object = Lens.lens (\SalesforceSourceProperties' {object'} -> object') (\s@SalesforceSourceProperties' {} a -> s {object' = a} :: SalesforceSourceProperties)++instance Prelude.Hashable SalesforceSourceProperties where+  hashWithSalt _salt SalesforceSourceProperties' {..} =+    _salt+      `Prelude.hashWithSalt` enableDynamicFieldUpdate+      `Prelude.hashWithSalt` includeDeletedRecords+      `Prelude.hashWithSalt` object'++instance Prelude.NFData SalesforceSourceProperties where+  rnf SalesforceSourceProperties' {..} =+    Prelude.rnf enableDynamicFieldUpdate+      `Prelude.seq` Prelude.rnf includeDeletedRecords+      `Prelude.seq` Prelude.rnf object'++instance Data.ToJSON SalesforceSourceProperties where+  toJSON SalesforceSourceProperties' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("EnableDynamicFieldUpdate" Data..=)+              Prelude.<$> enableDynamicFieldUpdate,+            ("IncludeDeletedRecords" Data..=)+              Prelude.<$> includeDeletedRecords,+            Prelude.Just ("Object" Data..= object')+          ]+      )
+ gen/Amazonka/CustomerProfiles/Types/ScheduledTriggerProperties.hs view
@@ -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.CustomerProfiles.Types.ScheduledTriggerProperties+-- Copyright   : (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.CustomerProfiles.Types.ScheduledTriggerProperties where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types.DataPullMode+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Specifies the configuration details of a scheduled-trigger flow that you+-- define. Currently, these settings only apply to the scheduled-trigger+-- type.+--+-- /See:/ 'newScheduledTriggerProperties' smart constructor.+data ScheduledTriggerProperties = ScheduledTriggerProperties'+  { -- | Specifies whether a scheduled flow has an incremental data transfer or a+    -- complete data transfer for each flow run.+    dataPullMode :: Prelude.Maybe DataPullMode,+    -- | Specifies the date range for the records to import from the connector in+    -- the first flow run.+    firstExecutionFrom :: Prelude.Maybe Data.POSIX,+    -- | Specifies the scheduled end time for a scheduled-trigger flow.+    scheduleEndTime :: Prelude.Maybe Data.POSIX,+    -- | Specifies the optional offset that is added to the time interval for a+    -- schedule-triggered flow.+    scheduleOffset :: Prelude.Maybe Prelude.Natural,+    -- | Specifies the scheduled start time for a scheduled-trigger flow.+    scheduleStartTime :: Prelude.Maybe Data.POSIX,+    -- | Specifies the time zone used when referring to the date and time of a+    -- scheduled-triggered flow, such as America\/New_York.+    timezone :: Prelude.Maybe Prelude.Text,+    -- | The scheduling expression that determines the rate at which the schedule+    -- will run, for example rate (5 minutes).+    scheduleExpression :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ScheduledTriggerProperties' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'dataPullMode', 'scheduledTriggerProperties_dataPullMode' - Specifies whether a scheduled flow has an incremental data transfer or a+-- complete data transfer for each flow run.+--+-- 'firstExecutionFrom', 'scheduledTriggerProperties_firstExecutionFrom' - Specifies the date range for the records to import from the connector in+-- the first flow run.+--+-- 'scheduleEndTime', 'scheduledTriggerProperties_scheduleEndTime' - Specifies the scheduled end time for a scheduled-trigger flow.+--+-- 'scheduleOffset', 'scheduledTriggerProperties_scheduleOffset' - Specifies the optional offset that is added to the time interval for a+-- schedule-triggered flow.+--+-- 'scheduleStartTime', 'scheduledTriggerProperties_scheduleStartTime' - Specifies the scheduled start time for a scheduled-trigger flow.+--+-- 'timezone', 'scheduledTriggerProperties_timezone' - Specifies the time zone used when referring to the date and time of a+-- scheduled-triggered flow, such as America\/New_York.+--+-- 'scheduleExpression', 'scheduledTriggerProperties_scheduleExpression' - The scheduling expression that determines the rate at which the schedule+-- will run, for example rate (5 minutes).+newScheduledTriggerProperties ::+  -- | 'scheduleExpression'+  Prelude.Text ->+  ScheduledTriggerProperties+newScheduledTriggerProperties pScheduleExpression_ =+  ScheduledTriggerProperties'+    { dataPullMode =+        Prelude.Nothing,+      firstExecutionFrom = Prelude.Nothing,+      scheduleEndTime = Prelude.Nothing,+      scheduleOffset = Prelude.Nothing,+      scheduleStartTime = Prelude.Nothing,+      timezone = Prelude.Nothing,+      scheduleExpression = pScheduleExpression_+    }++-- | Specifies whether a scheduled flow has an incremental data transfer or a+-- complete data transfer for each flow run.+scheduledTriggerProperties_dataPullMode :: Lens.Lens' ScheduledTriggerProperties (Prelude.Maybe DataPullMode)+scheduledTriggerProperties_dataPullMode = Lens.lens (\ScheduledTriggerProperties' {dataPullMode} -> dataPullMode) (\s@ScheduledTriggerProperties' {} a -> s {dataPullMode = a} :: ScheduledTriggerProperties)++-- | Specifies the date range for the records to import from the connector in+-- the first flow run.+scheduledTriggerProperties_firstExecutionFrom :: Lens.Lens' ScheduledTriggerProperties (Prelude.Maybe Prelude.UTCTime)+scheduledTriggerProperties_firstExecutionFrom = Lens.lens (\ScheduledTriggerProperties' {firstExecutionFrom} -> firstExecutionFrom) (\s@ScheduledTriggerProperties' {} a -> s {firstExecutionFrom = a} :: ScheduledTriggerProperties) Prelude.. Lens.mapping Data._Time++-- | Specifies the scheduled end time for a scheduled-trigger flow.+scheduledTriggerProperties_scheduleEndTime :: Lens.Lens' ScheduledTriggerProperties (Prelude.Maybe Prelude.UTCTime)+scheduledTriggerProperties_scheduleEndTime = Lens.lens (\ScheduledTriggerProperties' {scheduleEndTime} -> scheduleEndTime) (\s@ScheduledTriggerProperties' {} a -> s {scheduleEndTime = a} :: ScheduledTriggerProperties) Prelude.. Lens.mapping Data._Time++-- | Specifies the optional offset that is added to the time interval for a+-- schedule-triggered flow.+scheduledTriggerProperties_scheduleOffset :: Lens.Lens' ScheduledTriggerProperties (Prelude.Maybe Prelude.Natural)+scheduledTriggerProperties_scheduleOffset = Lens.lens (\ScheduledTriggerProperties' {scheduleOffset} -> scheduleOffset) (\s@ScheduledTriggerProperties' {} a -> s {scheduleOffset = a} :: ScheduledTriggerProperties)++-- | Specifies the scheduled start time for a scheduled-trigger flow.+scheduledTriggerProperties_scheduleStartTime :: Lens.Lens' ScheduledTriggerProperties (Prelude.Maybe Prelude.UTCTime)+scheduledTriggerProperties_scheduleStartTime = Lens.lens (\ScheduledTriggerProperties' {scheduleStartTime} -> scheduleStartTime) (\s@ScheduledTriggerProperties' {} a -> s {scheduleStartTime = a} :: ScheduledTriggerProperties) Prelude.. Lens.mapping Data._Time++-- | Specifies the time zone used when referring to the date and time of a+-- scheduled-triggered flow, such as America\/New_York.+scheduledTriggerProperties_timezone :: Lens.Lens' ScheduledTriggerProperties (Prelude.Maybe Prelude.Text)+scheduledTriggerProperties_timezone = Lens.lens (\ScheduledTriggerProperties' {timezone} -> timezone) (\s@ScheduledTriggerProperties' {} a -> s {timezone = a} :: ScheduledTriggerProperties)++-- | The scheduling expression that determines the rate at which the schedule+-- will run, for example rate (5 minutes).+scheduledTriggerProperties_scheduleExpression :: Lens.Lens' ScheduledTriggerProperties Prelude.Text+scheduledTriggerProperties_scheduleExpression = Lens.lens (\ScheduledTriggerProperties' {scheduleExpression} -> scheduleExpression) (\s@ScheduledTriggerProperties' {} a -> s {scheduleExpression = a} :: ScheduledTriggerProperties)++instance Prelude.Hashable ScheduledTriggerProperties where+  hashWithSalt _salt ScheduledTriggerProperties' {..} =+    _salt+      `Prelude.hashWithSalt` dataPullMode+      `Prelude.hashWithSalt` firstExecutionFrom+      `Prelude.hashWithSalt` scheduleEndTime+      `Prelude.hashWithSalt` scheduleOffset+      `Prelude.hashWithSalt` scheduleStartTime+      `Prelude.hashWithSalt` timezone+      `Prelude.hashWithSalt` scheduleExpression++instance Prelude.NFData ScheduledTriggerProperties where+  rnf ScheduledTriggerProperties' {..} =+    Prelude.rnf dataPullMode+      `Prelude.seq` Prelude.rnf firstExecutionFrom+      `Prelude.seq` Prelude.rnf scheduleEndTime+      `Prelude.seq` Prelude.rnf scheduleOffset+      `Prelude.seq` Prelude.rnf scheduleStartTime+      `Prelude.seq` Prelude.rnf timezone+      `Prelude.seq` Prelude.rnf scheduleExpression++instance Data.ToJSON ScheduledTriggerProperties where+  toJSON ScheduledTriggerProperties' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("DataPullMode" Data..=) Prelude.<$> dataPullMode,+            ("FirstExecutionFrom" Data..=)+              Prelude.<$> firstExecutionFrom,+            ("ScheduleEndTime" Data..=)+              Prelude.<$> scheduleEndTime,+            ("ScheduleOffset" Data..=)+              Prelude.<$> scheduleOffset,+            ("ScheduleStartTime" Data..=)+              Prelude.<$> scheduleStartTime,+            ("Timezone" Data..=) Prelude.<$> timezone,+            Prelude.Just+              ("ScheduleExpression" Data..= scheduleExpression)+          ]+      )
+ gen/Amazonka/CustomerProfiles/Types/ServiceNowConnectorOperator.hs view
@@ -0,0 +1,166 @@+{-# 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.CustomerProfiles.Types.ServiceNowConnectorOperator+-- Copyright   : (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.CustomerProfiles.Types.ServiceNowConnectorOperator+  ( ServiceNowConnectorOperator+      ( ..,+        ServiceNowConnectorOperator_ADDITION,+        ServiceNowConnectorOperator_BETWEEN,+        ServiceNowConnectorOperator_CONTAINS,+        ServiceNowConnectorOperator_DIVISION,+        ServiceNowConnectorOperator_EQUAL_TO,+        ServiceNowConnectorOperator_GREATER_THAN,+        ServiceNowConnectorOperator_GREATER_THAN_OR_EQUAL_TO,+        ServiceNowConnectorOperator_LESS_THAN,+        ServiceNowConnectorOperator_LESS_THAN_OR_EQUAL_TO,+        ServiceNowConnectorOperator_MASK_ALL,+        ServiceNowConnectorOperator_MASK_FIRST_N,+        ServiceNowConnectorOperator_MASK_LAST_N,+        ServiceNowConnectorOperator_MULTIPLICATION,+        ServiceNowConnectorOperator_NOT_EQUAL_TO,+        ServiceNowConnectorOperator_NO_OP,+        ServiceNowConnectorOperator_PROJECTION,+        ServiceNowConnectorOperator_SUBTRACTION,+        ServiceNowConnectorOperator_VALIDATE_NON_NEGATIVE,+        ServiceNowConnectorOperator_VALIDATE_NON_NULL,+        ServiceNowConnectorOperator_VALIDATE_NON_ZERO,+        ServiceNowConnectorOperator_VALIDATE_NUMERIC+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ServiceNowConnectorOperator = ServiceNowConnectorOperator'+  { fromServiceNowConnectorOperator ::+      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 ServiceNowConnectorOperator_ADDITION :: ServiceNowConnectorOperator+pattern ServiceNowConnectorOperator_ADDITION = ServiceNowConnectorOperator' "ADDITION"++pattern ServiceNowConnectorOperator_BETWEEN :: ServiceNowConnectorOperator+pattern ServiceNowConnectorOperator_BETWEEN = ServiceNowConnectorOperator' "BETWEEN"++pattern ServiceNowConnectorOperator_CONTAINS :: ServiceNowConnectorOperator+pattern ServiceNowConnectorOperator_CONTAINS = ServiceNowConnectorOperator' "CONTAINS"++pattern ServiceNowConnectorOperator_DIVISION :: ServiceNowConnectorOperator+pattern ServiceNowConnectorOperator_DIVISION = ServiceNowConnectorOperator' "DIVISION"++pattern ServiceNowConnectorOperator_EQUAL_TO :: ServiceNowConnectorOperator+pattern ServiceNowConnectorOperator_EQUAL_TO = ServiceNowConnectorOperator' "EQUAL_TO"++pattern ServiceNowConnectorOperator_GREATER_THAN :: ServiceNowConnectorOperator+pattern ServiceNowConnectorOperator_GREATER_THAN = ServiceNowConnectorOperator' "GREATER_THAN"++pattern ServiceNowConnectorOperator_GREATER_THAN_OR_EQUAL_TO :: ServiceNowConnectorOperator+pattern ServiceNowConnectorOperator_GREATER_THAN_OR_EQUAL_TO = ServiceNowConnectorOperator' "GREATER_THAN_OR_EQUAL_TO"++pattern ServiceNowConnectorOperator_LESS_THAN :: ServiceNowConnectorOperator+pattern ServiceNowConnectorOperator_LESS_THAN = ServiceNowConnectorOperator' "LESS_THAN"++pattern ServiceNowConnectorOperator_LESS_THAN_OR_EQUAL_TO :: ServiceNowConnectorOperator+pattern ServiceNowConnectorOperator_LESS_THAN_OR_EQUAL_TO = ServiceNowConnectorOperator' "LESS_THAN_OR_EQUAL_TO"++pattern ServiceNowConnectorOperator_MASK_ALL :: ServiceNowConnectorOperator+pattern ServiceNowConnectorOperator_MASK_ALL = ServiceNowConnectorOperator' "MASK_ALL"++pattern ServiceNowConnectorOperator_MASK_FIRST_N :: ServiceNowConnectorOperator+pattern ServiceNowConnectorOperator_MASK_FIRST_N = ServiceNowConnectorOperator' "MASK_FIRST_N"++pattern ServiceNowConnectorOperator_MASK_LAST_N :: ServiceNowConnectorOperator+pattern ServiceNowConnectorOperator_MASK_LAST_N = ServiceNowConnectorOperator' "MASK_LAST_N"++pattern ServiceNowConnectorOperator_MULTIPLICATION :: ServiceNowConnectorOperator+pattern ServiceNowConnectorOperator_MULTIPLICATION = ServiceNowConnectorOperator' "MULTIPLICATION"++pattern ServiceNowConnectorOperator_NOT_EQUAL_TO :: ServiceNowConnectorOperator+pattern ServiceNowConnectorOperator_NOT_EQUAL_TO = ServiceNowConnectorOperator' "NOT_EQUAL_TO"++pattern ServiceNowConnectorOperator_NO_OP :: ServiceNowConnectorOperator+pattern ServiceNowConnectorOperator_NO_OP = ServiceNowConnectorOperator' "NO_OP"++pattern ServiceNowConnectorOperator_PROJECTION :: ServiceNowConnectorOperator+pattern ServiceNowConnectorOperator_PROJECTION = ServiceNowConnectorOperator' "PROJECTION"++pattern ServiceNowConnectorOperator_SUBTRACTION :: ServiceNowConnectorOperator+pattern ServiceNowConnectorOperator_SUBTRACTION = ServiceNowConnectorOperator' "SUBTRACTION"++pattern ServiceNowConnectorOperator_VALIDATE_NON_NEGATIVE :: ServiceNowConnectorOperator+pattern ServiceNowConnectorOperator_VALIDATE_NON_NEGATIVE = ServiceNowConnectorOperator' "VALIDATE_NON_NEGATIVE"++pattern ServiceNowConnectorOperator_VALIDATE_NON_NULL :: ServiceNowConnectorOperator+pattern ServiceNowConnectorOperator_VALIDATE_NON_NULL = ServiceNowConnectorOperator' "VALIDATE_NON_NULL"++pattern ServiceNowConnectorOperator_VALIDATE_NON_ZERO :: ServiceNowConnectorOperator+pattern ServiceNowConnectorOperator_VALIDATE_NON_ZERO = ServiceNowConnectorOperator' "VALIDATE_NON_ZERO"++pattern ServiceNowConnectorOperator_VALIDATE_NUMERIC :: ServiceNowConnectorOperator+pattern ServiceNowConnectorOperator_VALIDATE_NUMERIC = ServiceNowConnectorOperator' "VALIDATE_NUMERIC"++{-# COMPLETE+  ServiceNowConnectorOperator_ADDITION,+  ServiceNowConnectorOperator_BETWEEN,+  ServiceNowConnectorOperator_CONTAINS,+  ServiceNowConnectorOperator_DIVISION,+  ServiceNowConnectorOperator_EQUAL_TO,+  ServiceNowConnectorOperator_GREATER_THAN,+  ServiceNowConnectorOperator_GREATER_THAN_OR_EQUAL_TO,+  ServiceNowConnectorOperator_LESS_THAN,+  ServiceNowConnectorOperator_LESS_THAN_OR_EQUAL_TO,+  ServiceNowConnectorOperator_MASK_ALL,+  ServiceNowConnectorOperator_MASK_FIRST_N,+  ServiceNowConnectorOperator_MASK_LAST_N,+  ServiceNowConnectorOperator_MULTIPLICATION,+  ServiceNowConnectorOperator_NOT_EQUAL_TO,+  ServiceNowConnectorOperator_NO_OP,+  ServiceNowConnectorOperator_PROJECTION,+  ServiceNowConnectorOperator_SUBTRACTION,+  ServiceNowConnectorOperator_VALIDATE_NON_NEGATIVE,+  ServiceNowConnectorOperator_VALIDATE_NON_NULL,+  ServiceNowConnectorOperator_VALIDATE_NON_ZERO,+  ServiceNowConnectorOperator_VALIDATE_NUMERIC,+  ServiceNowConnectorOperator'+  #-}
+ gen/Amazonka/CustomerProfiles/Types/ServiceNowSourceProperties.hs view
@@ -0,0 +1,70 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.Types.ServiceNowSourceProperties+-- Copyright   : (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.CustomerProfiles.Types.ServiceNowSourceProperties 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 properties that are applied when ServiceNow is being used as a+-- source.+--+-- /See:/ 'newServiceNowSourceProperties' smart constructor.+data ServiceNowSourceProperties = ServiceNowSourceProperties'+  { -- | The object specified in the ServiceNow flow source.+    object' :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ServiceNowSourceProperties' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'object'', 'serviceNowSourceProperties_object' - The object specified in the ServiceNow flow source.+newServiceNowSourceProperties ::+  -- | 'object''+  Prelude.Text ->+  ServiceNowSourceProperties+newServiceNowSourceProperties pObject_ =+  ServiceNowSourceProperties' {object' = pObject_}++-- | The object specified in the ServiceNow flow source.+serviceNowSourceProperties_object :: Lens.Lens' ServiceNowSourceProperties Prelude.Text+serviceNowSourceProperties_object = Lens.lens (\ServiceNowSourceProperties' {object'} -> object') (\s@ServiceNowSourceProperties' {} a -> s {object' = a} :: ServiceNowSourceProperties)++instance Prelude.Hashable ServiceNowSourceProperties where+  hashWithSalt _salt ServiceNowSourceProperties' {..} =+    _salt `Prelude.hashWithSalt` object'++instance Prelude.NFData ServiceNowSourceProperties where+  rnf ServiceNowSourceProperties' {..} =+    Prelude.rnf object'++instance Data.ToJSON ServiceNowSourceProperties where+  toJSON ServiceNowSourceProperties' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("Object" Data..= object')]+      )
+ gen/Amazonka/CustomerProfiles/Types/SourceConnectorProperties.hs view
@@ -0,0 +1,136 @@+{-# 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.CustomerProfiles.Types.SourceConnectorProperties+-- Copyright   : (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.CustomerProfiles.Types.SourceConnectorProperties where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types.MarketoSourceProperties+import Amazonka.CustomerProfiles.Types.S3SourceProperties+import Amazonka.CustomerProfiles.Types.SalesforceSourceProperties+import Amazonka.CustomerProfiles.Types.ServiceNowSourceProperties+import Amazonka.CustomerProfiles.Types.ZendeskSourceProperties+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Specifies the information that is required to query a particular Amazon+-- AppFlow connector. Customer Profiles supports Salesforce, Zendesk,+-- Marketo, ServiceNow and Amazon S3.+--+-- /See:/ 'newSourceConnectorProperties' smart constructor.+data SourceConnectorProperties = SourceConnectorProperties'+  { -- | The properties that are applied when Marketo is being used as a source.+    marketo :: Prelude.Maybe MarketoSourceProperties,+    -- | The properties that are applied when Amazon S3 is being used as the flow+    -- source.+    s3 :: Prelude.Maybe S3SourceProperties,+    -- | The properties that are applied when Salesforce is being used as a+    -- source.+    salesforce :: Prelude.Maybe SalesforceSourceProperties,+    -- | The properties that are applied when ServiceNow is being used as a+    -- source.+    serviceNow :: Prelude.Maybe ServiceNowSourceProperties,+    -- | The properties that are applied when using Zendesk as a flow source.+    zendesk :: Prelude.Maybe ZendeskSourceProperties+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SourceConnectorProperties' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'marketo', 'sourceConnectorProperties_marketo' - The properties that are applied when Marketo is being used as a source.+--+-- 's3', 'sourceConnectorProperties_s3' - The properties that are applied when Amazon S3 is being used as the flow+-- source.+--+-- 'salesforce', 'sourceConnectorProperties_salesforce' - The properties that are applied when Salesforce is being used as a+-- source.+--+-- 'serviceNow', 'sourceConnectorProperties_serviceNow' - The properties that are applied when ServiceNow is being used as a+-- source.+--+-- 'zendesk', 'sourceConnectorProperties_zendesk' - The properties that are applied when using Zendesk as a flow source.+newSourceConnectorProperties ::+  SourceConnectorProperties+newSourceConnectorProperties =+  SourceConnectorProperties'+    { marketo =+        Prelude.Nothing,+      s3 = Prelude.Nothing,+      salesforce = Prelude.Nothing,+      serviceNow = Prelude.Nothing,+      zendesk = Prelude.Nothing+    }++-- | The properties that are applied when Marketo is being used as a source.+sourceConnectorProperties_marketo :: Lens.Lens' SourceConnectorProperties (Prelude.Maybe MarketoSourceProperties)+sourceConnectorProperties_marketo = Lens.lens (\SourceConnectorProperties' {marketo} -> marketo) (\s@SourceConnectorProperties' {} a -> s {marketo = a} :: SourceConnectorProperties)++-- | The properties that are applied when Amazon S3 is being used as the flow+-- source.+sourceConnectorProperties_s3 :: Lens.Lens' SourceConnectorProperties (Prelude.Maybe S3SourceProperties)+sourceConnectorProperties_s3 = Lens.lens (\SourceConnectorProperties' {s3} -> s3) (\s@SourceConnectorProperties' {} a -> s {s3 = a} :: SourceConnectorProperties)++-- | The properties that are applied when Salesforce is being used as a+-- source.+sourceConnectorProperties_salesforce :: Lens.Lens' SourceConnectorProperties (Prelude.Maybe SalesforceSourceProperties)+sourceConnectorProperties_salesforce = Lens.lens (\SourceConnectorProperties' {salesforce} -> salesforce) (\s@SourceConnectorProperties' {} a -> s {salesforce = a} :: SourceConnectorProperties)++-- | The properties that are applied when ServiceNow is being used as a+-- source.+sourceConnectorProperties_serviceNow :: Lens.Lens' SourceConnectorProperties (Prelude.Maybe ServiceNowSourceProperties)+sourceConnectorProperties_serviceNow = Lens.lens (\SourceConnectorProperties' {serviceNow} -> serviceNow) (\s@SourceConnectorProperties' {} a -> s {serviceNow = a} :: SourceConnectorProperties)++-- | The properties that are applied when using Zendesk as a flow source.+sourceConnectorProperties_zendesk :: Lens.Lens' SourceConnectorProperties (Prelude.Maybe ZendeskSourceProperties)+sourceConnectorProperties_zendesk = Lens.lens (\SourceConnectorProperties' {zendesk} -> zendesk) (\s@SourceConnectorProperties' {} a -> s {zendesk = a} :: SourceConnectorProperties)++instance Prelude.Hashable SourceConnectorProperties where+  hashWithSalt _salt SourceConnectorProperties' {..} =+    _salt+      `Prelude.hashWithSalt` marketo+      `Prelude.hashWithSalt` s3+      `Prelude.hashWithSalt` salesforce+      `Prelude.hashWithSalt` serviceNow+      `Prelude.hashWithSalt` zendesk++instance Prelude.NFData SourceConnectorProperties where+  rnf SourceConnectorProperties' {..} =+    Prelude.rnf marketo+      `Prelude.seq` Prelude.rnf s3+      `Prelude.seq` Prelude.rnf salesforce+      `Prelude.seq` Prelude.rnf serviceNow+      `Prelude.seq` Prelude.rnf zendesk++instance Data.ToJSON SourceConnectorProperties where+  toJSON SourceConnectorProperties' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Marketo" Data..=) Prelude.<$> marketo,+            ("S3" Data..=) Prelude.<$> s3,+            ("Salesforce" Data..=) Prelude.<$> salesforce,+            ("ServiceNow" Data..=) Prelude.<$> serviceNow,+            ("Zendesk" Data..=) Prelude.<$> zendesk+          ]+      )
+ gen/Amazonka/CustomerProfiles/Types/SourceConnectorType.hs view
@@ -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.CustomerProfiles.Types.SourceConnectorType+-- Copyright   : (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.CustomerProfiles.Types.SourceConnectorType+  ( SourceConnectorType+      ( ..,+        SourceConnectorType_Marketo,+        SourceConnectorType_S3,+        SourceConnectorType_Salesforce,+        SourceConnectorType_Servicenow,+        SourceConnectorType_Zendesk+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype SourceConnectorType = SourceConnectorType'+  { fromSourceConnectorType ::+      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 SourceConnectorType_Marketo :: SourceConnectorType+pattern SourceConnectorType_Marketo = SourceConnectorType' "Marketo"++pattern SourceConnectorType_S3 :: SourceConnectorType+pattern SourceConnectorType_S3 = SourceConnectorType' "S3"++pattern SourceConnectorType_Salesforce :: SourceConnectorType+pattern SourceConnectorType_Salesforce = SourceConnectorType' "Salesforce"++pattern SourceConnectorType_Servicenow :: SourceConnectorType+pattern SourceConnectorType_Servicenow = SourceConnectorType' "Servicenow"++pattern SourceConnectorType_Zendesk :: SourceConnectorType+pattern SourceConnectorType_Zendesk = SourceConnectorType' "Zendesk"++{-# COMPLETE+  SourceConnectorType_Marketo,+  SourceConnectorType_S3,+  SourceConnectorType_Salesforce,+  SourceConnectorType_Servicenow,+  SourceConnectorType_Zendesk,+  SourceConnectorType'+  #-}
+ gen/Amazonka/CustomerProfiles/Types/SourceFlowConfig.hs view
@@ -0,0 +1,136 @@+{-# 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.CustomerProfiles.Types.SourceFlowConfig+-- Copyright   : (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.CustomerProfiles.Types.SourceFlowConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types.IncrementalPullConfig+import Amazonka.CustomerProfiles.Types.SourceConnectorProperties+import Amazonka.CustomerProfiles.Types.SourceConnectorType+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Contains information about the configuration of the source connector+-- used in the flow.+--+-- /See:/ 'newSourceFlowConfig' smart constructor.+data SourceFlowConfig = SourceFlowConfig'+  { -- | The name of the AppFlow connector profile. This name must be unique for+    -- each connector profile in the AWS account.+    connectorProfileName :: Prelude.Maybe Prelude.Text,+    -- | Defines the configuration for a scheduled incremental data pull. If a+    -- valid configuration is provided, the fields specified in the+    -- configuration are used when querying for the incremental data pull.+    incrementalPullConfig :: Prelude.Maybe IncrementalPullConfig,+    -- | The type of connector, such as Salesforce, Marketo, and so on.+    connectorType :: SourceConnectorType,+    -- | Specifies the information that is required to query a particular source+    -- connector.+    sourceConnectorProperties :: SourceConnectorProperties+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SourceFlowConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'connectorProfileName', 'sourceFlowConfig_connectorProfileName' - The name of the AppFlow connector profile. This name must be unique for+-- each connector profile in the AWS account.+--+-- 'incrementalPullConfig', 'sourceFlowConfig_incrementalPullConfig' - Defines the configuration for a scheduled incremental data pull. If a+-- valid configuration is provided, the fields specified in the+-- configuration are used when querying for the incremental data pull.+--+-- 'connectorType', 'sourceFlowConfig_connectorType' - The type of connector, such as Salesforce, Marketo, and so on.+--+-- 'sourceConnectorProperties', 'sourceFlowConfig_sourceConnectorProperties' - Specifies the information that is required to query a particular source+-- connector.+newSourceFlowConfig ::+  -- | 'connectorType'+  SourceConnectorType ->+  -- | 'sourceConnectorProperties'+  SourceConnectorProperties ->+  SourceFlowConfig+newSourceFlowConfig+  pConnectorType_+  pSourceConnectorProperties_ =+    SourceFlowConfig'+      { connectorProfileName =+          Prelude.Nothing,+        incrementalPullConfig = Prelude.Nothing,+        connectorType = pConnectorType_,+        sourceConnectorProperties =+          pSourceConnectorProperties_+      }++-- | The name of the AppFlow connector profile. This name must be unique for+-- each connector profile in the AWS account.+sourceFlowConfig_connectorProfileName :: Lens.Lens' SourceFlowConfig (Prelude.Maybe Prelude.Text)+sourceFlowConfig_connectorProfileName = Lens.lens (\SourceFlowConfig' {connectorProfileName} -> connectorProfileName) (\s@SourceFlowConfig' {} a -> s {connectorProfileName = a} :: SourceFlowConfig)++-- | Defines the configuration for a scheduled incremental data pull. If a+-- valid configuration is provided, the fields specified in the+-- configuration are used when querying for the incremental data pull.+sourceFlowConfig_incrementalPullConfig :: Lens.Lens' SourceFlowConfig (Prelude.Maybe IncrementalPullConfig)+sourceFlowConfig_incrementalPullConfig = Lens.lens (\SourceFlowConfig' {incrementalPullConfig} -> incrementalPullConfig) (\s@SourceFlowConfig' {} a -> s {incrementalPullConfig = a} :: SourceFlowConfig)++-- | The type of connector, such as Salesforce, Marketo, and so on.+sourceFlowConfig_connectorType :: Lens.Lens' SourceFlowConfig SourceConnectorType+sourceFlowConfig_connectorType = Lens.lens (\SourceFlowConfig' {connectorType} -> connectorType) (\s@SourceFlowConfig' {} a -> s {connectorType = a} :: SourceFlowConfig)++-- | Specifies the information that is required to query a particular source+-- connector.+sourceFlowConfig_sourceConnectorProperties :: Lens.Lens' SourceFlowConfig SourceConnectorProperties+sourceFlowConfig_sourceConnectorProperties = Lens.lens (\SourceFlowConfig' {sourceConnectorProperties} -> sourceConnectorProperties) (\s@SourceFlowConfig' {} a -> s {sourceConnectorProperties = a} :: SourceFlowConfig)++instance Prelude.Hashable SourceFlowConfig where+  hashWithSalt _salt SourceFlowConfig' {..} =+    _salt+      `Prelude.hashWithSalt` connectorProfileName+      `Prelude.hashWithSalt` incrementalPullConfig+      `Prelude.hashWithSalt` connectorType+      `Prelude.hashWithSalt` sourceConnectorProperties++instance Prelude.NFData SourceFlowConfig where+  rnf SourceFlowConfig' {..} =+    Prelude.rnf connectorProfileName+      `Prelude.seq` Prelude.rnf incrementalPullConfig+      `Prelude.seq` Prelude.rnf connectorType+      `Prelude.seq` Prelude.rnf sourceConnectorProperties++instance Data.ToJSON SourceFlowConfig where+  toJSON SourceFlowConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ConnectorProfileName" Data..=)+              Prelude.<$> connectorProfileName,+            ("IncrementalPullConfig" Data..=)+              Prelude.<$> incrementalPullConfig,+            Prelude.Just ("ConnectorType" Data..= connectorType),+            Prelude.Just+              ( "SourceConnectorProperties"+                  Data..= sourceConnectorProperties+              )+          ]+      )
+ gen/Amazonka/CustomerProfiles/Types/StandardIdentifier.hs view
@@ -0,0 +1,101 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.Types.StandardIdentifier+-- Copyright   : (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.CustomerProfiles.Types.StandardIdentifier+  ( StandardIdentifier+      ( ..,+        StandardIdentifier_ASSET,+        StandardIdentifier_CASE,+        StandardIdentifier_LOOKUP_ONLY,+        StandardIdentifier_NEW_ONLY,+        StandardIdentifier_ORDER,+        StandardIdentifier_PROFILE,+        StandardIdentifier_SECONDARY,+        StandardIdentifier_UNIQUE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype StandardIdentifier = StandardIdentifier'+  { fromStandardIdentifier ::+      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 StandardIdentifier_ASSET :: StandardIdentifier+pattern StandardIdentifier_ASSET = StandardIdentifier' "ASSET"++pattern StandardIdentifier_CASE :: StandardIdentifier+pattern StandardIdentifier_CASE = StandardIdentifier' "CASE"++pattern StandardIdentifier_LOOKUP_ONLY :: StandardIdentifier+pattern StandardIdentifier_LOOKUP_ONLY = StandardIdentifier' "LOOKUP_ONLY"++pattern StandardIdentifier_NEW_ONLY :: StandardIdentifier+pattern StandardIdentifier_NEW_ONLY = StandardIdentifier' "NEW_ONLY"++pattern StandardIdentifier_ORDER :: StandardIdentifier+pattern StandardIdentifier_ORDER = StandardIdentifier' "ORDER"++pattern StandardIdentifier_PROFILE :: StandardIdentifier+pattern StandardIdentifier_PROFILE = StandardIdentifier' "PROFILE"++pattern StandardIdentifier_SECONDARY :: StandardIdentifier+pattern StandardIdentifier_SECONDARY = StandardIdentifier' "SECONDARY"++pattern StandardIdentifier_UNIQUE :: StandardIdentifier+pattern StandardIdentifier_UNIQUE = StandardIdentifier' "UNIQUE"++{-# COMPLETE+  StandardIdentifier_ASSET,+  StandardIdentifier_CASE,+  StandardIdentifier_LOOKUP_ONLY,+  StandardIdentifier_NEW_ONLY,+  StandardIdentifier_ORDER,+  StandardIdentifier_PROFILE,+  StandardIdentifier_SECONDARY,+  StandardIdentifier_UNIQUE,+  StandardIdentifier'+  #-}
+ gen/Amazonka/CustomerProfiles/Types/Status.hs view
@@ -0,0 +1,93 @@+{-# 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.CustomerProfiles.Types.Status+-- Copyright   : (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.CustomerProfiles.Types.Status+  ( Status+      ( ..,+        Status_CANCELLED,+        Status_COMPLETE,+        Status_FAILED,+        Status_IN_PROGRESS,+        Status_NOT_STARTED,+        Status_RETRY,+        Status_SPLIT+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype Status = Status' {fromStatus :: 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 Status_CANCELLED :: Status+pattern Status_CANCELLED = Status' "CANCELLED"++pattern Status_COMPLETE :: Status+pattern Status_COMPLETE = Status' "COMPLETE"++pattern Status_FAILED :: Status+pattern Status_FAILED = Status' "FAILED"++pattern Status_IN_PROGRESS :: Status+pattern Status_IN_PROGRESS = Status' "IN_PROGRESS"++pattern Status_NOT_STARTED :: Status+pattern Status_NOT_STARTED = Status' "NOT_STARTED"++pattern Status_RETRY :: Status+pattern Status_RETRY = Status' "RETRY"++pattern Status_SPLIT :: Status+pattern Status_SPLIT = Status' "SPLIT"++{-# COMPLETE+  Status_CANCELLED,+  Status_COMPLETE,+  Status_FAILED,+  Status_IN_PROGRESS,+  Status_NOT_STARTED,+  Status_RETRY,+  Status_SPLIT,+  Status'+  #-}
+ gen/Amazonka/CustomerProfiles/Types/Task.hs view
@@ -0,0 +1,137 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.Types.Task+-- Copyright   : (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.CustomerProfiles.Types.Task where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types.ConnectorOperator+import Amazonka.CustomerProfiles.Types.OperatorPropertiesKeys+import Amazonka.CustomerProfiles.Types.TaskType+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A class for modeling different type of tasks. Task implementation varies+-- based on the TaskType.+--+-- /See:/ 'newTask' smart constructor.+data Task = Task'+  { -- | The operation to be performed on the provided source fields.+    connectorOperator :: Prelude.Maybe ConnectorOperator,+    -- | A field in a destination connector, or a field value against which+    -- Amazon AppFlow validates a source field.+    destinationField :: Prelude.Maybe Prelude.Text,+    -- | A map used to store task-related information. The service looks for+    -- particular information based on the TaskType.+    taskProperties :: Prelude.Maybe (Prelude.HashMap OperatorPropertiesKeys Prelude.Text),+    -- | The source fields to which a particular task is applied.+    sourceFields :: [Prelude.Text],+    -- | Specifies the particular task implementation that Amazon AppFlow+    -- performs.+    taskType :: TaskType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Task' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'connectorOperator', 'task_connectorOperator' - The operation to be performed on the provided source fields.+--+-- 'destinationField', 'task_destinationField' - A field in a destination connector, or a field value against which+-- Amazon AppFlow validates a source field.+--+-- 'taskProperties', 'task_taskProperties' - A map used to store task-related information. The service looks for+-- particular information based on the TaskType.+--+-- 'sourceFields', 'task_sourceFields' - The source fields to which a particular task is applied.+--+-- 'taskType', 'task_taskType' - Specifies the particular task implementation that Amazon AppFlow+-- performs.+newTask ::+  -- | 'taskType'+  TaskType ->+  Task+newTask pTaskType_ =+  Task'+    { connectorOperator = Prelude.Nothing,+      destinationField = Prelude.Nothing,+      taskProperties = Prelude.Nothing,+      sourceFields = Prelude.mempty,+      taskType = pTaskType_+    }++-- | The operation to be performed on the provided source fields.+task_connectorOperator :: Lens.Lens' Task (Prelude.Maybe ConnectorOperator)+task_connectorOperator = Lens.lens (\Task' {connectorOperator} -> connectorOperator) (\s@Task' {} a -> s {connectorOperator = a} :: Task)++-- | A field in a destination connector, or a field value against which+-- Amazon AppFlow validates a source field.+task_destinationField :: Lens.Lens' Task (Prelude.Maybe Prelude.Text)+task_destinationField = Lens.lens (\Task' {destinationField} -> destinationField) (\s@Task' {} a -> s {destinationField = a} :: Task)++-- | A map used to store task-related information. The service looks for+-- particular information based on the TaskType.+task_taskProperties :: Lens.Lens' Task (Prelude.Maybe (Prelude.HashMap OperatorPropertiesKeys Prelude.Text))+task_taskProperties = Lens.lens (\Task' {taskProperties} -> taskProperties) (\s@Task' {} a -> s {taskProperties = a} :: Task) Prelude.. Lens.mapping Lens.coerced++-- | The source fields to which a particular task is applied.+task_sourceFields :: Lens.Lens' Task [Prelude.Text]+task_sourceFields = Lens.lens (\Task' {sourceFields} -> sourceFields) (\s@Task' {} a -> s {sourceFields = a} :: Task) Prelude.. Lens.coerced++-- | Specifies the particular task implementation that Amazon AppFlow+-- performs.+task_taskType :: Lens.Lens' Task TaskType+task_taskType = Lens.lens (\Task' {taskType} -> taskType) (\s@Task' {} a -> s {taskType = a} :: Task)++instance Prelude.Hashable Task where+  hashWithSalt _salt Task' {..} =+    _salt+      `Prelude.hashWithSalt` connectorOperator+      `Prelude.hashWithSalt` destinationField+      `Prelude.hashWithSalt` taskProperties+      `Prelude.hashWithSalt` sourceFields+      `Prelude.hashWithSalt` taskType++instance Prelude.NFData Task where+  rnf Task' {..} =+    Prelude.rnf connectorOperator+      `Prelude.seq` Prelude.rnf destinationField+      `Prelude.seq` Prelude.rnf taskProperties+      `Prelude.seq` Prelude.rnf sourceFields+      `Prelude.seq` Prelude.rnf taskType++instance Data.ToJSON Task where+  toJSON Task' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ConnectorOperator" Data..=)+              Prelude.<$> connectorOperator,+            ("DestinationField" Data..=)+              Prelude.<$> destinationField,+            ("TaskProperties" Data..=)+              Prelude.<$> taskProperties,+            Prelude.Just ("SourceFields" Data..= sourceFields),+            Prelude.Just ("TaskType" Data..= taskType)+          ]+      )
+ gen/Amazonka/CustomerProfiles/Types/TaskType.hs view
@@ -0,0 +1,96 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.Types.TaskType+-- Copyright   : (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.CustomerProfiles.Types.TaskType+  ( TaskType+      ( ..,+        TaskType_Arithmetic,+        TaskType_Filter,+        TaskType_Map,+        TaskType_Mask,+        TaskType_Merge,+        TaskType_Truncate,+        TaskType_Validate+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype TaskType = TaskType'+  { fromTaskType ::+      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 TaskType_Arithmetic :: TaskType+pattern TaskType_Arithmetic = TaskType' "Arithmetic"++pattern TaskType_Filter :: TaskType+pattern TaskType_Filter = TaskType' "Filter"++pattern TaskType_Map :: TaskType+pattern TaskType_Map = TaskType' "Map"++pattern TaskType_Mask :: TaskType+pattern TaskType_Mask = TaskType' "Mask"++pattern TaskType_Merge :: TaskType+pattern TaskType_Merge = TaskType' "Merge"++pattern TaskType_Truncate :: TaskType+pattern TaskType_Truncate = TaskType' "Truncate"++pattern TaskType_Validate :: TaskType+pattern TaskType_Validate = TaskType' "Validate"++{-# COMPLETE+  TaskType_Arithmetic,+  TaskType_Filter,+  TaskType_Map,+  TaskType_Mask,+  TaskType_Merge,+  TaskType_Truncate,+  TaskType_Validate,+  TaskType'+  #-}
+ gen/Amazonka/CustomerProfiles/Types/TriggerConfig.hs view
@@ -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.CustomerProfiles.Types.TriggerConfig+-- Copyright   : (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.CustomerProfiles.Types.TriggerConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types.TriggerProperties+import Amazonka.CustomerProfiles.Types.TriggerType+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The trigger settings that determine how and when Amazon AppFlow runs the+-- specified flow.+--+-- /See:/ 'newTriggerConfig' smart constructor.+data TriggerConfig = TriggerConfig'+  { -- | Specifies the configuration details of a schedule-triggered flow that+    -- you define. Currently, these settings only apply to the Scheduled+    -- trigger type.+    triggerProperties :: Prelude.Maybe TriggerProperties,+    -- | Specifies the type of flow trigger. It can be OnDemand, Scheduled, or+    -- Event.+    triggerType :: TriggerType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TriggerConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'triggerProperties', 'triggerConfig_triggerProperties' - Specifies the configuration details of a schedule-triggered flow that+-- you define. Currently, these settings only apply to the Scheduled+-- trigger type.+--+-- 'triggerType', 'triggerConfig_triggerType' - Specifies the type of flow trigger. It can be OnDemand, Scheduled, or+-- Event.+newTriggerConfig ::+  -- | 'triggerType'+  TriggerType ->+  TriggerConfig+newTriggerConfig pTriggerType_ =+  TriggerConfig'+    { triggerProperties = Prelude.Nothing,+      triggerType = pTriggerType_+    }++-- | Specifies the configuration details of a schedule-triggered flow that+-- you define. Currently, these settings only apply to the Scheduled+-- trigger type.+triggerConfig_triggerProperties :: Lens.Lens' TriggerConfig (Prelude.Maybe TriggerProperties)+triggerConfig_triggerProperties = Lens.lens (\TriggerConfig' {triggerProperties} -> triggerProperties) (\s@TriggerConfig' {} a -> s {triggerProperties = a} :: TriggerConfig)++-- | Specifies the type of flow trigger. It can be OnDemand, Scheduled, or+-- Event.+triggerConfig_triggerType :: Lens.Lens' TriggerConfig TriggerType+triggerConfig_triggerType = Lens.lens (\TriggerConfig' {triggerType} -> triggerType) (\s@TriggerConfig' {} a -> s {triggerType = a} :: TriggerConfig)++instance Prelude.Hashable TriggerConfig where+  hashWithSalt _salt TriggerConfig' {..} =+    _salt+      `Prelude.hashWithSalt` triggerProperties+      `Prelude.hashWithSalt` triggerType++instance Prelude.NFData TriggerConfig where+  rnf TriggerConfig' {..} =+    Prelude.rnf triggerProperties+      `Prelude.seq` Prelude.rnf triggerType++instance Data.ToJSON TriggerConfig where+  toJSON TriggerConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("TriggerProperties" Data..=)+              Prelude.<$> triggerProperties,+            Prelude.Just ("TriggerType" Data..= triggerType)+          ]+      )
+ gen/Amazonka/CustomerProfiles/Types/TriggerProperties.hs view
@@ -0,0 +1,71 @@+{-# 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.CustomerProfiles.Types.TriggerProperties+-- Copyright   : (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.CustomerProfiles.Types.TriggerProperties where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types.ScheduledTriggerProperties+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Specifies the configuration details that control the trigger for a flow.+-- Currently, these settings only apply to the Scheduled trigger type.+--+-- /See:/ 'newTriggerProperties' smart constructor.+data TriggerProperties = TriggerProperties'+  { -- | Specifies the configuration details of a schedule-triggered flow that+    -- you define.+    scheduled :: Prelude.Maybe ScheduledTriggerProperties+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TriggerProperties' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'scheduled', 'triggerProperties_scheduled' - Specifies the configuration details of a schedule-triggered flow that+-- you define.+newTriggerProperties ::+  TriggerProperties+newTriggerProperties =+  TriggerProperties' {scheduled = Prelude.Nothing}++-- | Specifies the configuration details of a schedule-triggered flow that+-- you define.+triggerProperties_scheduled :: Lens.Lens' TriggerProperties (Prelude.Maybe ScheduledTriggerProperties)+triggerProperties_scheduled = Lens.lens (\TriggerProperties' {scheduled} -> scheduled) (\s@TriggerProperties' {} a -> s {scheduled = a} :: TriggerProperties)++instance Prelude.Hashable TriggerProperties where+  hashWithSalt _salt TriggerProperties' {..} =+    _salt `Prelude.hashWithSalt` scheduled++instance Prelude.NFData TriggerProperties where+  rnf TriggerProperties' {..} = Prelude.rnf scheduled++instance Data.ToJSON TriggerProperties where+  toJSON TriggerProperties' {..} =+    Data.object+      ( Prelude.catMaybes+          [("Scheduled" Data..=) Prelude.<$> scheduled]+      )
+ gen/Amazonka/CustomerProfiles/Types/TriggerType.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.Types.TriggerType+-- Copyright   : (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.CustomerProfiles.Types.TriggerType+  ( TriggerType+      ( ..,+        TriggerType_Event,+        TriggerType_OnDemand,+        TriggerType_Scheduled+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype TriggerType = TriggerType'+  { fromTriggerType ::+      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 TriggerType_Event :: TriggerType+pattern TriggerType_Event = TriggerType' "Event"++pattern TriggerType_OnDemand :: TriggerType+pattern TriggerType_OnDemand = TriggerType' "OnDemand"++pattern TriggerType_Scheduled :: TriggerType+pattern TriggerType_Scheduled = TriggerType' "Scheduled"++{-# COMPLETE+  TriggerType_Event,+  TriggerType_OnDemand,+  TriggerType_Scheduled,+  TriggerType'+  #-}
+ gen/Amazonka/CustomerProfiles/Types/UpdateAddress.hs view
@@ -0,0 +1,179 @@+{-# 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.CustomerProfiles.Types.UpdateAddress+-- Copyright   : (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.CustomerProfiles.Types.UpdateAddress 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++-- | Updates associated with the address properties of a customer profile.+--+-- /See:/ 'newUpdateAddress' smart constructor.+data UpdateAddress = UpdateAddress'+  { -- | The first line of a customer address.+    address1 :: Prelude.Maybe Prelude.Text,+    -- | The second line of a customer address.+    address2 :: Prelude.Maybe Prelude.Text,+    -- | The third line of a customer address.+    address3 :: Prelude.Maybe Prelude.Text,+    -- | The fourth line of a customer address.+    address4 :: Prelude.Maybe Prelude.Text,+    -- | The city in which a customer lives.+    city :: Prelude.Maybe Prelude.Text,+    -- | The country in which a customer lives.+    country :: Prelude.Maybe Prelude.Text,+    -- | The county in which a customer lives.+    county :: Prelude.Maybe Prelude.Text,+    -- | The postal code of a customer address.+    postalCode :: Prelude.Maybe Prelude.Text,+    -- | The province in which a customer lives.+    province :: Prelude.Maybe Prelude.Text,+    -- | The state in which a customer lives.+    state :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateAddress' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'address1', 'updateAddress_address1' - The first line of a customer address.+--+-- 'address2', 'updateAddress_address2' - The second line of a customer address.+--+-- 'address3', 'updateAddress_address3' - The third line of a customer address.+--+-- 'address4', 'updateAddress_address4' - The fourth line of a customer address.+--+-- 'city', 'updateAddress_city' - The city in which a customer lives.+--+-- 'country', 'updateAddress_country' - The country in which a customer lives.+--+-- 'county', 'updateAddress_county' - The county in which a customer lives.+--+-- 'postalCode', 'updateAddress_postalCode' - The postal code of a customer address.+--+-- 'province', 'updateAddress_province' - The province in which a customer lives.+--+-- 'state', 'updateAddress_state' - The state in which a customer lives.+newUpdateAddress ::+  UpdateAddress+newUpdateAddress =+  UpdateAddress'+    { address1 = Prelude.Nothing,+      address2 = Prelude.Nothing,+      address3 = Prelude.Nothing,+      address4 = Prelude.Nothing,+      city = Prelude.Nothing,+      country = Prelude.Nothing,+      county = Prelude.Nothing,+      postalCode = Prelude.Nothing,+      province = Prelude.Nothing,+      state = Prelude.Nothing+    }++-- | The first line of a customer address.+updateAddress_address1 :: Lens.Lens' UpdateAddress (Prelude.Maybe Prelude.Text)+updateAddress_address1 = Lens.lens (\UpdateAddress' {address1} -> address1) (\s@UpdateAddress' {} a -> s {address1 = a} :: UpdateAddress)++-- | The second line of a customer address.+updateAddress_address2 :: Lens.Lens' UpdateAddress (Prelude.Maybe Prelude.Text)+updateAddress_address2 = Lens.lens (\UpdateAddress' {address2} -> address2) (\s@UpdateAddress' {} a -> s {address2 = a} :: UpdateAddress)++-- | The third line of a customer address.+updateAddress_address3 :: Lens.Lens' UpdateAddress (Prelude.Maybe Prelude.Text)+updateAddress_address3 = Lens.lens (\UpdateAddress' {address3} -> address3) (\s@UpdateAddress' {} a -> s {address3 = a} :: UpdateAddress)++-- | The fourth line of a customer address.+updateAddress_address4 :: Lens.Lens' UpdateAddress (Prelude.Maybe Prelude.Text)+updateAddress_address4 = Lens.lens (\UpdateAddress' {address4} -> address4) (\s@UpdateAddress' {} a -> s {address4 = a} :: UpdateAddress)++-- | The city in which a customer lives.+updateAddress_city :: Lens.Lens' UpdateAddress (Prelude.Maybe Prelude.Text)+updateAddress_city = Lens.lens (\UpdateAddress' {city} -> city) (\s@UpdateAddress' {} a -> s {city = a} :: UpdateAddress)++-- | The country in which a customer lives.+updateAddress_country :: Lens.Lens' UpdateAddress (Prelude.Maybe Prelude.Text)+updateAddress_country = Lens.lens (\UpdateAddress' {country} -> country) (\s@UpdateAddress' {} a -> s {country = a} :: UpdateAddress)++-- | The county in which a customer lives.+updateAddress_county :: Lens.Lens' UpdateAddress (Prelude.Maybe Prelude.Text)+updateAddress_county = Lens.lens (\UpdateAddress' {county} -> county) (\s@UpdateAddress' {} a -> s {county = a} :: UpdateAddress)++-- | The postal code of a customer address.+updateAddress_postalCode :: Lens.Lens' UpdateAddress (Prelude.Maybe Prelude.Text)+updateAddress_postalCode = Lens.lens (\UpdateAddress' {postalCode} -> postalCode) (\s@UpdateAddress' {} a -> s {postalCode = a} :: UpdateAddress)++-- | The province in which a customer lives.+updateAddress_province :: Lens.Lens' UpdateAddress (Prelude.Maybe Prelude.Text)+updateAddress_province = Lens.lens (\UpdateAddress' {province} -> province) (\s@UpdateAddress' {} a -> s {province = a} :: UpdateAddress)++-- | The state in which a customer lives.+updateAddress_state :: Lens.Lens' UpdateAddress (Prelude.Maybe Prelude.Text)+updateAddress_state = Lens.lens (\UpdateAddress' {state} -> state) (\s@UpdateAddress' {} a -> s {state = a} :: UpdateAddress)++instance Prelude.Hashable UpdateAddress where+  hashWithSalt _salt UpdateAddress' {..} =+    _salt+      `Prelude.hashWithSalt` address1+      `Prelude.hashWithSalt` address2+      `Prelude.hashWithSalt` address3+      `Prelude.hashWithSalt` address4+      `Prelude.hashWithSalt` city+      `Prelude.hashWithSalt` country+      `Prelude.hashWithSalt` county+      `Prelude.hashWithSalt` postalCode+      `Prelude.hashWithSalt` province+      `Prelude.hashWithSalt` state++instance Prelude.NFData UpdateAddress where+  rnf UpdateAddress' {..} =+    Prelude.rnf address1+      `Prelude.seq` Prelude.rnf address2+      `Prelude.seq` Prelude.rnf address3+      `Prelude.seq` Prelude.rnf address4+      `Prelude.seq` Prelude.rnf city+      `Prelude.seq` Prelude.rnf country+      `Prelude.seq` Prelude.rnf county+      `Prelude.seq` Prelude.rnf postalCode+      `Prelude.seq` Prelude.rnf province+      `Prelude.seq` Prelude.rnf state++instance Data.ToJSON UpdateAddress where+  toJSON UpdateAddress' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Address1" Data..=) Prelude.<$> address1,+            ("Address2" Data..=) Prelude.<$> address2,+            ("Address3" Data..=) Prelude.<$> address3,+            ("Address4" Data..=) Prelude.<$> address4,+            ("City" Data..=) Prelude.<$> city,+            ("Country" Data..=) Prelude.<$> country,+            ("County" Data..=) Prelude.<$> county,+            ("PostalCode" Data..=) Prelude.<$> postalCode,+            ("Province" Data..=) Prelude.<$> province,+            ("State" Data..=) Prelude.<$> state+          ]+      )
+ gen/Amazonka/CustomerProfiles/Types/WorkflowAttributes.hs view
@@ -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.CustomerProfiles.Types.WorkflowAttributes+-- Copyright   : (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.CustomerProfiles.Types.WorkflowAttributes where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types.AppflowIntegrationWorkflowAttributes+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Structure to hold workflow attributes.+--+-- /See:/ 'newWorkflowAttributes' smart constructor.+data WorkflowAttributes = WorkflowAttributes'+  { -- | Workflow attributes specific to @APPFLOW_INTEGRATION@ workflow.+    appflowIntegration :: Prelude.Maybe AppflowIntegrationWorkflowAttributes+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'WorkflowAttributes' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'appflowIntegration', 'workflowAttributes_appflowIntegration' - Workflow attributes specific to @APPFLOW_INTEGRATION@ workflow.+newWorkflowAttributes ::+  WorkflowAttributes+newWorkflowAttributes =+  WorkflowAttributes'+    { appflowIntegration =+        Prelude.Nothing+    }++-- | Workflow attributes specific to @APPFLOW_INTEGRATION@ workflow.+workflowAttributes_appflowIntegration :: Lens.Lens' WorkflowAttributes (Prelude.Maybe AppflowIntegrationWorkflowAttributes)+workflowAttributes_appflowIntegration = Lens.lens (\WorkflowAttributes' {appflowIntegration} -> appflowIntegration) (\s@WorkflowAttributes' {} a -> s {appflowIntegration = a} :: WorkflowAttributes)++instance Data.FromJSON WorkflowAttributes where+  parseJSON =+    Data.withObject+      "WorkflowAttributes"+      ( \x ->+          WorkflowAttributes'+            Prelude.<$> (x Data..:? "AppflowIntegration")+      )++instance Prelude.Hashable WorkflowAttributes where+  hashWithSalt _salt WorkflowAttributes' {..} =+    _salt `Prelude.hashWithSalt` appflowIntegration++instance Prelude.NFData WorkflowAttributes where+  rnf WorkflowAttributes' {..} =+    Prelude.rnf appflowIntegration
+ gen/Amazonka/CustomerProfiles/Types/WorkflowMetrics.hs view
@@ -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.CustomerProfiles.Types.WorkflowMetrics+-- Copyright   : (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.CustomerProfiles.Types.WorkflowMetrics where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types.AppflowIntegrationWorkflowMetrics+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Generic object containing workflow execution metrics.+--+-- /See:/ 'newWorkflowMetrics' smart constructor.+data WorkflowMetrics = WorkflowMetrics'+  { -- | Workflow execution metrics for @APPFLOW_INTEGRATION@ workflow.+    appflowIntegration :: Prelude.Maybe AppflowIntegrationWorkflowMetrics+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'WorkflowMetrics' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'appflowIntegration', 'workflowMetrics_appflowIntegration' - Workflow execution metrics for @APPFLOW_INTEGRATION@ workflow.+newWorkflowMetrics ::+  WorkflowMetrics+newWorkflowMetrics =+  WorkflowMetrics'+    { appflowIntegration =+        Prelude.Nothing+    }++-- | Workflow execution metrics for @APPFLOW_INTEGRATION@ workflow.+workflowMetrics_appflowIntegration :: Lens.Lens' WorkflowMetrics (Prelude.Maybe AppflowIntegrationWorkflowMetrics)+workflowMetrics_appflowIntegration = Lens.lens (\WorkflowMetrics' {appflowIntegration} -> appflowIntegration) (\s@WorkflowMetrics' {} a -> s {appflowIntegration = a} :: WorkflowMetrics)++instance Data.FromJSON WorkflowMetrics where+  parseJSON =+    Data.withObject+      "WorkflowMetrics"+      ( \x ->+          WorkflowMetrics'+            Prelude.<$> (x Data..:? "AppflowIntegration")+      )++instance Prelude.Hashable WorkflowMetrics where+  hashWithSalt _salt WorkflowMetrics' {..} =+    _salt `Prelude.hashWithSalt` appflowIntegration++instance Prelude.NFData WorkflowMetrics where+  rnf WorkflowMetrics' {..} =+    Prelude.rnf appflowIntegration
+ gen/Amazonka/CustomerProfiles/Types/WorkflowStepItem.hs view
@@ -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.CustomerProfiles.Types.WorkflowStepItem+-- Copyright   : (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.CustomerProfiles.Types.WorkflowStepItem where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types.AppflowIntegrationWorkflowStep+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | List containing steps in workflow.+--+-- /See:/ 'newWorkflowStepItem' smart constructor.+data WorkflowStepItem = WorkflowStepItem'+  { -- | Workflow step information specific to @APPFLOW_INTEGRATION@ workflow.+    appflowIntegration :: Prelude.Maybe AppflowIntegrationWorkflowStep+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'WorkflowStepItem' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'appflowIntegration', 'workflowStepItem_appflowIntegration' - Workflow step information specific to @APPFLOW_INTEGRATION@ workflow.+newWorkflowStepItem ::+  WorkflowStepItem+newWorkflowStepItem =+  WorkflowStepItem'+    { appflowIntegration =+        Prelude.Nothing+    }++-- | Workflow step information specific to @APPFLOW_INTEGRATION@ workflow.+workflowStepItem_appflowIntegration :: Lens.Lens' WorkflowStepItem (Prelude.Maybe AppflowIntegrationWorkflowStep)+workflowStepItem_appflowIntegration = Lens.lens (\WorkflowStepItem' {appflowIntegration} -> appflowIntegration) (\s@WorkflowStepItem' {} a -> s {appflowIntegration = a} :: WorkflowStepItem)++instance Data.FromJSON WorkflowStepItem where+  parseJSON =+    Data.withObject+      "WorkflowStepItem"+      ( \x ->+          WorkflowStepItem'+            Prelude.<$> (x Data..:? "AppflowIntegration")+      )++instance Prelude.Hashable WorkflowStepItem where+  hashWithSalt _salt WorkflowStepItem' {..} =+    _salt `Prelude.hashWithSalt` appflowIntegration++instance Prelude.NFData WorkflowStepItem where+  rnf WorkflowStepItem' {..} =+    Prelude.rnf appflowIntegration
+ gen/Amazonka/CustomerProfiles/Types/WorkflowType.hs view
@@ -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.CustomerProfiles.Types.WorkflowType+-- Copyright   : (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.CustomerProfiles.Types.WorkflowType+  ( WorkflowType+      ( ..,+        WorkflowType_APPFLOW_INTEGRATION+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype WorkflowType = WorkflowType'+  { fromWorkflowType ::+      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 WorkflowType_APPFLOW_INTEGRATION :: WorkflowType+pattern WorkflowType_APPFLOW_INTEGRATION = WorkflowType' "APPFLOW_INTEGRATION"++{-# COMPLETE+  WorkflowType_APPFLOW_INTEGRATION,+  WorkflowType'+  #-}
+ gen/Amazonka/CustomerProfiles/Types/ZendeskConnectorOperator.hs view
@@ -0,0 +1,131 @@+{-# 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.CustomerProfiles.Types.ZendeskConnectorOperator+-- Copyright   : (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.CustomerProfiles.Types.ZendeskConnectorOperator+  ( ZendeskConnectorOperator+      ( ..,+        ZendeskConnectorOperator_ADDITION,+        ZendeskConnectorOperator_DIVISION,+        ZendeskConnectorOperator_GREATER_THAN,+        ZendeskConnectorOperator_MASK_ALL,+        ZendeskConnectorOperator_MASK_FIRST_N,+        ZendeskConnectorOperator_MASK_LAST_N,+        ZendeskConnectorOperator_MULTIPLICATION,+        ZendeskConnectorOperator_NO_OP,+        ZendeskConnectorOperator_PROJECTION,+        ZendeskConnectorOperator_SUBTRACTION,+        ZendeskConnectorOperator_VALIDATE_NON_NEGATIVE,+        ZendeskConnectorOperator_VALIDATE_NON_NULL,+        ZendeskConnectorOperator_VALIDATE_NON_ZERO,+        ZendeskConnectorOperator_VALIDATE_NUMERIC+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ZendeskConnectorOperator = ZendeskConnectorOperator'+  { fromZendeskConnectorOperator ::+      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 ZendeskConnectorOperator_ADDITION :: ZendeskConnectorOperator+pattern ZendeskConnectorOperator_ADDITION = ZendeskConnectorOperator' "ADDITION"++pattern ZendeskConnectorOperator_DIVISION :: ZendeskConnectorOperator+pattern ZendeskConnectorOperator_DIVISION = ZendeskConnectorOperator' "DIVISION"++pattern ZendeskConnectorOperator_GREATER_THAN :: ZendeskConnectorOperator+pattern ZendeskConnectorOperator_GREATER_THAN = ZendeskConnectorOperator' "GREATER_THAN"++pattern ZendeskConnectorOperator_MASK_ALL :: ZendeskConnectorOperator+pattern ZendeskConnectorOperator_MASK_ALL = ZendeskConnectorOperator' "MASK_ALL"++pattern ZendeskConnectorOperator_MASK_FIRST_N :: ZendeskConnectorOperator+pattern ZendeskConnectorOperator_MASK_FIRST_N = ZendeskConnectorOperator' "MASK_FIRST_N"++pattern ZendeskConnectorOperator_MASK_LAST_N :: ZendeskConnectorOperator+pattern ZendeskConnectorOperator_MASK_LAST_N = ZendeskConnectorOperator' "MASK_LAST_N"++pattern ZendeskConnectorOperator_MULTIPLICATION :: ZendeskConnectorOperator+pattern ZendeskConnectorOperator_MULTIPLICATION = ZendeskConnectorOperator' "MULTIPLICATION"++pattern ZendeskConnectorOperator_NO_OP :: ZendeskConnectorOperator+pattern ZendeskConnectorOperator_NO_OP = ZendeskConnectorOperator' "NO_OP"++pattern ZendeskConnectorOperator_PROJECTION :: ZendeskConnectorOperator+pattern ZendeskConnectorOperator_PROJECTION = ZendeskConnectorOperator' "PROJECTION"++pattern ZendeskConnectorOperator_SUBTRACTION :: ZendeskConnectorOperator+pattern ZendeskConnectorOperator_SUBTRACTION = ZendeskConnectorOperator' "SUBTRACTION"++pattern ZendeskConnectorOperator_VALIDATE_NON_NEGATIVE :: ZendeskConnectorOperator+pattern ZendeskConnectorOperator_VALIDATE_NON_NEGATIVE = ZendeskConnectorOperator' "VALIDATE_NON_NEGATIVE"++pattern ZendeskConnectorOperator_VALIDATE_NON_NULL :: ZendeskConnectorOperator+pattern ZendeskConnectorOperator_VALIDATE_NON_NULL = ZendeskConnectorOperator' "VALIDATE_NON_NULL"++pattern ZendeskConnectorOperator_VALIDATE_NON_ZERO :: ZendeskConnectorOperator+pattern ZendeskConnectorOperator_VALIDATE_NON_ZERO = ZendeskConnectorOperator' "VALIDATE_NON_ZERO"++pattern ZendeskConnectorOperator_VALIDATE_NUMERIC :: ZendeskConnectorOperator+pattern ZendeskConnectorOperator_VALIDATE_NUMERIC = ZendeskConnectorOperator' "VALIDATE_NUMERIC"++{-# COMPLETE+  ZendeskConnectorOperator_ADDITION,+  ZendeskConnectorOperator_DIVISION,+  ZendeskConnectorOperator_GREATER_THAN,+  ZendeskConnectorOperator_MASK_ALL,+  ZendeskConnectorOperator_MASK_FIRST_N,+  ZendeskConnectorOperator_MASK_LAST_N,+  ZendeskConnectorOperator_MULTIPLICATION,+  ZendeskConnectorOperator_NO_OP,+  ZendeskConnectorOperator_PROJECTION,+  ZendeskConnectorOperator_SUBTRACTION,+  ZendeskConnectorOperator_VALIDATE_NON_NEGATIVE,+  ZendeskConnectorOperator_VALIDATE_NON_NULL,+  ZendeskConnectorOperator_VALIDATE_NON_ZERO,+  ZendeskConnectorOperator_VALIDATE_NUMERIC,+  ZendeskConnectorOperator'+  #-}
+ gen/Amazonka/CustomerProfiles/Types/ZendeskSourceProperties.hs view
@@ -0,0 +1,69 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.Types.ZendeskSourceProperties+-- Copyright   : (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.CustomerProfiles.Types.ZendeskSourceProperties 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 properties that are applied when using Zendesk as a flow source.+--+-- /See:/ 'newZendeskSourceProperties' smart constructor.+data ZendeskSourceProperties = ZendeskSourceProperties'+  { -- | The object specified in the Zendesk flow source.+    object' :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ZendeskSourceProperties' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'object'', 'zendeskSourceProperties_object' - The object specified in the Zendesk flow source.+newZendeskSourceProperties ::+  -- | 'object''+  Prelude.Text ->+  ZendeskSourceProperties+newZendeskSourceProperties pObject_ =+  ZendeskSourceProperties' {object' = pObject_}++-- | The object specified in the Zendesk flow source.+zendeskSourceProperties_object :: Lens.Lens' ZendeskSourceProperties Prelude.Text+zendeskSourceProperties_object = Lens.lens (\ZendeskSourceProperties' {object'} -> object') (\s@ZendeskSourceProperties' {} a -> s {object' = a} :: ZendeskSourceProperties)++instance Prelude.Hashable ZendeskSourceProperties where+  hashWithSalt _salt ZendeskSourceProperties' {..} =+    _salt `Prelude.hashWithSalt` object'++instance Prelude.NFData ZendeskSourceProperties where+  rnf ZendeskSourceProperties' {..} =+    Prelude.rnf object'++instance Data.ToJSON ZendeskSourceProperties where+  toJSON ZendeskSourceProperties' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("Object" Data..= object')]+      )
+ gen/Amazonka/CustomerProfiles/UntagResource.hs view
@@ -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.CustomerProfiles.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 one or more tags from the specified Amazon Connect Customer+-- Profiles resource. In Connect Customer Profiles, domains, profile object+-- types, and integrations can be tagged.+module Amazonka.CustomerProfiles.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 Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUntagResource' smart constructor.+data UntagResource = UntagResource'+  { -- | The ARN of the resource from which you are removing tags.+    resourceArn :: Prelude.Text,+    -- | The list of tag keys to remove from the resource.+    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 ARN of the resource from which you are removing tags.+--+-- 'tagKeys', 'untagResource_tagKeys' - The list of tag keys to remove from the resource.+newUntagResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  -- | 'tagKeys'+  Prelude.NonEmpty Prelude.Text ->+  UntagResource+newUntagResource pResourceArn_ pTagKeys_ =+  UntagResource'+    { resourceArn = pResourceArn_,+      tagKeys = Lens.coerced Lens.# pTagKeys_+    }++-- | The ARN of the resource from which you are removing tags.+untagResource_resourceArn :: Lens.Lens' UntagResource Prelude.Text+untagResource_resourceArn = Lens.lens (\UntagResource' {resourceArn} -> resourceArn) (\s@UntagResource' {} a -> s {resourceArn = a} :: UntagResource)++-- | The list of tag keys to remove from the resource.+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
+ gen/Amazonka/CustomerProfiles/UpdateDomain.hs view
@@ -0,0 +1,438 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.UpdateDomain+-- 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 properties of a domain, including creating or selecting a+-- dead letter queue or an encryption key.+--+-- After a domain is created, the name can’t be changed.+--+-- Use this API or+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_CreateDomain.html CreateDomain>+-- to enable+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_GetMatches.html identity resolution>:+-- set @Matching@ to true.+--+-- To prevent cross-service impersonation when you call this API, see+-- <https://docs.aws.amazon.com/connect/latest/adminguide/cross-service-confused-deputy-prevention.html Cross-service confused deputy prevention>+-- for sample policies that you should apply.+--+-- To add or remove tags on an existing Domain, see+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_TagResource.html TagResource>\/<https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_UntagResource.html UntagResource>.+module Amazonka.CustomerProfiles.UpdateDomain+  ( -- * Creating a Request+    UpdateDomain (..),+    newUpdateDomain,++    -- * Request Lenses+    updateDomain_deadLetterQueueUrl,+    updateDomain_defaultEncryptionKey,+    updateDomain_defaultExpirationDays,+    updateDomain_matching,+    updateDomain_tags,+    updateDomain_domainName,++    -- * Destructuring the Response+    UpdateDomainResponse (..),+    newUpdateDomainResponse,++    -- * Response Lenses+    updateDomainResponse_deadLetterQueueUrl,+    updateDomainResponse_defaultEncryptionKey,+    updateDomainResponse_defaultExpirationDays,+    updateDomainResponse_matching,+    updateDomainResponse_tags,+    updateDomainResponse_httpStatus,+    updateDomainResponse_domainName,+    updateDomainResponse_createdAt,+    updateDomainResponse_lastUpdatedAt,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateDomain' smart constructor.+data UpdateDomain = UpdateDomain'+  { -- | The URL of the SQS dead letter queue, which is used for reporting errors+    -- associated with ingesting data from third party applications. If+    -- specified as an empty string, it will clear any existing value. You must+    -- set up a policy on the DeadLetterQueue for the SendMessage operation to+    -- enable Amazon Connect Customer Profiles to send messages to the+    -- DeadLetterQueue.+    deadLetterQueueUrl :: Prelude.Maybe Prelude.Text,+    -- | The default encryption key, which is an AWS managed key, is used when no+    -- specific type of encryption key is specified. It is used to encrypt all+    -- data before it is placed in permanent or semi-permanent storage. If+    -- specified as an empty string, it will clear any existing value.+    defaultEncryptionKey :: Prelude.Maybe Prelude.Text,+    -- | The default number of days until the data within the domain expires.+    defaultExpirationDays :: Prelude.Maybe Prelude.Natural,+    -- | The process of matching duplicate profiles. If @Matching@ = @true@,+    -- Amazon Connect Customer Profiles starts a weekly batch process called+    -- Identity Resolution Job. If you do not specify a date and time for+    -- Identity Resolution Job to run, by default it runs every Saturday at+    -- 12AM UTC to detect duplicate profiles in your domains.+    --+    -- After the Identity Resolution Job completes, use the+    -- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_GetMatches.html GetMatches>+    -- API to return and review the results. Or, if you have configured+    -- @ExportingConfig@ in the @MatchingRequest@, you can download the results+    -- from S3.+    matching :: Prelude.Maybe MatchingRequest,+    -- | The tags used to organize, track, or control access for this resource.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The unique name of the domain.+    domainName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateDomain' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'deadLetterQueueUrl', 'updateDomain_deadLetterQueueUrl' - The URL of the SQS dead letter queue, which is used for reporting errors+-- associated with ingesting data from third party applications. If+-- specified as an empty string, it will clear any existing value. You must+-- set up a policy on the DeadLetterQueue for the SendMessage operation to+-- enable Amazon Connect Customer Profiles to send messages to the+-- DeadLetterQueue.+--+-- 'defaultEncryptionKey', 'updateDomain_defaultEncryptionKey' - The default encryption key, which is an AWS managed key, is used when no+-- specific type of encryption key is specified. It is used to encrypt all+-- data before it is placed in permanent or semi-permanent storage. If+-- specified as an empty string, it will clear any existing value.+--+-- 'defaultExpirationDays', 'updateDomain_defaultExpirationDays' - The default number of days until the data within the domain expires.+--+-- 'matching', 'updateDomain_matching' - The process of matching duplicate profiles. If @Matching@ = @true@,+-- Amazon Connect Customer Profiles starts a weekly batch process called+-- Identity Resolution Job. If you do not specify a date and time for+-- Identity Resolution Job to run, by default it runs every Saturday at+-- 12AM UTC to detect duplicate profiles in your domains.+--+-- After the Identity Resolution Job completes, use the+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_GetMatches.html GetMatches>+-- API to return and review the results. Or, if you have configured+-- @ExportingConfig@ in the @MatchingRequest@, you can download the results+-- from S3.+--+-- 'tags', 'updateDomain_tags' - The tags used to organize, track, or control access for this resource.+--+-- 'domainName', 'updateDomain_domainName' - The unique name of the domain.+newUpdateDomain ::+  -- | 'domainName'+  Prelude.Text ->+  UpdateDomain+newUpdateDomain pDomainName_ =+  UpdateDomain'+    { deadLetterQueueUrl = Prelude.Nothing,+      defaultEncryptionKey = Prelude.Nothing,+      defaultExpirationDays = Prelude.Nothing,+      matching = Prelude.Nothing,+      tags = Prelude.Nothing,+      domainName = pDomainName_+    }++-- | The URL of the SQS dead letter queue, which is used for reporting errors+-- associated with ingesting data from third party applications. If+-- specified as an empty string, it will clear any existing value. You must+-- set up a policy on the DeadLetterQueue for the SendMessage operation to+-- enable Amazon Connect Customer Profiles to send messages to the+-- DeadLetterQueue.+updateDomain_deadLetterQueueUrl :: Lens.Lens' UpdateDomain (Prelude.Maybe Prelude.Text)+updateDomain_deadLetterQueueUrl = Lens.lens (\UpdateDomain' {deadLetterQueueUrl} -> deadLetterQueueUrl) (\s@UpdateDomain' {} a -> s {deadLetterQueueUrl = a} :: UpdateDomain)++-- | The default encryption key, which is an AWS managed key, is used when no+-- specific type of encryption key is specified. It is used to encrypt all+-- data before it is placed in permanent or semi-permanent storage. If+-- specified as an empty string, it will clear any existing value.+updateDomain_defaultEncryptionKey :: Lens.Lens' UpdateDomain (Prelude.Maybe Prelude.Text)+updateDomain_defaultEncryptionKey = Lens.lens (\UpdateDomain' {defaultEncryptionKey} -> defaultEncryptionKey) (\s@UpdateDomain' {} a -> s {defaultEncryptionKey = a} :: UpdateDomain)++-- | The default number of days until the data within the domain expires.+updateDomain_defaultExpirationDays :: Lens.Lens' UpdateDomain (Prelude.Maybe Prelude.Natural)+updateDomain_defaultExpirationDays = Lens.lens (\UpdateDomain' {defaultExpirationDays} -> defaultExpirationDays) (\s@UpdateDomain' {} a -> s {defaultExpirationDays = a} :: UpdateDomain)++-- | The process of matching duplicate profiles. If @Matching@ = @true@,+-- Amazon Connect Customer Profiles starts a weekly batch process called+-- Identity Resolution Job. If you do not specify a date and time for+-- Identity Resolution Job to run, by default it runs every Saturday at+-- 12AM UTC to detect duplicate profiles in your domains.+--+-- After the Identity Resolution Job completes, use the+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_GetMatches.html GetMatches>+-- API to return and review the results. Or, if you have configured+-- @ExportingConfig@ in the @MatchingRequest@, you can download the results+-- from S3.+updateDomain_matching :: Lens.Lens' UpdateDomain (Prelude.Maybe MatchingRequest)+updateDomain_matching = Lens.lens (\UpdateDomain' {matching} -> matching) (\s@UpdateDomain' {} a -> s {matching = a} :: UpdateDomain)++-- | The tags used to organize, track, or control access for this resource.+updateDomain_tags :: Lens.Lens' UpdateDomain (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+updateDomain_tags = Lens.lens (\UpdateDomain' {tags} -> tags) (\s@UpdateDomain' {} a -> s {tags = a} :: UpdateDomain) Prelude.. Lens.mapping Lens.coerced++-- | The unique name of the domain.+updateDomain_domainName :: Lens.Lens' UpdateDomain Prelude.Text+updateDomain_domainName = Lens.lens (\UpdateDomain' {domainName} -> domainName) (\s@UpdateDomain' {} a -> s {domainName = a} :: UpdateDomain)++instance Core.AWSRequest UpdateDomain where+  type AWSResponse UpdateDomain = UpdateDomainResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateDomainResponse'+            Prelude.<$> (x Data..?> "DeadLetterQueueUrl")+            Prelude.<*> (x Data..?> "DefaultEncryptionKey")+            Prelude.<*> (x Data..?> "DefaultExpirationDays")+            Prelude.<*> (x Data..?> "Matching")+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "DomainName")+            Prelude.<*> (x Data..:> "CreatedAt")+            Prelude.<*> (x Data..:> "LastUpdatedAt")+      )++instance Prelude.Hashable UpdateDomain where+  hashWithSalt _salt UpdateDomain' {..} =+    _salt+      `Prelude.hashWithSalt` deadLetterQueueUrl+      `Prelude.hashWithSalt` defaultEncryptionKey+      `Prelude.hashWithSalt` defaultExpirationDays+      `Prelude.hashWithSalt` matching+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` domainName++instance Prelude.NFData UpdateDomain where+  rnf UpdateDomain' {..} =+    Prelude.rnf deadLetterQueueUrl+      `Prelude.seq` Prelude.rnf defaultEncryptionKey+      `Prelude.seq` Prelude.rnf defaultExpirationDays+      `Prelude.seq` Prelude.rnf matching+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf domainName++instance Data.ToHeaders UpdateDomain where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateDomain where+  toJSON UpdateDomain' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("DeadLetterQueueUrl" Data..=)+              Prelude.<$> deadLetterQueueUrl,+            ("DefaultEncryptionKey" Data..=)+              Prelude.<$> defaultEncryptionKey,+            ("DefaultExpirationDays" Data..=)+              Prelude.<$> defaultExpirationDays,+            ("Matching" Data..=) Prelude.<$> matching,+            ("Tags" Data..=) Prelude.<$> tags+          ]+      )++instance Data.ToPath UpdateDomain where+  toPath UpdateDomain' {..} =+    Prelude.mconcat ["/domains/", Data.toBS domainName]++instance Data.ToQuery UpdateDomain where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateDomainResponse' smart constructor.+data UpdateDomainResponse = UpdateDomainResponse'+  { -- | The URL of the SQS dead letter queue, which is used for reporting errors+    -- associated with ingesting data from third party applications.+    deadLetterQueueUrl :: Prelude.Maybe Prelude.Text,+    -- | The default encryption key, which is an AWS managed key, is used when no+    -- specific type of encryption key is specified. It is used to encrypt all+    -- data before it is placed in permanent or semi-permanent storage.+    defaultEncryptionKey :: Prelude.Maybe Prelude.Text,+    -- | The default number of days until the data within the domain expires.+    defaultExpirationDays :: Prelude.Maybe Prelude.Natural,+    -- | The process of matching duplicate profiles. If @Matching@ = @true@,+    -- Amazon Connect Customer Profiles starts a weekly batch process called+    -- Identity Resolution Job. If you do not specify a date and time for+    -- Identity Resolution Job to run, by default it runs every Saturday at+    -- 12AM UTC to detect duplicate profiles in your domains.+    --+    -- After the Identity Resolution Job completes, use the+    -- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_GetMatches.html GetMatches>+    -- API to return and review the results. Or, if you have configured+    -- @ExportingConfig@ in the @MatchingRequest@, you can download the results+    -- from S3.+    matching :: Prelude.Maybe MatchingResponse,+    -- | The tags used to organize, track, or control access for this resource.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The unique name of the domain.+    domainName :: Prelude.Text,+    -- | The timestamp of when the domain was created.+    createdAt :: Data.POSIX,+    -- | The timestamp of when the domain was most recently edited.+    lastUpdatedAt :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateDomainResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'deadLetterQueueUrl', 'updateDomainResponse_deadLetterQueueUrl' - The URL of the SQS dead letter queue, which is used for reporting errors+-- associated with ingesting data from third party applications.+--+-- 'defaultEncryptionKey', 'updateDomainResponse_defaultEncryptionKey' - The default encryption key, which is an AWS managed key, is used when no+-- specific type of encryption key is specified. It is used to encrypt all+-- data before it is placed in permanent or semi-permanent storage.+--+-- 'defaultExpirationDays', 'updateDomainResponse_defaultExpirationDays' - The default number of days until the data within the domain expires.+--+-- 'matching', 'updateDomainResponse_matching' - The process of matching duplicate profiles. If @Matching@ = @true@,+-- Amazon Connect Customer Profiles starts a weekly batch process called+-- Identity Resolution Job. If you do not specify a date and time for+-- Identity Resolution Job to run, by default it runs every Saturday at+-- 12AM UTC to detect duplicate profiles in your domains.+--+-- After the Identity Resolution Job completes, use the+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_GetMatches.html GetMatches>+-- API to return and review the results. Or, if you have configured+-- @ExportingConfig@ in the @MatchingRequest@, you can download the results+-- from S3.+--+-- 'tags', 'updateDomainResponse_tags' - The tags used to organize, track, or control access for this resource.+--+-- 'httpStatus', 'updateDomainResponse_httpStatus' - The response's http status code.+--+-- 'domainName', 'updateDomainResponse_domainName' - The unique name of the domain.+--+-- 'createdAt', 'updateDomainResponse_createdAt' - The timestamp of when the domain was created.+--+-- 'lastUpdatedAt', 'updateDomainResponse_lastUpdatedAt' - The timestamp of when the domain was most recently edited.+newUpdateDomainResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'domainName'+  Prelude.Text ->+  -- | 'createdAt'+  Prelude.UTCTime ->+  -- | 'lastUpdatedAt'+  Prelude.UTCTime ->+  UpdateDomainResponse+newUpdateDomainResponse+  pHttpStatus_+  pDomainName_+  pCreatedAt_+  pLastUpdatedAt_ =+    UpdateDomainResponse'+      { deadLetterQueueUrl =+          Prelude.Nothing,+        defaultEncryptionKey = Prelude.Nothing,+        defaultExpirationDays = Prelude.Nothing,+        matching = Prelude.Nothing,+        tags = Prelude.Nothing,+        httpStatus = pHttpStatus_,+        domainName = pDomainName_,+        createdAt = Data._Time Lens.# pCreatedAt_,+        lastUpdatedAt = Data._Time Lens.# pLastUpdatedAt_+      }++-- | The URL of the SQS dead letter queue, which is used for reporting errors+-- associated with ingesting data from third party applications.+updateDomainResponse_deadLetterQueueUrl :: Lens.Lens' UpdateDomainResponse (Prelude.Maybe Prelude.Text)+updateDomainResponse_deadLetterQueueUrl = Lens.lens (\UpdateDomainResponse' {deadLetterQueueUrl} -> deadLetterQueueUrl) (\s@UpdateDomainResponse' {} a -> s {deadLetterQueueUrl = a} :: UpdateDomainResponse)++-- | The default encryption key, which is an AWS managed key, is used when no+-- specific type of encryption key is specified. It is used to encrypt all+-- data before it is placed in permanent or semi-permanent storage.+updateDomainResponse_defaultEncryptionKey :: Lens.Lens' UpdateDomainResponse (Prelude.Maybe Prelude.Text)+updateDomainResponse_defaultEncryptionKey = Lens.lens (\UpdateDomainResponse' {defaultEncryptionKey} -> defaultEncryptionKey) (\s@UpdateDomainResponse' {} a -> s {defaultEncryptionKey = a} :: UpdateDomainResponse)++-- | The default number of days until the data within the domain expires.+updateDomainResponse_defaultExpirationDays :: Lens.Lens' UpdateDomainResponse (Prelude.Maybe Prelude.Natural)+updateDomainResponse_defaultExpirationDays = Lens.lens (\UpdateDomainResponse' {defaultExpirationDays} -> defaultExpirationDays) (\s@UpdateDomainResponse' {} a -> s {defaultExpirationDays = a} :: UpdateDomainResponse)++-- | The process of matching duplicate profiles. If @Matching@ = @true@,+-- Amazon Connect Customer Profiles starts a weekly batch process called+-- Identity Resolution Job. If you do not specify a date and time for+-- Identity Resolution Job to run, by default it runs every Saturday at+-- 12AM UTC to detect duplicate profiles in your domains.+--+-- After the Identity Resolution Job completes, use the+-- <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_GetMatches.html GetMatches>+-- API to return and review the results. Or, if you have configured+-- @ExportingConfig@ in the @MatchingRequest@, you can download the results+-- from S3.+updateDomainResponse_matching :: Lens.Lens' UpdateDomainResponse (Prelude.Maybe MatchingResponse)+updateDomainResponse_matching = Lens.lens (\UpdateDomainResponse' {matching} -> matching) (\s@UpdateDomainResponse' {} a -> s {matching = a} :: UpdateDomainResponse)++-- | The tags used to organize, track, or control access for this resource.+updateDomainResponse_tags :: Lens.Lens' UpdateDomainResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+updateDomainResponse_tags = Lens.lens (\UpdateDomainResponse' {tags} -> tags) (\s@UpdateDomainResponse' {} a -> s {tags = a} :: UpdateDomainResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+updateDomainResponse_httpStatus :: Lens.Lens' UpdateDomainResponse Prelude.Int+updateDomainResponse_httpStatus = Lens.lens (\UpdateDomainResponse' {httpStatus} -> httpStatus) (\s@UpdateDomainResponse' {} a -> s {httpStatus = a} :: UpdateDomainResponse)++-- | The unique name of the domain.+updateDomainResponse_domainName :: Lens.Lens' UpdateDomainResponse Prelude.Text+updateDomainResponse_domainName = Lens.lens (\UpdateDomainResponse' {domainName} -> domainName) (\s@UpdateDomainResponse' {} a -> s {domainName = a} :: UpdateDomainResponse)++-- | The timestamp of when the domain was created.+updateDomainResponse_createdAt :: Lens.Lens' UpdateDomainResponse Prelude.UTCTime+updateDomainResponse_createdAt = Lens.lens (\UpdateDomainResponse' {createdAt} -> createdAt) (\s@UpdateDomainResponse' {} a -> s {createdAt = a} :: UpdateDomainResponse) Prelude.. Data._Time++-- | The timestamp of when the domain was most recently edited.+updateDomainResponse_lastUpdatedAt :: Lens.Lens' UpdateDomainResponse Prelude.UTCTime+updateDomainResponse_lastUpdatedAt = Lens.lens (\UpdateDomainResponse' {lastUpdatedAt} -> lastUpdatedAt) (\s@UpdateDomainResponse' {} a -> s {lastUpdatedAt = a} :: UpdateDomainResponse) Prelude.. Data._Time++instance Prelude.NFData UpdateDomainResponse where+  rnf UpdateDomainResponse' {..} =+    Prelude.rnf deadLetterQueueUrl+      `Prelude.seq` Prelude.rnf defaultEncryptionKey+      `Prelude.seq` Prelude.rnf defaultExpirationDays+      `Prelude.seq` Prelude.rnf matching+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf domainName+      `Prelude.seq` Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf lastUpdatedAt
+ gen/Amazonka/CustomerProfiles/UpdateProfile.hs view
@@ -0,0 +1,512 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.UpdateProfile+-- 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 properties of a profile. The ProfileId is required for+-- updating a customer profile.+--+-- When calling the UpdateProfile API, specifying an empty string value+-- means that any existing value will be removed. Not specifying a string+-- value means that any value already there will be kept.+module Amazonka.CustomerProfiles.UpdateProfile+  ( -- * Creating a Request+    UpdateProfile (..),+    newUpdateProfile,++    -- * Request Lenses+    updateProfile_accountNumber,+    updateProfile_additionalInformation,+    updateProfile_address,+    updateProfile_attributes,+    updateProfile_billingAddress,+    updateProfile_birthDate,+    updateProfile_businessEmailAddress,+    updateProfile_businessName,+    updateProfile_businessPhoneNumber,+    updateProfile_emailAddress,+    updateProfile_firstName,+    updateProfile_gender,+    updateProfile_genderString,+    updateProfile_homePhoneNumber,+    updateProfile_lastName,+    updateProfile_mailingAddress,+    updateProfile_middleName,+    updateProfile_mobilePhoneNumber,+    updateProfile_partyType,+    updateProfile_partyTypeString,+    updateProfile_personalEmailAddress,+    updateProfile_phoneNumber,+    updateProfile_shippingAddress,+    updateProfile_domainName,+    updateProfile_profileId,++    -- * Destructuring the Response+    UpdateProfileResponse (..),+    newUpdateProfileResponse,++    -- * Response Lenses+    updateProfileResponse_httpStatus,+    updateProfileResponse_profileId,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateProfile' smart constructor.+data UpdateProfile = UpdateProfile'+  { -- | A unique account number that you have given to the customer.+    accountNumber :: Prelude.Maybe Prelude.Text,+    -- | Any additional information relevant to the customer’s profile.+    additionalInformation :: Prelude.Maybe Prelude.Text,+    -- | A generic address associated with the customer that is not mailing,+    -- shipping, or billing.+    address :: Prelude.Maybe UpdateAddress,+    -- | A key value pair of attributes of a customer profile.+    attributes :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The customer’s billing address.+    billingAddress :: Prelude.Maybe UpdateAddress,+    -- | The customer’s birth date.+    birthDate :: Prelude.Maybe Prelude.Text,+    -- | The customer’s business email address.+    businessEmailAddress :: Prelude.Maybe Prelude.Text,+    -- | The name of the customer’s business.+    businessName :: Prelude.Maybe Prelude.Text,+    -- | The customer’s business phone number.+    businessPhoneNumber :: Prelude.Maybe Prelude.Text,+    -- | The customer’s email address, which has not been specified as a personal+    -- or business address.+    emailAddress :: Prelude.Maybe Prelude.Text,+    -- | The customer’s first name.+    firstName :: Prelude.Maybe Prelude.Text,+    -- | The gender with which the customer identifies.+    gender :: Prelude.Maybe Gender,+    -- | An alternative to @Gender@ which accepts any string as input.+    genderString :: Prelude.Maybe Prelude.Text,+    -- | The customer’s home phone number.+    homePhoneNumber :: Prelude.Maybe Prelude.Text,+    -- | The customer’s last name.+    lastName :: Prelude.Maybe Prelude.Text,+    -- | The customer’s mailing address.+    mailingAddress :: Prelude.Maybe UpdateAddress,+    -- | The customer’s middle name.+    middleName :: Prelude.Maybe Prelude.Text,+    -- | The customer’s mobile phone number.+    mobilePhoneNumber :: Prelude.Maybe Prelude.Text,+    -- | The type of profile used to describe the customer.+    partyType :: Prelude.Maybe PartyType,+    -- | An alternative to @PartyType@ which accepts any string as input.+    partyTypeString :: Prelude.Maybe Prelude.Text,+    -- | The customer’s personal email address.+    personalEmailAddress :: Prelude.Maybe Prelude.Text,+    -- | The customer’s phone number, which has not been specified as a mobile,+    -- home, or business number.+    phoneNumber :: Prelude.Maybe Prelude.Text,+    -- | The customer’s shipping address.+    shippingAddress :: Prelude.Maybe UpdateAddress,+    -- | The unique name of the domain.+    domainName :: Prelude.Text,+    -- | The unique identifier of a customer profile.+    profileId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateProfile' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accountNumber', 'updateProfile_accountNumber' - A unique account number that you have given to the customer.+--+-- 'additionalInformation', 'updateProfile_additionalInformation' - Any additional information relevant to the customer’s profile.+--+-- 'address', 'updateProfile_address' - A generic address associated with the customer that is not mailing,+-- shipping, or billing.+--+-- 'attributes', 'updateProfile_attributes' - A key value pair of attributes of a customer profile.+--+-- 'billingAddress', 'updateProfile_billingAddress' - The customer’s billing address.+--+-- 'birthDate', 'updateProfile_birthDate' - The customer’s birth date.+--+-- 'businessEmailAddress', 'updateProfile_businessEmailAddress' - The customer’s business email address.+--+-- 'businessName', 'updateProfile_businessName' - The name of the customer’s business.+--+-- 'businessPhoneNumber', 'updateProfile_businessPhoneNumber' - The customer’s business phone number.+--+-- 'emailAddress', 'updateProfile_emailAddress' - The customer’s email address, which has not been specified as a personal+-- or business address.+--+-- 'firstName', 'updateProfile_firstName' - The customer’s first name.+--+-- 'gender', 'updateProfile_gender' - The gender with which the customer identifies.+--+-- 'genderString', 'updateProfile_genderString' - An alternative to @Gender@ which accepts any string as input.+--+-- 'homePhoneNumber', 'updateProfile_homePhoneNumber' - The customer’s home phone number.+--+-- 'lastName', 'updateProfile_lastName' - The customer’s last name.+--+-- 'mailingAddress', 'updateProfile_mailingAddress' - The customer’s mailing address.+--+-- 'middleName', 'updateProfile_middleName' - The customer’s middle name.+--+-- 'mobilePhoneNumber', 'updateProfile_mobilePhoneNumber' - The customer’s mobile phone number.+--+-- 'partyType', 'updateProfile_partyType' - The type of profile used to describe the customer.+--+-- 'partyTypeString', 'updateProfile_partyTypeString' - An alternative to @PartyType@ which accepts any string as input.+--+-- 'personalEmailAddress', 'updateProfile_personalEmailAddress' - The customer’s personal email address.+--+-- 'phoneNumber', 'updateProfile_phoneNumber' - The customer’s phone number, which has not been specified as a mobile,+-- home, or business number.+--+-- 'shippingAddress', 'updateProfile_shippingAddress' - The customer’s shipping address.+--+-- 'domainName', 'updateProfile_domainName' - The unique name of the domain.+--+-- 'profileId', 'updateProfile_profileId' - The unique identifier of a customer profile.+newUpdateProfile ::+  -- | 'domainName'+  Prelude.Text ->+  -- | 'profileId'+  Prelude.Text ->+  UpdateProfile+newUpdateProfile pDomainName_ pProfileId_ =+  UpdateProfile'+    { accountNumber = Prelude.Nothing,+      additionalInformation = Prelude.Nothing,+      address = Prelude.Nothing,+      attributes = Prelude.Nothing,+      billingAddress = Prelude.Nothing,+      birthDate = Prelude.Nothing,+      businessEmailAddress = Prelude.Nothing,+      businessName = Prelude.Nothing,+      businessPhoneNumber = Prelude.Nothing,+      emailAddress = Prelude.Nothing,+      firstName = Prelude.Nothing,+      gender = Prelude.Nothing,+      genderString = Prelude.Nothing,+      homePhoneNumber = Prelude.Nothing,+      lastName = Prelude.Nothing,+      mailingAddress = Prelude.Nothing,+      middleName = Prelude.Nothing,+      mobilePhoneNumber = Prelude.Nothing,+      partyType = Prelude.Nothing,+      partyTypeString = Prelude.Nothing,+      personalEmailAddress = Prelude.Nothing,+      phoneNumber = Prelude.Nothing,+      shippingAddress = Prelude.Nothing,+      domainName = pDomainName_,+      profileId = pProfileId_+    }++-- | A unique account number that you have given to the customer.+updateProfile_accountNumber :: Lens.Lens' UpdateProfile (Prelude.Maybe Prelude.Text)+updateProfile_accountNumber = Lens.lens (\UpdateProfile' {accountNumber} -> accountNumber) (\s@UpdateProfile' {} a -> s {accountNumber = a} :: UpdateProfile)++-- | Any additional information relevant to the customer’s profile.+updateProfile_additionalInformation :: Lens.Lens' UpdateProfile (Prelude.Maybe Prelude.Text)+updateProfile_additionalInformation = Lens.lens (\UpdateProfile' {additionalInformation} -> additionalInformation) (\s@UpdateProfile' {} a -> s {additionalInformation = a} :: UpdateProfile)++-- | A generic address associated with the customer that is not mailing,+-- shipping, or billing.+updateProfile_address :: Lens.Lens' UpdateProfile (Prelude.Maybe UpdateAddress)+updateProfile_address = Lens.lens (\UpdateProfile' {address} -> address) (\s@UpdateProfile' {} a -> s {address = a} :: UpdateProfile)++-- | A key value pair of attributes of a customer profile.+updateProfile_attributes :: Lens.Lens' UpdateProfile (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+updateProfile_attributes = Lens.lens (\UpdateProfile' {attributes} -> attributes) (\s@UpdateProfile' {} a -> s {attributes = a} :: UpdateProfile) Prelude.. Lens.mapping Lens.coerced++-- | The customer’s billing address.+updateProfile_billingAddress :: Lens.Lens' UpdateProfile (Prelude.Maybe UpdateAddress)+updateProfile_billingAddress = Lens.lens (\UpdateProfile' {billingAddress} -> billingAddress) (\s@UpdateProfile' {} a -> s {billingAddress = a} :: UpdateProfile)++-- | The customer’s birth date.+updateProfile_birthDate :: Lens.Lens' UpdateProfile (Prelude.Maybe Prelude.Text)+updateProfile_birthDate = Lens.lens (\UpdateProfile' {birthDate} -> birthDate) (\s@UpdateProfile' {} a -> s {birthDate = a} :: UpdateProfile)++-- | The customer’s business email address.+updateProfile_businessEmailAddress :: Lens.Lens' UpdateProfile (Prelude.Maybe Prelude.Text)+updateProfile_businessEmailAddress = Lens.lens (\UpdateProfile' {businessEmailAddress} -> businessEmailAddress) (\s@UpdateProfile' {} a -> s {businessEmailAddress = a} :: UpdateProfile)++-- | The name of the customer’s business.+updateProfile_businessName :: Lens.Lens' UpdateProfile (Prelude.Maybe Prelude.Text)+updateProfile_businessName = Lens.lens (\UpdateProfile' {businessName} -> businessName) (\s@UpdateProfile' {} a -> s {businessName = a} :: UpdateProfile)++-- | The customer’s business phone number.+updateProfile_businessPhoneNumber :: Lens.Lens' UpdateProfile (Prelude.Maybe Prelude.Text)+updateProfile_businessPhoneNumber = Lens.lens (\UpdateProfile' {businessPhoneNumber} -> businessPhoneNumber) (\s@UpdateProfile' {} a -> s {businessPhoneNumber = a} :: UpdateProfile)++-- | The customer’s email address, which has not been specified as a personal+-- or business address.+updateProfile_emailAddress :: Lens.Lens' UpdateProfile (Prelude.Maybe Prelude.Text)+updateProfile_emailAddress = Lens.lens (\UpdateProfile' {emailAddress} -> emailAddress) (\s@UpdateProfile' {} a -> s {emailAddress = a} :: UpdateProfile)++-- | The customer’s first name.+updateProfile_firstName :: Lens.Lens' UpdateProfile (Prelude.Maybe Prelude.Text)+updateProfile_firstName = Lens.lens (\UpdateProfile' {firstName} -> firstName) (\s@UpdateProfile' {} a -> s {firstName = a} :: UpdateProfile)++-- | The gender with which the customer identifies.+updateProfile_gender :: Lens.Lens' UpdateProfile (Prelude.Maybe Gender)+updateProfile_gender = Lens.lens (\UpdateProfile' {gender} -> gender) (\s@UpdateProfile' {} a -> s {gender = a} :: UpdateProfile)++-- | An alternative to @Gender@ which accepts any string as input.+updateProfile_genderString :: Lens.Lens' UpdateProfile (Prelude.Maybe Prelude.Text)+updateProfile_genderString = Lens.lens (\UpdateProfile' {genderString} -> genderString) (\s@UpdateProfile' {} a -> s {genderString = a} :: UpdateProfile)++-- | The customer’s home phone number.+updateProfile_homePhoneNumber :: Lens.Lens' UpdateProfile (Prelude.Maybe Prelude.Text)+updateProfile_homePhoneNumber = Lens.lens (\UpdateProfile' {homePhoneNumber} -> homePhoneNumber) (\s@UpdateProfile' {} a -> s {homePhoneNumber = a} :: UpdateProfile)++-- | The customer’s last name.+updateProfile_lastName :: Lens.Lens' UpdateProfile (Prelude.Maybe Prelude.Text)+updateProfile_lastName = Lens.lens (\UpdateProfile' {lastName} -> lastName) (\s@UpdateProfile' {} a -> s {lastName = a} :: UpdateProfile)++-- | The customer’s mailing address.+updateProfile_mailingAddress :: Lens.Lens' UpdateProfile (Prelude.Maybe UpdateAddress)+updateProfile_mailingAddress = Lens.lens (\UpdateProfile' {mailingAddress} -> mailingAddress) (\s@UpdateProfile' {} a -> s {mailingAddress = a} :: UpdateProfile)++-- | The customer’s middle name.+updateProfile_middleName :: Lens.Lens' UpdateProfile (Prelude.Maybe Prelude.Text)+updateProfile_middleName = Lens.lens (\UpdateProfile' {middleName} -> middleName) (\s@UpdateProfile' {} a -> s {middleName = a} :: UpdateProfile)++-- | The customer’s mobile phone number.+updateProfile_mobilePhoneNumber :: Lens.Lens' UpdateProfile (Prelude.Maybe Prelude.Text)+updateProfile_mobilePhoneNumber = Lens.lens (\UpdateProfile' {mobilePhoneNumber} -> mobilePhoneNumber) (\s@UpdateProfile' {} a -> s {mobilePhoneNumber = a} :: UpdateProfile)++-- | The type of profile used to describe the customer.+updateProfile_partyType :: Lens.Lens' UpdateProfile (Prelude.Maybe PartyType)+updateProfile_partyType = Lens.lens (\UpdateProfile' {partyType} -> partyType) (\s@UpdateProfile' {} a -> s {partyType = a} :: UpdateProfile)++-- | An alternative to @PartyType@ which accepts any string as input.+updateProfile_partyTypeString :: Lens.Lens' UpdateProfile (Prelude.Maybe Prelude.Text)+updateProfile_partyTypeString = Lens.lens (\UpdateProfile' {partyTypeString} -> partyTypeString) (\s@UpdateProfile' {} a -> s {partyTypeString = a} :: UpdateProfile)++-- | The customer’s personal email address.+updateProfile_personalEmailAddress :: Lens.Lens' UpdateProfile (Prelude.Maybe Prelude.Text)+updateProfile_personalEmailAddress = Lens.lens (\UpdateProfile' {personalEmailAddress} -> personalEmailAddress) (\s@UpdateProfile' {} a -> s {personalEmailAddress = a} :: UpdateProfile)++-- | The customer’s phone number, which has not been specified as a mobile,+-- home, or business number.+updateProfile_phoneNumber :: Lens.Lens' UpdateProfile (Prelude.Maybe Prelude.Text)+updateProfile_phoneNumber = Lens.lens (\UpdateProfile' {phoneNumber} -> phoneNumber) (\s@UpdateProfile' {} a -> s {phoneNumber = a} :: UpdateProfile)++-- | The customer’s shipping address.+updateProfile_shippingAddress :: Lens.Lens' UpdateProfile (Prelude.Maybe UpdateAddress)+updateProfile_shippingAddress = Lens.lens (\UpdateProfile' {shippingAddress} -> shippingAddress) (\s@UpdateProfile' {} a -> s {shippingAddress = a} :: UpdateProfile)++-- | The unique name of the domain.+updateProfile_domainName :: Lens.Lens' UpdateProfile Prelude.Text+updateProfile_domainName = Lens.lens (\UpdateProfile' {domainName} -> domainName) (\s@UpdateProfile' {} a -> s {domainName = a} :: UpdateProfile)++-- | The unique identifier of a customer profile.+updateProfile_profileId :: Lens.Lens' UpdateProfile Prelude.Text+updateProfile_profileId = Lens.lens (\UpdateProfile' {profileId} -> profileId) (\s@UpdateProfile' {} a -> s {profileId = a} :: UpdateProfile)++instance Core.AWSRequest UpdateProfile where+  type+    AWSResponse UpdateProfile =+      UpdateProfileResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateProfileResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "ProfileId")+      )++instance Prelude.Hashable UpdateProfile where+  hashWithSalt _salt UpdateProfile' {..} =+    _salt+      `Prelude.hashWithSalt` accountNumber+      `Prelude.hashWithSalt` additionalInformation+      `Prelude.hashWithSalt` address+      `Prelude.hashWithSalt` attributes+      `Prelude.hashWithSalt` billingAddress+      `Prelude.hashWithSalt` birthDate+      `Prelude.hashWithSalt` businessEmailAddress+      `Prelude.hashWithSalt` businessName+      `Prelude.hashWithSalt` businessPhoneNumber+      `Prelude.hashWithSalt` emailAddress+      `Prelude.hashWithSalt` firstName+      `Prelude.hashWithSalt` gender+      `Prelude.hashWithSalt` genderString+      `Prelude.hashWithSalt` homePhoneNumber+      `Prelude.hashWithSalt` lastName+      `Prelude.hashWithSalt` mailingAddress+      `Prelude.hashWithSalt` middleName+      `Prelude.hashWithSalt` mobilePhoneNumber+      `Prelude.hashWithSalt` partyType+      `Prelude.hashWithSalt` partyTypeString+      `Prelude.hashWithSalt` personalEmailAddress+      `Prelude.hashWithSalt` phoneNumber+      `Prelude.hashWithSalt` shippingAddress+      `Prelude.hashWithSalt` domainName+      `Prelude.hashWithSalt` profileId++instance Prelude.NFData UpdateProfile where+  rnf UpdateProfile' {..} =+    Prelude.rnf accountNumber+      `Prelude.seq` Prelude.rnf additionalInformation+      `Prelude.seq` Prelude.rnf address+      `Prelude.seq` Prelude.rnf attributes+      `Prelude.seq` Prelude.rnf billingAddress+      `Prelude.seq` Prelude.rnf birthDate+      `Prelude.seq` Prelude.rnf businessEmailAddress+      `Prelude.seq` Prelude.rnf businessName+      `Prelude.seq` Prelude.rnf businessPhoneNumber+      `Prelude.seq` Prelude.rnf emailAddress+      `Prelude.seq` Prelude.rnf firstName+      `Prelude.seq` Prelude.rnf gender+      `Prelude.seq` Prelude.rnf genderString+      `Prelude.seq` Prelude.rnf homePhoneNumber+      `Prelude.seq` Prelude.rnf lastName+      `Prelude.seq` Prelude.rnf mailingAddress+      `Prelude.seq` Prelude.rnf middleName+      `Prelude.seq` Prelude.rnf mobilePhoneNumber+      `Prelude.seq` Prelude.rnf partyType+      `Prelude.seq` Prelude.rnf partyTypeString+      `Prelude.seq` Prelude.rnf+        personalEmailAddress+      `Prelude.seq` Prelude.rnf phoneNumber+      `Prelude.seq` Prelude.rnf+        shippingAddress+      `Prelude.seq` Prelude.rnf domainName+      `Prelude.seq` Prelude.rnf+        profileId++instance Data.ToHeaders UpdateProfile where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateProfile where+  toJSON UpdateProfile' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("AccountNumber" Data..=) Prelude.<$> accountNumber,+            ("AdditionalInformation" Data..=)+              Prelude.<$> additionalInformation,+            ("Address" Data..=) Prelude.<$> address,+            ("Attributes" Data..=) Prelude.<$> attributes,+            ("BillingAddress" Data..=)+              Prelude.<$> billingAddress,+            ("BirthDate" Data..=) Prelude.<$> birthDate,+            ("BusinessEmailAddress" Data..=)+              Prelude.<$> businessEmailAddress,+            ("BusinessName" Data..=) Prelude.<$> businessName,+            ("BusinessPhoneNumber" Data..=)+              Prelude.<$> businessPhoneNumber,+            ("EmailAddress" Data..=) Prelude.<$> emailAddress,+            ("FirstName" Data..=) Prelude.<$> firstName,+            ("Gender" Data..=) Prelude.<$> gender,+            ("GenderString" Data..=) Prelude.<$> genderString,+            ("HomePhoneNumber" Data..=)+              Prelude.<$> homePhoneNumber,+            ("LastName" Data..=) Prelude.<$> lastName,+            ("MailingAddress" Data..=)+              Prelude.<$> mailingAddress,+            ("MiddleName" Data..=) Prelude.<$> middleName,+            ("MobilePhoneNumber" Data..=)+              Prelude.<$> mobilePhoneNumber,+            ("PartyType" Data..=) Prelude.<$> partyType,+            ("PartyTypeString" Data..=)+              Prelude.<$> partyTypeString,+            ("PersonalEmailAddress" Data..=)+              Prelude.<$> personalEmailAddress,+            ("PhoneNumber" Data..=) Prelude.<$> phoneNumber,+            ("ShippingAddress" Data..=)+              Prelude.<$> shippingAddress,+            Prelude.Just ("ProfileId" Data..= profileId)+          ]+      )++instance Data.ToPath UpdateProfile where+  toPath UpdateProfile' {..} =+    Prelude.mconcat+      ["/domains/", Data.toBS domainName, "/profiles"]++instance Data.ToQuery UpdateProfile where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateProfileResponse' smart constructor.+data UpdateProfileResponse = UpdateProfileResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The unique identifier of a customer profile.+    profileId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateProfileResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateProfileResponse_httpStatus' - The response's http status code.+--+-- 'profileId', 'updateProfileResponse_profileId' - The unique identifier of a customer profile.+newUpdateProfileResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'profileId'+  Prelude.Text ->+  UpdateProfileResponse+newUpdateProfileResponse pHttpStatus_ pProfileId_ =+  UpdateProfileResponse'+    { httpStatus = pHttpStatus_,+      profileId = pProfileId_+    }++-- | The response's http status code.+updateProfileResponse_httpStatus :: Lens.Lens' UpdateProfileResponse Prelude.Int+updateProfileResponse_httpStatus = Lens.lens (\UpdateProfileResponse' {httpStatus} -> httpStatus) (\s@UpdateProfileResponse' {} a -> s {httpStatus = a} :: UpdateProfileResponse)++-- | The unique identifier of a customer profile.+updateProfileResponse_profileId :: Lens.Lens' UpdateProfileResponse Prelude.Text+updateProfileResponse_profileId = Lens.lens (\UpdateProfileResponse' {profileId} -> profileId) (\s@UpdateProfileResponse' {} a -> s {profileId = a} :: UpdateProfileResponse)++instance Prelude.NFData UpdateProfileResponse where+  rnf UpdateProfileResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf profileId
+ gen/Amazonka/CustomerProfiles/Waiters.hs view
@@ -0,0 +1,24 @@+{-# LANGUAGE DisambiguateRecordFields #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CustomerProfiles.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.CustomerProfiles.Waiters where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.CustomerProfiles.Lens+import Amazonka.CustomerProfiles.Types+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude
+ src/.gitkeep view
+ test/Main.hs view
@@ -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.CustomerProfiles+import Test.Amazonka.CustomerProfiles.Internal+import Test.Tasty++main :: IO ()+main =+  defaultMain $+    testGroup+      "CustomerProfiles"+      [ testGroup "tests" tests,+        testGroup "fixtures" fixtures+      ]
+ test/Test/Amazonka/CustomerProfiles.hs view
@@ -0,0 +1,20 @@+-- |+-- Module      : Test.Amazonka.CustomerProfiles+-- Copyright   : (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.CustomerProfiles+  ( tests,+    fixtures,+  )+where++import Test.Tasty (TestTree)++tests :: [TestTree]+tests = []++fixtures :: [TestTree]+fixtures = []
+ test/Test/Amazonka/CustomerProfiles/Internal.hs view
@@ -0,0 +1,8 @@+-- |+-- Module      : Test.Amazonka.CustomerProfiles.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.CustomerProfiles.Internal where
+ test/Test/Amazonka/Gen/CustomerProfiles.hs view
@@ -0,0 +1,798 @@+{-# 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.CustomerProfiles+-- Copyright   : (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.CustomerProfiles where++import Amazonka.CustomerProfiles+import qualified Data.Proxy as Proxy+import Test.Amazonka.CustomerProfiles.Internal+import Test.Amazonka.Fixture+import Test.Amazonka.Prelude+import Test.Tasty++-- Auto-generated: the actual test selection needs to be manually placed into+-- the top-level so that real test data can be incrementally added.+--+-- This commented snippet is what the entire set should look like:++-- fixtures :: TestTree+-- fixtures =+--     [ testGroup "request"+--         [ requestAddProfileKey $+--             newAddProfileKey+--+--         , requestCreateDomain $+--             newCreateDomain+--+--         , requestCreateIntegrationWorkflow $+--             newCreateIntegrationWorkflow+--+--         , requestCreateProfile $+--             newCreateProfile+--+--         , requestDeleteDomain $+--             newDeleteDomain+--+--         , requestDeleteIntegration $+--             newDeleteIntegration+--+--         , requestDeleteProfile $+--             newDeleteProfile+--+--         , requestDeleteProfileKey $+--             newDeleteProfileKey+--+--         , requestDeleteProfileObject $+--             newDeleteProfileObject+--+--         , requestDeleteProfileObjectType $+--             newDeleteProfileObjectType+--+--         , requestDeleteWorkflow $+--             newDeleteWorkflow+--+--         , requestGetAutoMergingPreview $+--             newGetAutoMergingPreview+--+--         , requestGetDomain $+--             newGetDomain+--+--         , requestGetIdentityResolutionJob $+--             newGetIdentityResolutionJob+--+--         , requestGetIntegration $+--             newGetIntegration+--+--         , requestGetMatches $+--             newGetMatches+--+--         , requestGetProfileObjectType $+--             newGetProfileObjectType+--+--         , requestGetProfileObjectTypeTemplate $+--             newGetProfileObjectTypeTemplate+--+--         , requestGetWorkflow $+--             newGetWorkflow+--+--         , requestGetWorkflowSteps $+--             newGetWorkflowSteps+--+--         , requestListAccountIntegrations $+--             newListAccountIntegrations+--+--         , requestListDomains $+--             newListDomains+--+--         , requestListIdentityResolutionJobs $+--             newListIdentityResolutionJobs+--+--         , requestListIntegrations $+--             newListIntegrations+--+--         , requestListProfileObjectTypeTemplates $+--             newListProfileObjectTypeTemplates+--+--         , requestListProfileObjectTypes $+--             newListProfileObjectTypes+--+--         , requestListProfileObjects $+--             newListProfileObjects+--+--         , requestListTagsForResource $+--             newListTagsForResource+--+--         , requestListWorkflows $+--             newListWorkflows+--+--         , requestMergeProfiles $+--             newMergeProfiles+--+--         , requestPutIntegration $+--             newPutIntegration+--+--         , requestPutProfileObject $+--             newPutProfileObject+--+--         , requestPutProfileObjectType $+--             newPutProfileObjectType+--+--         , requestSearchProfiles $+--             newSearchProfiles+--+--         , requestTagResource $+--             newTagResource+--+--         , requestUntagResource $+--             newUntagResource+--+--         , requestUpdateDomain $+--             newUpdateDomain+--+--         , requestUpdateProfile $+--             newUpdateProfile+--+--           ]++--     , testGroup "response"+--         [ responseAddProfileKey $+--             newAddProfileKeyResponse+--+--         , responseCreateDomain $+--             newCreateDomainResponse+--+--         , responseCreateIntegrationWorkflow $+--             newCreateIntegrationWorkflowResponse+--+--         , responseCreateProfile $+--             newCreateProfileResponse+--+--         , responseDeleteDomain $+--             newDeleteDomainResponse+--+--         , responseDeleteIntegration $+--             newDeleteIntegrationResponse+--+--         , responseDeleteProfile $+--             newDeleteProfileResponse+--+--         , responseDeleteProfileKey $+--             newDeleteProfileKeyResponse+--+--         , responseDeleteProfileObject $+--             newDeleteProfileObjectResponse+--+--         , responseDeleteProfileObjectType $+--             newDeleteProfileObjectTypeResponse+--+--         , responseDeleteWorkflow $+--             newDeleteWorkflowResponse+--+--         , responseGetAutoMergingPreview $+--             newGetAutoMergingPreviewResponse+--+--         , responseGetDomain $+--             newGetDomainResponse+--+--         , responseGetIdentityResolutionJob $+--             newGetIdentityResolutionJobResponse+--+--         , responseGetIntegration $+--             newGetIntegrationResponse+--+--         , responseGetMatches $+--             newGetMatchesResponse+--+--         , responseGetProfileObjectType $+--             newGetProfileObjectTypeResponse+--+--         , responseGetProfileObjectTypeTemplate $+--             newGetProfileObjectTypeTemplateResponse+--+--         , responseGetWorkflow $+--             newGetWorkflowResponse+--+--         , responseGetWorkflowSteps $+--             newGetWorkflowStepsResponse+--+--         , responseListAccountIntegrations $+--             newListAccountIntegrationsResponse+--+--         , responseListDomains $+--             newListDomainsResponse+--+--         , responseListIdentityResolutionJobs $+--             newListIdentityResolutionJobsResponse+--+--         , responseListIntegrations $+--             newListIntegrationsResponse+--+--         , responseListProfileObjectTypeTemplates $+--             newListProfileObjectTypeTemplatesResponse+--+--         , responseListProfileObjectTypes $+--             newListProfileObjectTypesResponse+--+--         , responseListProfileObjects $+--             newListProfileObjectsResponse+--+--         , responseListTagsForResource $+--             newListTagsForResourceResponse+--+--         , responseListWorkflows $+--             newListWorkflowsResponse+--+--         , responseMergeProfiles $+--             newMergeProfilesResponse+--+--         , responsePutIntegration $+--             newPutIntegrationResponse+--+--         , responsePutProfileObject $+--             newPutProfileObjectResponse+--+--         , responsePutProfileObjectType $+--             newPutProfileObjectTypeResponse+--+--         , responseSearchProfiles $+--             newSearchProfilesResponse+--+--         , responseTagResource $+--             newTagResourceResponse+--+--         , responseUntagResource $+--             newUntagResourceResponse+--+--         , responseUpdateDomain $+--             newUpdateDomainResponse+--+--         , responseUpdateProfile $+--             newUpdateProfileResponse+--+--           ]+--     ]++-- Requests++requestAddProfileKey :: AddProfileKey -> TestTree+requestAddProfileKey =+  req+    "AddProfileKey"+    "fixture/AddProfileKey.yaml"++requestCreateDomain :: CreateDomain -> TestTree+requestCreateDomain =+  req+    "CreateDomain"+    "fixture/CreateDomain.yaml"++requestCreateIntegrationWorkflow :: CreateIntegrationWorkflow -> TestTree+requestCreateIntegrationWorkflow =+  req+    "CreateIntegrationWorkflow"+    "fixture/CreateIntegrationWorkflow.yaml"++requestCreateProfile :: CreateProfile -> TestTree+requestCreateProfile =+  req+    "CreateProfile"+    "fixture/CreateProfile.yaml"++requestDeleteDomain :: DeleteDomain -> TestTree+requestDeleteDomain =+  req+    "DeleteDomain"+    "fixture/DeleteDomain.yaml"++requestDeleteIntegration :: DeleteIntegration -> TestTree+requestDeleteIntegration =+  req+    "DeleteIntegration"+    "fixture/DeleteIntegration.yaml"++requestDeleteProfile :: DeleteProfile -> TestTree+requestDeleteProfile =+  req+    "DeleteProfile"+    "fixture/DeleteProfile.yaml"++requestDeleteProfileKey :: DeleteProfileKey -> TestTree+requestDeleteProfileKey =+  req+    "DeleteProfileKey"+    "fixture/DeleteProfileKey.yaml"++requestDeleteProfileObject :: DeleteProfileObject -> TestTree+requestDeleteProfileObject =+  req+    "DeleteProfileObject"+    "fixture/DeleteProfileObject.yaml"++requestDeleteProfileObjectType :: DeleteProfileObjectType -> TestTree+requestDeleteProfileObjectType =+  req+    "DeleteProfileObjectType"+    "fixture/DeleteProfileObjectType.yaml"++requestDeleteWorkflow :: DeleteWorkflow -> TestTree+requestDeleteWorkflow =+  req+    "DeleteWorkflow"+    "fixture/DeleteWorkflow.yaml"++requestGetAutoMergingPreview :: GetAutoMergingPreview -> TestTree+requestGetAutoMergingPreview =+  req+    "GetAutoMergingPreview"+    "fixture/GetAutoMergingPreview.yaml"++requestGetDomain :: GetDomain -> TestTree+requestGetDomain =+  req+    "GetDomain"+    "fixture/GetDomain.yaml"++requestGetIdentityResolutionJob :: GetIdentityResolutionJob -> TestTree+requestGetIdentityResolutionJob =+  req+    "GetIdentityResolutionJob"+    "fixture/GetIdentityResolutionJob.yaml"++requestGetIntegration :: GetIntegration -> TestTree+requestGetIntegration =+  req+    "GetIntegration"+    "fixture/GetIntegration.yaml"++requestGetMatches :: GetMatches -> TestTree+requestGetMatches =+  req+    "GetMatches"+    "fixture/GetMatches.yaml"++requestGetProfileObjectType :: GetProfileObjectType -> TestTree+requestGetProfileObjectType =+  req+    "GetProfileObjectType"+    "fixture/GetProfileObjectType.yaml"++requestGetProfileObjectTypeTemplate :: GetProfileObjectTypeTemplate -> TestTree+requestGetProfileObjectTypeTemplate =+  req+    "GetProfileObjectTypeTemplate"+    "fixture/GetProfileObjectTypeTemplate.yaml"++requestGetWorkflow :: GetWorkflow -> TestTree+requestGetWorkflow =+  req+    "GetWorkflow"+    "fixture/GetWorkflow.yaml"++requestGetWorkflowSteps :: GetWorkflowSteps -> TestTree+requestGetWorkflowSteps =+  req+    "GetWorkflowSteps"+    "fixture/GetWorkflowSteps.yaml"++requestListAccountIntegrations :: ListAccountIntegrations -> TestTree+requestListAccountIntegrations =+  req+    "ListAccountIntegrations"+    "fixture/ListAccountIntegrations.yaml"++requestListDomains :: ListDomains -> TestTree+requestListDomains =+  req+    "ListDomains"+    "fixture/ListDomains.yaml"++requestListIdentityResolutionJobs :: ListIdentityResolutionJobs -> TestTree+requestListIdentityResolutionJobs =+  req+    "ListIdentityResolutionJobs"+    "fixture/ListIdentityResolutionJobs.yaml"++requestListIntegrations :: ListIntegrations -> TestTree+requestListIntegrations =+  req+    "ListIntegrations"+    "fixture/ListIntegrations.yaml"++requestListProfileObjectTypeTemplates :: ListProfileObjectTypeTemplates -> TestTree+requestListProfileObjectTypeTemplates =+  req+    "ListProfileObjectTypeTemplates"+    "fixture/ListProfileObjectTypeTemplates.yaml"++requestListProfileObjectTypes :: ListProfileObjectTypes -> TestTree+requestListProfileObjectTypes =+  req+    "ListProfileObjectTypes"+    "fixture/ListProfileObjectTypes.yaml"++requestListProfileObjects :: ListProfileObjects -> TestTree+requestListProfileObjects =+  req+    "ListProfileObjects"+    "fixture/ListProfileObjects.yaml"++requestListTagsForResource :: ListTagsForResource -> TestTree+requestListTagsForResource =+  req+    "ListTagsForResource"+    "fixture/ListTagsForResource.yaml"++requestListWorkflows :: ListWorkflows -> TestTree+requestListWorkflows =+  req+    "ListWorkflows"+    "fixture/ListWorkflows.yaml"++requestMergeProfiles :: MergeProfiles -> TestTree+requestMergeProfiles =+  req+    "MergeProfiles"+    "fixture/MergeProfiles.yaml"++requestPutIntegration :: PutIntegration -> TestTree+requestPutIntegration =+  req+    "PutIntegration"+    "fixture/PutIntegration.yaml"++requestPutProfileObject :: PutProfileObject -> TestTree+requestPutProfileObject =+  req+    "PutProfileObject"+    "fixture/PutProfileObject.yaml"++requestPutProfileObjectType :: PutProfileObjectType -> TestTree+requestPutProfileObjectType =+  req+    "PutProfileObjectType"+    "fixture/PutProfileObjectType.yaml"++requestSearchProfiles :: SearchProfiles -> TestTree+requestSearchProfiles =+  req+    "SearchProfiles"+    "fixture/SearchProfiles.yaml"++requestTagResource :: TagResource -> TestTree+requestTagResource =+  req+    "TagResource"+    "fixture/TagResource.yaml"++requestUntagResource :: UntagResource -> TestTree+requestUntagResource =+  req+    "UntagResource"+    "fixture/UntagResource.yaml"++requestUpdateDomain :: UpdateDomain -> TestTree+requestUpdateDomain =+  req+    "UpdateDomain"+    "fixture/UpdateDomain.yaml"++requestUpdateProfile :: UpdateProfile -> TestTree+requestUpdateProfile =+  req+    "UpdateProfile"+    "fixture/UpdateProfile.yaml"++-- Responses++responseAddProfileKey :: AddProfileKeyResponse -> TestTree+responseAddProfileKey =+  res+    "AddProfileKeyResponse"+    "fixture/AddProfileKeyResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy AddProfileKey)++responseCreateDomain :: CreateDomainResponse -> TestTree+responseCreateDomain =+  res+    "CreateDomainResponse"+    "fixture/CreateDomainResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateDomain)++responseCreateIntegrationWorkflow :: CreateIntegrationWorkflowResponse -> TestTree+responseCreateIntegrationWorkflow =+  res+    "CreateIntegrationWorkflowResponse"+    "fixture/CreateIntegrationWorkflowResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateIntegrationWorkflow)++responseCreateProfile :: CreateProfileResponse -> TestTree+responseCreateProfile =+  res+    "CreateProfileResponse"+    "fixture/CreateProfileResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateProfile)++responseDeleteDomain :: DeleteDomainResponse -> TestTree+responseDeleteDomain =+  res+    "DeleteDomainResponse"+    "fixture/DeleteDomainResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteDomain)++responseDeleteIntegration :: DeleteIntegrationResponse -> TestTree+responseDeleteIntegration =+  res+    "DeleteIntegrationResponse"+    "fixture/DeleteIntegrationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteIntegration)++responseDeleteProfile :: DeleteProfileResponse -> TestTree+responseDeleteProfile =+  res+    "DeleteProfileResponse"+    "fixture/DeleteProfileResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteProfile)++responseDeleteProfileKey :: DeleteProfileKeyResponse -> TestTree+responseDeleteProfileKey =+  res+    "DeleteProfileKeyResponse"+    "fixture/DeleteProfileKeyResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteProfileKey)++responseDeleteProfileObject :: DeleteProfileObjectResponse -> TestTree+responseDeleteProfileObject =+  res+    "DeleteProfileObjectResponse"+    "fixture/DeleteProfileObjectResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteProfileObject)++responseDeleteProfileObjectType :: DeleteProfileObjectTypeResponse -> TestTree+responseDeleteProfileObjectType =+  res+    "DeleteProfileObjectTypeResponse"+    "fixture/DeleteProfileObjectTypeResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteProfileObjectType)++responseDeleteWorkflow :: DeleteWorkflowResponse -> TestTree+responseDeleteWorkflow =+  res+    "DeleteWorkflowResponse"+    "fixture/DeleteWorkflowResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteWorkflow)++responseGetAutoMergingPreview :: GetAutoMergingPreviewResponse -> TestTree+responseGetAutoMergingPreview =+  res+    "GetAutoMergingPreviewResponse"+    "fixture/GetAutoMergingPreviewResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetAutoMergingPreview)++responseGetDomain :: GetDomainResponse -> TestTree+responseGetDomain =+  res+    "GetDomainResponse"+    "fixture/GetDomainResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetDomain)++responseGetIdentityResolutionJob :: GetIdentityResolutionJobResponse -> TestTree+responseGetIdentityResolutionJob =+  res+    "GetIdentityResolutionJobResponse"+    "fixture/GetIdentityResolutionJobResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetIdentityResolutionJob)++responseGetIntegration :: GetIntegrationResponse -> TestTree+responseGetIntegration =+  res+    "GetIntegrationResponse"+    "fixture/GetIntegrationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetIntegration)++responseGetMatches :: GetMatchesResponse -> TestTree+responseGetMatches =+  res+    "GetMatchesResponse"+    "fixture/GetMatchesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetMatches)++responseGetProfileObjectType :: GetProfileObjectTypeResponse -> TestTree+responseGetProfileObjectType =+  res+    "GetProfileObjectTypeResponse"+    "fixture/GetProfileObjectTypeResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetProfileObjectType)++responseGetProfileObjectTypeTemplate :: GetProfileObjectTypeTemplateResponse -> TestTree+responseGetProfileObjectTypeTemplate =+  res+    "GetProfileObjectTypeTemplateResponse"+    "fixture/GetProfileObjectTypeTemplateResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetProfileObjectTypeTemplate)++responseGetWorkflow :: GetWorkflowResponse -> TestTree+responseGetWorkflow =+  res+    "GetWorkflowResponse"+    "fixture/GetWorkflowResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetWorkflow)++responseGetWorkflowSteps :: GetWorkflowStepsResponse -> TestTree+responseGetWorkflowSteps =+  res+    "GetWorkflowStepsResponse"+    "fixture/GetWorkflowStepsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetWorkflowSteps)++responseListAccountIntegrations :: ListAccountIntegrationsResponse -> TestTree+responseListAccountIntegrations =+  res+    "ListAccountIntegrationsResponse"+    "fixture/ListAccountIntegrationsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListAccountIntegrations)++responseListDomains :: ListDomainsResponse -> TestTree+responseListDomains =+  res+    "ListDomainsResponse"+    "fixture/ListDomainsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListDomains)++responseListIdentityResolutionJobs :: ListIdentityResolutionJobsResponse -> TestTree+responseListIdentityResolutionJobs =+  res+    "ListIdentityResolutionJobsResponse"+    "fixture/ListIdentityResolutionJobsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListIdentityResolutionJobs)++responseListIntegrations :: ListIntegrationsResponse -> TestTree+responseListIntegrations =+  res+    "ListIntegrationsResponse"+    "fixture/ListIntegrationsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListIntegrations)++responseListProfileObjectTypeTemplates :: ListProfileObjectTypeTemplatesResponse -> TestTree+responseListProfileObjectTypeTemplates =+  res+    "ListProfileObjectTypeTemplatesResponse"+    "fixture/ListProfileObjectTypeTemplatesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListProfileObjectTypeTemplates)++responseListProfileObjectTypes :: ListProfileObjectTypesResponse -> TestTree+responseListProfileObjectTypes =+  res+    "ListProfileObjectTypesResponse"+    "fixture/ListProfileObjectTypesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListProfileObjectTypes)++responseListProfileObjects :: ListProfileObjectsResponse -> TestTree+responseListProfileObjects =+  res+    "ListProfileObjectsResponse"+    "fixture/ListProfileObjectsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListProfileObjects)++responseListTagsForResource :: ListTagsForResourceResponse -> TestTree+responseListTagsForResource =+  res+    "ListTagsForResourceResponse"+    "fixture/ListTagsForResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)++responseListWorkflows :: ListWorkflowsResponse -> TestTree+responseListWorkflows =+  res+    "ListWorkflowsResponse"+    "fixture/ListWorkflowsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListWorkflows)++responseMergeProfiles :: MergeProfilesResponse -> TestTree+responseMergeProfiles =+  res+    "MergeProfilesResponse"+    "fixture/MergeProfilesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy MergeProfiles)++responsePutIntegration :: PutIntegrationResponse -> TestTree+responsePutIntegration =+  res+    "PutIntegrationResponse"+    "fixture/PutIntegrationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutIntegration)++responsePutProfileObject :: PutProfileObjectResponse -> TestTree+responsePutProfileObject =+  res+    "PutProfileObjectResponse"+    "fixture/PutProfileObjectResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutProfileObject)++responsePutProfileObjectType :: PutProfileObjectTypeResponse -> TestTree+responsePutProfileObjectType =+  res+    "PutProfileObjectTypeResponse"+    "fixture/PutProfileObjectTypeResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutProfileObjectType)++responseSearchProfiles :: SearchProfilesResponse -> TestTree+responseSearchProfiles =+  res+    "SearchProfilesResponse"+    "fixture/SearchProfilesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy SearchProfiles)++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)++responseUpdateDomain :: UpdateDomainResponse -> TestTree+responseUpdateDomain =+  res+    "UpdateDomainResponse"+    "fixture/UpdateDomainResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateDomain)++responseUpdateProfile :: UpdateProfileResponse -> TestTree+responseUpdateProfile =+  res+    "UpdateProfileResponse"+    "fixture/UpdateProfileResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateProfile)