{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE NoImplicitPrelude #-} {-# OPTIONS_GHC -fno-warn-unused-binds #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Amazonka.Personalize.CreateEventTracker -- 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 event tracker that you use when adding event data to a -- specified dataset group using the -- -- API. -- -- Only one event tracker can be associated with a dataset group. You will -- get an error if you call @CreateEventTracker@ using the same dataset -- group as an existing event tracker. -- -- When you create an event tracker, the response includes a tracking ID, -- which you pass as a parameter when you use the -- -- operation. Amazon Personalize then appends the event data to the -- Interactions dataset of the dataset group you specify in your event -- tracker. -- -- The event tracker can be in one of the following states: -- -- - CREATE PENDING > CREATE IN_PROGRESS > ACTIVE -or- CREATE FAILED -- -- - DELETE PENDING > DELETE IN_PROGRESS -- -- To get the status of the event tracker, call -- . -- -- The event tracker must be in the ACTIVE state before using the tracking -- ID. -- -- __Related APIs__ -- -- - -- -- - -- -- - module Amazonka.Personalize.CreateEventTracker ( -- * Creating a Request CreateEventTracker (..), newCreateEventTracker, -- * Request Lenses createEventTracker_tags, createEventTracker_name, createEventTracker_datasetGroupArn, -- * Destructuring the Response CreateEventTrackerResponse (..), newCreateEventTrackerResponse, -- * Response Lenses createEventTrackerResponse_eventTrackerArn, createEventTrackerResponse_trackingId, createEventTrackerResponse_httpStatus, ) where import qualified Amazonka.Core as Core import qualified Amazonka.Core.Lens.Internal as Lens import qualified Amazonka.Data as Data import Amazonka.Personalize.Types import qualified Amazonka.Prelude as Prelude import qualified Amazonka.Request as Request import qualified Amazonka.Response as Response -- | /See:/ 'newCreateEventTracker' smart constructor. data CreateEventTracker = CreateEventTracker' { -- | A list of -- -- to apply to the event tracker. tags :: Prelude.Maybe [Tag], -- | The name for the event tracker. name :: Prelude.Text, -- | The Amazon Resource Name (ARN) of the dataset group that receives the -- event data. datasetGroupArn :: Prelude.Text } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'CreateEventTracker' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'tags', 'createEventTracker_tags' - A list of -- -- to apply to the event tracker. -- -- 'name', 'createEventTracker_name' - The name for the event tracker. -- -- 'datasetGroupArn', 'createEventTracker_datasetGroupArn' - The Amazon Resource Name (ARN) of the dataset group that receives the -- event data. newCreateEventTracker :: -- | 'name' Prelude.Text -> -- | 'datasetGroupArn' Prelude.Text -> CreateEventTracker newCreateEventTracker pName_ pDatasetGroupArn_ = CreateEventTracker' { tags = Prelude.Nothing, name = pName_, datasetGroupArn = pDatasetGroupArn_ } -- | A list of -- -- to apply to the event tracker. createEventTracker_tags :: Lens.Lens' CreateEventTracker (Prelude.Maybe [Tag]) createEventTracker_tags = Lens.lens (\CreateEventTracker' {tags} -> tags) (\s@CreateEventTracker' {} a -> s {tags = a} :: CreateEventTracker) Prelude.. Lens.mapping Lens.coerced -- | The name for the event tracker. createEventTracker_name :: Lens.Lens' CreateEventTracker Prelude.Text createEventTracker_name = Lens.lens (\CreateEventTracker' {name} -> name) (\s@CreateEventTracker' {} a -> s {name = a} :: CreateEventTracker) -- | The Amazon Resource Name (ARN) of the dataset group that receives the -- event data. createEventTracker_datasetGroupArn :: Lens.Lens' CreateEventTracker Prelude.Text createEventTracker_datasetGroupArn = Lens.lens (\CreateEventTracker' {datasetGroupArn} -> datasetGroupArn) (\s@CreateEventTracker' {} a -> s {datasetGroupArn = a} :: CreateEventTracker) instance Core.AWSRequest CreateEventTracker where type AWSResponse CreateEventTracker = CreateEventTrackerResponse request overrides = Request.postJSON (overrides defaultService) response = Response.receiveJSON ( \s h x -> CreateEventTrackerResponse' Prelude.<$> (x Data..?> "eventTrackerArn") Prelude.<*> (x Data..?> "trackingId") Prelude.<*> (Prelude.pure (Prelude.fromEnum s)) ) instance Prelude.Hashable CreateEventTracker where hashWithSalt _salt CreateEventTracker' {..} = _salt `Prelude.hashWithSalt` tags `Prelude.hashWithSalt` name `Prelude.hashWithSalt` datasetGroupArn instance Prelude.NFData CreateEventTracker where rnf CreateEventTracker' {..} = Prelude.rnf tags `Prelude.seq` Prelude.rnf name `Prelude.seq` Prelude.rnf datasetGroupArn instance Data.ToHeaders CreateEventTracker where toHeaders = Prelude.const ( Prelude.mconcat [ "X-Amz-Target" Data.=# ( "AmazonPersonalize.CreateEventTracker" :: Prelude.ByteString ), "Content-Type" Data.=# ( "application/x-amz-json-1.1" :: Prelude.ByteString ) ] ) instance Data.ToJSON CreateEventTracker where toJSON CreateEventTracker' {..} = Data.object ( Prelude.catMaybes [ ("tags" Data..=) Prelude.<$> tags, Prelude.Just ("name" Data..= name), Prelude.Just ("datasetGroupArn" Data..= datasetGroupArn) ] ) instance Data.ToPath CreateEventTracker where toPath = Prelude.const "/" instance Data.ToQuery CreateEventTracker where toQuery = Prelude.const Prelude.mempty -- | /See:/ 'newCreateEventTrackerResponse' smart constructor. data CreateEventTrackerResponse = CreateEventTrackerResponse' { -- | The ARN of the event tracker. eventTrackerArn :: Prelude.Maybe Prelude.Text, -- | The ID of the event tracker. Include this ID in requests to the -- -- API. trackingId :: 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 'CreateEventTrackerResponse' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'eventTrackerArn', 'createEventTrackerResponse_eventTrackerArn' - The ARN of the event tracker. -- -- 'trackingId', 'createEventTrackerResponse_trackingId' - The ID of the event tracker. Include this ID in requests to the -- -- API. -- -- 'httpStatus', 'createEventTrackerResponse_httpStatus' - The response's http status code. newCreateEventTrackerResponse :: -- | 'httpStatus' Prelude.Int -> CreateEventTrackerResponse newCreateEventTrackerResponse pHttpStatus_ = CreateEventTrackerResponse' { eventTrackerArn = Prelude.Nothing, trackingId = Prelude.Nothing, httpStatus = pHttpStatus_ } -- | The ARN of the event tracker. createEventTrackerResponse_eventTrackerArn :: Lens.Lens' CreateEventTrackerResponse (Prelude.Maybe Prelude.Text) createEventTrackerResponse_eventTrackerArn = Lens.lens (\CreateEventTrackerResponse' {eventTrackerArn} -> eventTrackerArn) (\s@CreateEventTrackerResponse' {} a -> s {eventTrackerArn = a} :: CreateEventTrackerResponse) -- | The ID of the event tracker. Include this ID in requests to the -- -- API. createEventTrackerResponse_trackingId :: Lens.Lens' CreateEventTrackerResponse (Prelude.Maybe Prelude.Text) createEventTrackerResponse_trackingId = Lens.lens (\CreateEventTrackerResponse' {trackingId} -> trackingId) (\s@CreateEventTrackerResponse' {} a -> s {trackingId = a} :: CreateEventTrackerResponse) -- | The response's http status code. createEventTrackerResponse_httpStatus :: Lens.Lens' CreateEventTrackerResponse Prelude.Int createEventTrackerResponse_httpStatus = Lens.lens (\CreateEventTrackerResponse' {httpStatus} -> httpStatus) (\s@CreateEventTrackerResponse' {} a -> s {httpStatus = a} :: CreateEventTrackerResponse) instance Prelude.NFData CreateEventTrackerResponse where rnf CreateEventTrackerResponse' {..} = Prelude.rnf eventTrackerArn `Prelude.seq` Prelude.rnf trackingId `Prelude.seq` Prelude.rnf httpStatus