public sealed class MetricDescriptor.Types.MetricDescriptorMetadata : IMessage<MetricDescriptor.Types.MetricDescriptorMetadata>, IEquatable<MetricDescriptor.Types.MetricDescriptorMetadata>, IDeepCloneable<MetricDescriptor.Types.MetricDescriptorMetadata>, IBufferMessage, IMessage
Additional annotations that can be used to guide the usage of a metric.
The delay of data points caused by ingestion. Data points older than this
age are guaranteed to be ingested and available to be read, excluding
data loss due to errors.
The sampling period of metric data points. For metrics which are written
periodically, consecutive data points are stored at this time interval,
excluding data loss due to errors. Metrics with a higher granularity have
a smaller sampling period.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-28 UTC."],[[["\u003cp\u003eThe \u003ccode\u003eMetricDescriptor.Types.MetricDescriptorMetadata\u003c/code\u003e class provides additional annotations for guiding the usage of a metric, and it implements interfaces such as \u003ccode\u003eIMessage\u003c/code\u003e, \u003ccode\u003eIEquatable\u003c/code\u003e, \u003ccode\u003eIDeepCloneable\u003c/code\u003e, and \u003ccode\u003eIBufferMessage\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eThis class includes properties like \u003ccode\u003eIngestDelay\u003c/code\u003e and \u003ccode\u003eSamplePeriod\u003c/code\u003e, both of which are of type \u003ccode\u003eDuration\u003c/code\u003e, representing the delay and the sampling period of metric data points, respectively.\u003c/p\u003e\n"],["\u003cp\u003eIt contains methods such as \u003ccode\u003eClone()\u003c/code\u003e for creating a deep clone of the object, \u003ccode\u003eEquals()\u003c/code\u003e for equality comparison, \u003ccode\u003eMergeFrom()\u003c/code\u003e for merging data, and \u003ccode\u003eCalculateSize()\u003c/code\u003e to determine the size of the message in Protocol Buffer wire format.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eLaunchStage\u003c/code\u003e property is deprecated and developers should use \u003ccode\u003eMetricDescriptor.launch_stage\u003c/code\u003e instead.\u003c/p\u003e\n"],["\u003cp\u003eThe latest version of this documentation is 2.15.0, with previous versions 2.10.0 and 2.2.0 also available.\u003c/p\u003e\n"]]],[],null,["# Class MetricDescriptor.Types.MetricDescriptorMetadata (2.17.0)\n\nVersion latestkeyboard_arrow_down\n\n- [2.17.0 (latest)](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api.MetricDescriptor.Types.MetricDescriptorMetadata)\n- [2.15.0](/dotnet/docs/reference/Google.Api.CommonProtos/2.15.0/Google.Api.MetricDescriptor.Types.MetricDescriptorMetadata)\n- [2.10.0](/dotnet/docs/reference/Google.Api.CommonProtos/2.10.0/Google.Api.MetricDescriptor.Types.MetricDescriptorMetadata)\n- [2.2.0](/dotnet/docs/reference/Google.Api.CommonProtos/2.2.0/Google.Api.MetricDescriptor.Types.MetricDescriptorMetadata) \n\n public sealed class MetricDescriptor.Types.MetricDescriptorMetadata : IMessage\u003cMetricDescriptor.Types.MetricDescriptorMetadata\u003e, IEquatable\u003cMetricDescriptor.Types.MetricDescriptorMetadata\u003e, IDeepCloneable\u003cMetricDescriptor.Types.MetricDescriptorMetadata\u003e, IBufferMessage, IMessage\n\nAdditional annotations that can be used to guide the usage of a metric. \n\nInheritance\n-----------\n\n[object](https://learn.microsoft.com/dotnet/api/system.object) \\\u003e MetricDescriptor.Types.MetricDescriptorMetadata \n\nImplements\n----------\n\n[IMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IMessage-1.html)[MetricDescriptor](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api.MetricDescriptor)[Types](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api.MetricDescriptor.Types)[MetricDescriptorMetadata](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api.MetricDescriptor.Types.MetricDescriptorMetadata), [IEquatable](https://learn.microsoft.com/dotnet/api/system.iequatable-1)[MetricDescriptor](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api.MetricDescriptor)[Types](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api.MetricDescriptor.Types)[MetricDescriptorMetadata](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api.MetricDescriptor.Types.MetricDescriptorMetadata), [IDeepCloneable](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IDeepCloneable-1.html)[MetricDescriptor](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api.MetricDescriptor)[Types](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api.MetricDescriptor.Types)[MetricDescriptorMetadata](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api.MetricDescriptor.Types.MetricDescriptorMetadata), [IBufferMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IBufferMessage.html), [IMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IMessage.html) \n\nInherited Members\n-----------------\n\n[object.Equals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)) \n[object.GetType()](https://learn.microsoft.com/dotnet/api/system.object.gettype) \n[object.ReferenceEquals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.referenceequals)\n\nNamespace\n---------\n\n[Google.Api](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api)\n\nAssembly\n--------\n\nGoogle.Api.CommonProtos.dll\n\nConstructors\n------------\n\n### MetricDescriptorMetadata()\n\n public MetricDescriptorMetadata()\n\n### MetricDescriptorMetadata(MetricDescriptorMetadata)\n\n public MetricDescriptorMetadata(MetricDescriptor.Types.MetricDescriptorMetadata other)\n\nFields\n------\n\n### IngestDelayFieldNumber\n\n public const int IngestDelayFieldNumber = 3\n\nField number for the \"ingest_delay\" field.\n\n### LaunchStageFieldNumber\n\n public const int LaunchStageFieldNumber = 1\n\nField number for the \"launch_stage\" field.\n\n### SamplePeriodFieldNumber\n\n public const int SamplePeriodFieldNumber = 2\n\nField number for the \"sample_period\" field.\n\n### TimeSeriesResourceHierarchyLevelFieldNumber\n\n public const int TimeSeriesResourceHierarchyLevelFieldNumber = 4\n\nField number for the \"time_series_resource_hierarchy_level\" field.\n\nProperties\n----------\n\n### Descriptor\n\n public static MessageDescriptor Descriptor { get; }\n\n### IngestDelay\n\n public Duration IngestDelay { get; set; }\n\nThe delay of data points caused by ingestion. Data points older than this\nage are guaranteed to be ingested and available to be read, excluding\ndata loss due to errors.\n\n### LaunchStage\n\n [Obsolete]\n public LaunchStage LaunchStage { get; set; }\n\nDeprecated. Must use the\n\\[MetricDescriptor.launch_stage\\]\\[google.api.MetricDescriptor.launch_stage\\]\ninstead.\n\n### Parser\n\n public static MessageParser\u003cMetricDescriptor.Types.MetricDescriptorMetadata\u003e Parser { get; }\n\n### SamplePeriod\n\n public Duration SamplePeriod { get; set; }\n\nThe sampling period of metric data points. For metrics which are written\nperiodically, consecutive data points are stored at this time interval,\nexcluding data loss due to errors. Metrics with a higher granularity have\na smaller sampling period.\n\n### TimeSeriesResourceHierarchyLevel\n\n public RepeatedField\u003cMetricDescriptor.Types.MetricDescriptorMetadata.Types.TimeSeriesResourceHierarchyLevel\u003e TimeSeriesResourceHierarchyLevel { get; }\n\nThe scope of the timeseries data of the metric.\n\nMethods\n-------\n\n### CalculateSize()\n\n public int CalculateSize()\n\n### Clone()\n\n public MetricDescriptor.Types.MetricDescriptorMetadata Clone()\n\n### Equals(MetricDescriptorMetadata)\n\n public bool Equals(MetricDescriptor.Types.MetricDescriptorMetadata other)\n\n### Equals(object)\n\n public override bool Equals(object other)\n\n**Overrides** \n[object.Equals(object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object))\n\n### GetHashCode()\n\n public override int GetHashCode()\n\n**Overrides** \n[object.GetHashCode()](https://learn.microsoft.com/dotnet/api/system.object.gethashcode)\n\n### MergeFrom(MetricDescriptorMetadata)\n\n public void MergeFrom(MetricDescriptor.Types.MetricDescriptorMetadata other)\n\n### MergeFrom(CodedInputStream)\n\n public void MergeFrom(CodedInputStream input)\n\n### ToString()\n\n public override string ToString()\n\n**Overrides** \n[object.ToString()](https://learn.microsoft.com/dotnet/api/system.object.tostring)\n\n### WriteTo(CodedOutputStream)\n\n public void WriteTo(CodedOutputStream output)"]]