diff --git a/Libraries/src/Amazon.Lambda.CloudWatchEvents/TranslateEvents/TranslateParallelDataStateChange.cs b/Libraries/src/Amazon.Lambda.CloudWatchEvents/TranslateEvents/TranslateParallelDataStateChange.cs
new file mode 100644
index 000000000..4edb431f0
--- /dev/null
+++ b/Libraries/src/Amazon.Lambda.CloudWatchEvents/TranslateEvents/TranslateParallelDataStateChange.cs
@@ -0,0 +1,37 @@
+using System;
+
+namespace Amazon.Lambda.CloudWatchEvents.TranslateEvents
+{
+ ///
+ /// This class represents the details of a Translate Parallel Data State Change
+ // for CreateParallelData and UpdateParallelData events sent via EventBridge.
+ /// For more see - https://docs.aws.amazon.com/translate/latest/dg/monitoring-with-eventbridge.html
+ ///
+ public class TranslateParallelDataStateChange
+ {
+ ///
+ /// The CreateParallelData/UpdateParallelData operation.
+ ///
+ public string Operation { get; set; }
+
+ ///
+ /// The CreateParallelData/UpdateParallelData name.
+ ///
+ public string Name { get; set; }
+
+ ///
+ /// The CreateParallelData/UpdateParallelData status.
+ ///
+ public string Status { get; set; }
+
+ ///
+ /// The UpdateParallelData latest update attempt status.
+ ///
+ public string LatestUpdateAttemptStatus { get; set; }
+
+ ///
+ /// The UpdateParallelData latest update attempt at.
+ ///
+ public DateTime LatestUpdateAttemptAt { get; set; }
+ }
+}
diff --git a/Libraries/src/Amazon.Lambda.CloudWatchEvents/TranslateEvents/TranslateParallelDataStateChangeEvent.cs b/Libraries/src/Amazon.Lambda.CloudWatchEvents/TranslateEvents/TranslateParallelDataStateChangeEvent.cs
new file mode 100644
index 000000000..fcbf8b0ee
--- /dev/null
+++ b/Libraries/src/Amazon.Lambda.CloudWatchEvents/TranslateEvents/TranslateParallelDataStateChangeEvent.cs
@@ -0,0 +1,7 @@
+namespace Amazon.Lambda.CloudWatchEvents.TranslateEvents
+{
+ ///
+ /// This class represents a Translate Parallel Data State Change sent via EventBridge.
+ ///
+ public class TranslateParallelDataStateChangeEvent : CloudWatchEvent{ }
+}
diff --git a/Libraries/src/Amazon.Lambda.CloudWatchEvents/TranslateEvents/TranslateTextTranslationJobStateChange.cs b/Libraries/src/Amazon.Lambda.CloudWatchEvents/TranslateEvents/TranslateTextTranslationJobStateChange.cs
new file mode 100644
index 000000000..9403e90d9
--- /dev/null
+++ b/Libraries/src/Amazon.Lambda.CloudWatchEvents/TranslateEvents/TranslateTextTranslationJobStateChange.cs
@@ -0,0 +1,19 @@
+namespace Amazon.Lambda.CloudWatchEvents.TranslateEvents
+{
+ ///
+ /// This class represents the details of a Translate Text Translation Job State Change sent via EventBridge.
+ /// For more see - https://docs.aws.amazon.com/translate/latest/dg/monitoring-with-eventbridge.html
+ ///
+ public class TranslateTextTranslationJobStateChange
+ {
+ ///
+ /// The translation job id.
+ ///
+ public string JobId { get; set; }
+
+ ///
+ /// The translation job status.
+ ///
+ public string JobStatus { get; set; }
+ }
+}
diff --git a/Libraries/src/Amazon.Lambda.CloudWatchEvents/TranslateEvents/TranslateTextTranslationJobStateChangeEvent.cs b/Libraries/src/Amazon.Lambda.CloudWatchEvents/TranslateEvents/TranslateTextTranslationJobStateChangeEvent.cs
new file mode 100644
index 000000000..842df82a9
--- /dev/null
+++ b/Libraries/src/Amazon.Lambda.CloudWatchEvents/TranslateEvents/TranslateTextTranslationJobStateChangeEvent.cs
@@ -0,0 +1,7 @@
+namespace Amazon.Lambda.CloudWatchEvents.TranslateEvents
+{
+ ///
+ /// This class represents a Translate Text Translation Job State Change sent via EventBridge.
+ ///
+ public class TranslateTextTranslationJobStateChangeEvent : CloudWatchEvent{ }
+}
diff --git a/Libraries/test/EventsTests.Shared/EventTests.cs b/Libraries/test/EventsTests.Shared/EventTests.cs
index 4f7d5e8ab..af8e05634 100644
--- a/Libraries/test/EventsTests.Shared/EventTests.cs
+++ b/Libraries/test/EventsTests.Shared/EventTests.cs
@@ -7,6 +7,7 @@ namespace Amazon.Lambda.Tests
using Amazon.Lambda.CloudWatchEvents.ECSEvents;
using Amazon.Lambda.CloudWatchEvents.ScheduledEvents;
using Amazon.Lambda.CloudWatchEvents.TranscribeEvents;
+ using Amazon.Lambda.CloudWatchEvents.TranslateEvents;
using Amazon.Lambda.CloudWatchLogsEvents;
using Amazon.Lambda.CognitoEvents;
using Amazon.Lambda.ConfigEvents;
@@ -3148,6 +3149,73 @@ public void CloudWatchTranscribeJobStateChangeFailed(Type serializerType)
}
}
+ [Theory]
+ [InlineData(typeof(JsonSerializer))]
+#if NETCOREAPP3_1_OR_GREATER
+ [InlineData(typeof(Amazon.Lambda.Serialization.SystemTextJson.LambdaJsonSerializer))]
+ [InlineData(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]
+#endif
+ public void CloudWatchTranslateTextTranslationJobStateChange(Type serializerType)
+ {
+ var serializer = Activator.CreateInstance(serializerType) as ILambdaSerializer;
+ using (var fileStream = LoadJsonTestFile("cloudwatchevents-translatetexttranslationjobstatechange.json"))
+ {
+ var request = serializer.Deserialize(fileStream);
+ Assert.Equal("8882c5af-c9da-4a58-99e2-91fbe33b9e52", request.Id);
+
+ var detail = request.Detail;
+ Assert.NotNull(detail);
+ Assert.Equal("8ce682a1-9be8-4f2c-875c-f8ae2fe1b015", detail.JobId);
+ Assert.Equal("COMPLETED", detail.JobStatus);
+ }
+ }
+
+ [Theory]
+ [InlineData(typeof(JsonSerializer))]
+#if NETCOREAPP3_1_OR_GREATER
+ [InlineData(typeof(Amazon.Lambda.Serialization.SystemTextJson.LambdaJsonSerializer))]
+ [InlineData(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]
+#endif
+ public void CloudWatchTranslateParallelDataStateChangeCreate(Type serializerType)
+ {
+ var serializer = Activator.CreateInstance(serializerType) as ILambdaSerializer;
+ using (var fileStream = LoadJsonTestFile("cloudwatchevents-translateparalleldatastatechange-create.json"))
+ {
+ var request = serializer.Deserialize(fileStream);
+ Assert.Equal("e99030f3-a7a8-42f5-923a-684fbf9bff65", request.Id);
+
+ var detail = request.Detail;
+ Assert.NotNull(detail);
+ Assert.Equal("CreateParallelData", detail.Operation);
+ Assert.Equal("ExampleParallelData", detail.Name);
+ Assert.Equal("ACTIVE", detail.Status);
+ }
+ }
+
+ [Theory]
+ [InlineData(typeof(JsonSerializer))]
+#if NETCOREAPP3_1_OR_GREATER
+ [InlineData(typeof(Amazon.Lambda.Serialization.SystemTextJson.LambdaJsonSerializer))]
+ [InlineData(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]
+#endif
+ public void CloudWatchTranslateParallelDataStateChangeUpdate(Type serializerType)
+ {
+ var serializer = Activator.CreateInstance(serializerType) as ILambdaSerializer;
+ using (var fileStream = LoadJsonTestFile("cloudwatchevents-translateparalleldatastatechange-update.json"))
+ {
+ var request = serializer.Deserialize(fileStream);
+ Assert.Equal("920d9de3-fbd0-4cfb-87aa-e35b5f7cba8f", request.Id);
+
+ var detail = request.Detail;
+ Assert.NotNull(detail);
+ Assert.Equal("UpdateParallelData", detail.Operation);
+ Assert.Equal("ExampleParallelData2", detail.Name);
+ Assert.Equal("ACTIVE", detail.Status);
+ Assert.Equal("ACTIVE", detail.LatestUpdateAttemptStatus);
+ Assert.Equal(DateTime.Parse("2023-03-02T03:31:47Z").ToUniversalTime(), detail.LatestUpdateAttemptAt);
+
+ }
+ }
class ClassUsingPascalCase
{
public int SomeValue { get; set; }
diff --git a/Libraries/test/EventsTests.Shared/cloudwatchevents-translateparalleldatastatechange-create.json b/Libraries/test/EventsTests.Shared/cloudwatchevents-translateparalleldatastatechange-create.json
new file mode 100644
index 000000000..320724e2c
--- /dev/null
+++ b/Libraries/test/EventsTests.Shared/cloudwatchevents-translateparalleldatastatechange-create.json
@@ -0,0 +1,17 @@
+{
+ "version": "0",
+ "id": "e99030f3-a7a8-42f5-923a-684fbf9bff65",
+ "detail-type": "Translate Parallel Data State Change",
+ "source": "aws.translate",
+ "account": "111122223333",
+ "time": "2017-04-22T03:31:47Z",
+ "region": "us-east-1",
+ "resources": [
+ "arn:aws:translate:us-east-1:111122223333:parallel-data/ExampleParallelData"
+ ],
+ "detail": {
+ "operation": "CreateParallelData",
+ "name": "ExampleParallelData",
+ "status": "ACTIVE"
+ }
+}
diff --git a/Libraries/test/EventsTests.Shared/cloudwatchevents-translateparalleldatastatechange-update.json b/Libraries/test/EventsTests.Shared/cloudwatchevents-translateparalleldatastatechange-update.json
new file mode 100644
index 000000000..5ddc2b5d6
--- /dev/null
+++ b/Libraries/test/EventsTests.Shared/cloudwatchevents-translateparalleldatastatechange-update.json
@@ -0,0 +1,19 @@
+{
+ "version": "0",
+ "id": "920d9de3-fbd0-4cfb-87aa-e35b5f7cba8f",
+ "detail-type": "Translate Parallel Data State Change",
+ "source": "aws.translate",
+ "account": "111122223333",
+ "time": "2017-04-22T03:31:47Z",
+ "region": "us-east-1",
+ "resources": [
+ "arn:aws:translate:us-east-1:111122223333:parallel-data/ExampleParallelData"
+ ],
+ "detail": {
+ "operation": "UpdateParallelData",
+ "name": "ExampleParallelData2",
+ "status": "ACTIVE",
+ "latestUpdateAttemptStatus": "ACTIVE",
+ "latestUpdateAttemptAt": "2023-03-02T03:31:47Z"
+ }
+}
diff --git a/Libraries/test/EventsTests.Shared/cloudwatchevents-translatetexttranslationjobstatechange.json b/Libraries/test/EventsTests.Shared/cloudwatchevents-translatetexttranslationjobstatechange.json
new file mode 100644
index 000000000..ab062d7e6
--- /dev/null
+++ b/Libraries/test/EventsTests.Shared/cloudwatchevents-translatetexttranslationjobstatechange.json
@@ -0,0 +1,14 @@
+{
+ "version": "0",
+ "id": "8882c5af-c9da-4a58-99e2-91fbe33b9e52",
+ "detail-type": "Translate TextTranslationJob State Change",
+ "source": "aws.translate",
+ "account": "111122223333",
+ "time": "2017-04-22T03:31:47Z",
+ "region": "us-east-1",
+ "resources": [],
+ "detail": {
+ "jobId": "8ce682a1-9be8-4f2c-875c-f8ae2fe1b015",
+ "jobStatus": "COMPLETED"
+ }
+}