/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ /* * Do not modify this file. This file is generated from the rum-2018-05-10.normal.json service model. */ using System; using System.Collections.Generic; using System.Xml.Serialization; using System.Text; using System.IO; using System.Net; using Amazon.Runtime; using Amazon.Runtime.Internal; namespace Amazon.CloudWatchRUM.Model { /// /// Use this structure to define one extended metric or custom metric that RUM will send /// to CloudWatch or CloudWatch Evidently. For more information, see /// Additional metrics that you can send to CloudWatch and CloudWatch Evidently. /// /// /// /// This structure is validated differently for extended metrics and custom metrics. For /// extended metrics that are sent to the AWS/RUM namespace, the following /// validations apply: /// /// /// /// For custom metrics, the following validation rules apply: /// /// /// /// Valid key values for first-level keys in the ValueKey, EventPattern, /// and DimensionKeys fields: /// /// /// public partial class MetricDefinitionRequest { private Dictionary _dimensionKeys = new Dictionary(); private string _eventPattern; private string _name; private string _awsNamespace; private string _unitLabel; private string _valueKey; /// /// Gets and sets the property DimensionKeys. /// /// Use this field only if you are sending the metric to CloudWatch. /// /// /// /// This field is a map of field paths to dimension names. It defines the dimensions to /// associate with this metric in CloudWatch. For extended metrics, valid values for the /// entries in this field are the following: /// ///
  • /// /// "metadata.pageId": "PageId" /// ///
  • /// /// "metadata.browserName": "BrowserName" /// ///
  • /// /// "metadata.deviceType": "DeviceType" /// ///
  • /// /// "metadata.osName": "OSName" /// ///
  • /// /// "metadata.countryCode": "CountryCode" /// ///
  • /// /// "event_details.fileType": "FileType" /// ///
/// /// For both extended metrics and custom metrics, all dimensions listed in this field /// must also be included in EventPattern. /// ///
[AWSProperty(Min=0, Max=29)] public Dictionary DimensionKeys { get { return this._dimensionKeys; } set { this._dimensionKeys = value; } } // Check to see if DimensionKeys property is set internal bool IsSetDimensionKeys() { return this._dimensionKeys != null && this._dimensionKeys.Count > 0; } /// /// Gets and sets the property EventPattern. /// /// The pattern that defines the metric, specified as a JSON object. RUM checks events /// that happen in a user's session against the pattern, and events that match the pattern /// are sent to the metric destination. /// /// /// /// When you define extended metrics, the metric definition is not valid if EventPattern /// is omitted. /// /// /// /// Example event patterns: /// ///
  • /// /// '{ "event_type": ["com.amazon.rum.js_error_event"], "metadata": { "browserName": /// [ "Chrome", "Safari" ], } }' /// ///
  • /// /// '{ "event_type": ["com.amazon.rum.performance_navigation_event"], "metadata": /// { "browserName": [ "Chrome", "Firefox" ] }, "event_details": { "duration": [{ "numeric": /// [ "<", 2000 ] }] } }' /// ///
  • /// /// '{ "event_type": ["com.amazon.rum.performance_navigation_event"], "metadata": /// { "browserName": [ "Chrome", "Safari" ], "countryCode": [ "US" ] }, "event_details": /// { "duration": [{ "numeric": [ ">=", 2000, "<", 8000 ] }] } }' /// ///
/// /// If the metrics destination' is CloudWatch and the event also matches /// a value in DimensionKeys, then the metric is published with the specified /// dimensions. /// ///
[AWSProperty(Min=0, Max=4000)] public string EventPattern { get { return this._eventPattern; } set { this._eventPattern = value; } } // Check to see if EventPattern property is set internal bool IsSetEventPattern() { return this._eventPattern != null; } /// /// Gets and sets the property Name. /// /// The name for the metric that is defined in this structure. For custom metrics, you /// can specify any name that you like. For extended metrics, valid values are the following: /// ///
  • /// /// PerformanceNavigationDuration /// ///
  • /// /// PerformanceResourceDuration /// ///
  • /// /// NavigationSatisfiedTransaction /// ///
  • /// /// NavigationToleratedTransaction /// ///
  • /// /// NavigationFrustratedTransaction /// ///
  • /// /// WebVitalsCumulativeLayoutShift /// ///
  • /// /// WebVitalsFirstInputDelay /// ///
  • /// /// WebVitalsLargestContentfulPaint /// ///
  • /// /// JsErrorCount /// ///
  • /// /// HttpErrorCount /// ///
  • /// /// SessionCount /// ///
///
[AWSProperty(Required=true, Min=1, Max=255)] public string Name { get { return this._name; } set { this._name = value; } } // Check to see if Name property is set internal bool IsSetName() { return this._name != null; } /// /// Gets and sets the property Namespace. /// /// If this structure is for a custom metric instead of an extended metrics, use this /// parameter to define the metric namespace for that custom metric. Do not specify this /// parameter if this structure is for an extended metric. /// /// /// /// You cannot use any string that starts with AWS/ for your namespace. /// /// [AWSProperty(Min=1, Max=237)] public string Namespace { get { return this._awsNamespace; } set { this._awsNamespace = value; } } // Check to see if Namespace property is set internal bool IsSetNamespace() { return this._awsNamespace != null; } /// /// Gets and sets the property UnitLabel. /// /// The CloudWatch metric unit to use for this metric. If you omit this field, the metric /// is recorded with no unit. /// /// [AWSProperty(Min=1, Max=256)] public string UnitLabel { get { return this._unitLabel; } set { this._unitLabel = value; } } // Check to see if UnitLabel property is set internal bool IsSetUnitLabel() { return this._unitLabel != null; } /// /// Gets and sets the property ValueKey. /// /// The field within the event object that the metric value is sourced from. /// /// /// /// If you omit this field, a hardcoded value of 1 is pushed as the metric value. This /// is useful if you just want to count the number of events that the filter catches. /// /// /// /// /// If this metric is sent to CloudWatch Evidently, this field will be passed to Evidently /// raw and Evidently will handle data extraction from the event. /// /// [AWSProperty(Min=1, Max=280)] public string ValueKey { get { return this._valueKey; } set { this._valueKey = value; } } // Check to see if ValueKey property is set internal bool IsSetValueKey() { return this._valueKey != null; } } }