diff --git a/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator.Core/DefinitionsBuilder.cs b/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator.Core/DefinitionsBuilder.cs
index 098e6be96..07ff5c155 100644
--- a/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator.Core/DefinitionsBuilder.cs
+++ b/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator.Core/DefinitionsBuilder.cs
@@ -27,6 +27,7 @@ public class DefinitionsBuilder
{
"reason",
"reasonDesc",
+ "source",
"errorCode",
"causedBy",
"httpStatusCode",
@@ -440,6 +441,11 @@ private CodeMemberMethod CreateRecordMetricMethodByDataClass(Metric metric)
tryStatements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(datumAddData,
new CodePrimitiveExpression("reasonDesc"), payloadReasonDescription)));
+ // Generate: datum.AddMetadata("source", payload.Source);
+ var payloadSource = new CodeFieldReferenceExpression(payload, "Source");
+ tryStatements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(datumAddData,
+ new CodePrimitiveExpression("source"), payloadSource)));
+
// Generate: datum.AddMetadata("errorCode", payload.ErrorCode);
var payloadErrorCode = new CodeFieldReferenceExpression(payload, "ErrorCode");
tryStatements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(datumAddData,
diff --git a/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator.Tests/SampleData/Outcomes/sampleDefinitions-generated.txt b/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator.Tests/SampleData/Outcomes/sampleDefinitions-generated.txt
index 603935b10..4e2ee5726 100644
--- a/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator.Tests/SampleData/Outcomes/sampleDefinitions-generated.txt
+++ b/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator.Tests/SampleData/Outcomes/sampleDefinitions-generated.txt
@@ -58,6 +58,7 @@ namespace Test
datum.AddMetadata("awsRegion", payload.AwsRegion);
datum.AddMetadata("reason", payload.Reason);
datum.AddMetadata("reasonDesc", payload.ReasonDescription);
+ datum.AddMetadata("source", payload.Source);
datum.AddMetadata("errorCode", payload.ErrorCode);
datum.AddMetadata("causedBy", payload.CausedBy);
datum.AddMetadata("httpStatusCode", payload.HttpStatusCode);
@@ -118,6 +119,7 @@ namespace Test
datum.AddMetadata("awsRegion", payload.AwsRegion);
datum.AddMetadata("reason", payload.Reason);
datum.AddMetadata("reasonDesc", payload.ReasonDescription);
+ datum.AddMetadata("source", payload.Source);
datum.AddMetadata("errorCode", payload.ErrorCode);
datum.AddMetadata("causedBy", payload.CausedBy);
datum.AddMetadata("httpStatusCode", payload.HttpStatusCode);
@@ -178,6 +180,7 @@ namespace Test
datum.AddMetadata("awsRegion", payload.AwsRegion);
datum.AddMetadata("reason", payload.Reason);
datum.AddMetadata("reasonDesc", payload.ReasonDescription);
+ datum.AddMetadata("source", payload.Source);
datum.AddMetadata("errorCode", payload.ErrorCode);
datum.AddMetadata("causedBy", payload.CausedBy);
datum.AddMetadata("httpStatusCode", payload.HttpStatusCode);
@@ -246,6 +249,7 @@ namespace Test
datum.AddMetadata("awsRegion", payload.AwsRegion);
datum.AddMetadata("reason", payload.Reason);
datum.AddMetadata("reasonDesc", payload.ReasonDescription);
+ datum.AddMetadata("source", payload.Source);
datum.AddMetadata("errorCode", payload.ErrorCode);
datum.AddMetadata("causedBy", payload.CausedBy);
datum.AddMetadata("httpStatusCode", payload.HttpStatusCode);
@@ -314,6 +318,7 @@ namespace Test
datum.AddMetadata("awsRegion", payload.AwsRegion);
datum.AddMetadata("reason", payload.Reason);
datum.AddMetadata("reasonDesc", payload.ReasonDescription);
+ datum.AddMetadata("source", payload.Source);
datum.AddMetadata("errorCode", payload.ErrorCode);
datum.AddMetadata("causedBy", payload.CausedBy);
datum.AddMetadata("httpStatusCode", payload.HttpStatusCode);
@@ -391,6 +396,7 @@ namespace Test
datum.AddMetadata("awsRegion", payload.AwsRegion);
datum.AddMetadata("reason", payload.Reason);
datum.AddMetadata("reasonDesc", payload.ReasonDescription);
+ datum.AddMetadata("source", payload.Source);
datum.AddMetadata("errorCode", payload.ErrorCode);
datum.AddMetadata("causedBy", payload.CausedBy);
datum.AddMetadata("httpStatusCode", payload.HttpStatusCode);
@@ -451,6 +457,7 @@ namespace Test
datum.AddMetadata("awsRegion", payload.AwsRegion);
datum.AddMetadata("reason", payload.Reason);
datum.AddMetadata("reasonDesc", payload.ReasonDescription);
+ datum.AddMetadata("source", payload.Source);
datum.AddMetadata("errorCode", payload.ErrorCode);
datum.AddMetadata("causedBy", payload.CausedBy);
datum.AddMetadata("httpStatusCode", payload.HttpStatusCode);
diff --git a/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator.Tests/SampleData/Outcomes/sampleDefinitions-supplemental.txt b/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator.Tests/SampleData/Outcomes/sampleDefinitions-supplemental.txt
index 43c76daa8..c5d70f95f 100644
--- a/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator.Tests/SampleData/Outcomes/sampleDefinitions-supplemental.txt
+++ b/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator.Tests/SampleData/Outcomes/sampleDefinitions-supplemental.txt
@@ -58,6 +58,7 @@ namespace Test
datum.AddMetadata("awsRegion", payload.AwsRegion);
datum.AddMetadata("reason", payload.Reason);
datum.AddMetadata("reasonDesc", payload.ReasonDescription);
+ datum.AddMetadata("source", payload.Source);
datum.AddMetadata("errorCode", payload.ErrorCode);
datum.AddMetadata("causedBy", payload.CausedBy);
datum.AddMetadata("httpStatusCode", payload.HttpStatusCode);
@@ -118,6 +119,7 @@ namespace Test
datum.AddMetadata("awsRegion", payload.AwsRegion);
datum.AddMetadata("reason", payload.Reason);
datum.AddMetadata("reasonDesc", payload.ReasonDescription);
+ datum.AddMetadata("source", payload.Source);
datum.AddMetadata("errorCode", payload.ErrorCode);
datum.AddMetadata("causedBy", payload.CausedBy);
datum.AddMetadata("httpStatusCode", payload.HttpStatusCode);
@@ -178,6 +180,7 @@ namespace Test
datum.AddMetadata("awsRegion", payload.AwsRegion);
datum.AddMetadata("reason", payload.Reason);
datum.AddMetadata("reasonDesc", payload.ReasonDescription);
+ datum.AddMetadata("source", payload.Source);
datum.AddMetadata("errorCode", payload.ErrorCode);
datum.AddMetadata("causedBy", payload.CausedBy);
datum.AddMetadata("httpStatusCode", payload.HttpStatusCode);
@@ -246,6 +249,7 @@ namespace Test
datum.AddMetadata("awsRegion", payload.AwsRegion);
datum.AddMetadata("reason", payload.Reason);
datum.AddMetadata("reasonDesc", payload.ReasonDescription);
+ datum.AddMetadata("source", payload.Source);
datum.AddMetadata("errorCode", payload.ErrorCode);
datum.AddMetadata("causedBy", payload.CausedBy);
datum.AddMetadata("httpStatusCode", payload.HttpStatusCode);
@@ -314,6 +318,7 @@ namespace Test
datum.AddMetadata("awsRegion", payload.AwsRegion);
datum.AddMetadata("reason", payload.Reason);
datum.AddMetadata("reasonDesc", payload.ReasonDescription);
+ datum.AddMetadata("source", payload.Source);
datum.AddMetadata("errorCode", payload.ErrorCode);
datum.AddMetadata("causedBy", payload.CausedBy);
datum.AddMetadata("httpStatusCode", payload.HttpStatusCode);
@@ -391,6 +396,7 @@ namespace Test
datum.AddMetadata("awsRegion", payload.AwsRegion);
datum.AddMetadata("reason", payload.Reason);
datum.AddMetadata("reasonDesc", payload.ReasonDescription);
+ datum.AddMetadata("source", payload.Source);
datum.AddMetadata("errorCode", payload.ErrorCode);
datum.AddMetadata("causedBy", payload.CausedBy);
datum.AddMetadata("httpStatusCode", payload.HttpStatusCode);
@@ -451,6 +457,7 @@ namespace Test
datum.AddMetadata("awsRegion", payload.AwsRegion);
datum.AddMetadata("reason", payload.Reason);
datum.AddMetadata("reasonDesc", payload.ReasonDescription);
+ datum.AddMetadata("source", payload.Source);
datum.AddMetadata("errorCode", payload.ErrorCode);
datum.AddMetadata("causedBy", payload.CausedBy);
datum.AddMetadata("httpStatusCode", payload.HttpStatusCode);
diff --git a/telemetry/csharp/AwsToolkit.Telemetry.Events/Core/BaseTelemetryEvent.cs b/telemetry/csharp/AwsToolkit.Telemetry.Events/Core/BaseTelemetryEvent.cs
index ba109c479..71d2aa426 100644
--- a/telemetry/csharp/AwsToolkit.Telemetry.Events/Core/BaseTelemetryEvent.cs
+++ b/telemetry/csharp/AwsToolkit.Telemetry.Events/Core/BaseTelemetryEvent.cs
@@ -38,6 +38,13 @@ public abstract class BaseTelemetryEvent
///
public string ReasonDescription;
+ ///
+ /// The source of the operation. This answers 'who' caused/triggered the operation.
+ /// Example: did an Auth signout happen because of some expiration or since the user
+ /// explicitly clicked the signout button.
+ ///
+ public string Source;
+
///
/// Optional - User-friendly error codes describing a failed operation
/// This is often used in failure scenarios to provide additional details about why something failed.