content: {-# LANGUAGE DataKinds #-}
  {-# LANGUAGE DerivingStrategies #-}
  {-# LANGUAGE DuplicateRecordFields #-}
  {-# LANGUAGE ImportQualifiedPost #-}
  {-# LANGUAGE LambdaCase #-}
  {-# LANGUAGE OverloadedStrings #-}
  {-# LANGUAGE PatternSynonyms #-}
  {-# LANGUAGE RecordWildCards #-}
  {-# LANGUAGE StrictData #-}
  {-# LANGUAGE TypeFamilies #-}
  {-# LANGUAGE NoImplicitPrelude #-}
  {-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
  {-# OPTIONS_GHC -fno-warn-name-shadowing #-}
  {-# OPTIONS_GHC -fno-warn-unused-binds #-}
  {-# OPTIONS_GHC -fno-warn-unused-imports #-}
  {-# OPTIONS_GHC -fno-warn-unused-matches #-}
  
  -- |
  -- Module      : Gogol.ServiceUser.Internal.Sum
  -- Copyright   : (c) 2015-2025 Brendan Hay
  -- License     : Mozilla Public License, v. 2.0.
  -- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
  --               Toni Cebrián <toni@tonicebrian.com>
  -- Stability   : auto-generated
  -- Portability : non-portable (GHC extensions)
  module Gogol.ServiceUser.Internal.Sum
    ( -- * Xgafv
      Xgafv
        ( Xgafv_1,
          Xgafv_2,
          ..
        ),
  
      -- * Api_Syntax
      Api_Syntax
        ( Api_Syntax_SYNTAX_PROTO2,
          Api_Syntax_SYNTAX_PROTO3,
          ..
        ),
  
      -- * Enum_Syntax
      Enum_Syntax
        ( Enum_Syntax_SYNTAX_PROTO2,
          Enum_Syntax_SYNTAX_PROTO3,
          ..
        ),
  
      -- * Field_Cardinality
      Field_Cardinality
        ( Field_Cardinality_CARDINALITYUNKNOWN,
          Field_Cardinality_CARDINALITYOPTIONAL,
          Field_Cardinality_CARDINALITYREQUIRED,
          Field_Cardinality_CARDINALITYREPEATED,
          ..
        ),
  
      -- * Field_Kind
      Field_Kind
        ( Field_Kind_TYPEUNKNOWN,
          Field_Kind_TYPEDOUBLE,
          Field_Kind_TYPEFLOAT,
          Field_Kind_TYPE_INT64,
          Field_Kind_TYPE_UINT64,
          Field_Kind_TYPE_INT32,
          Field_Kind_TYPE_FIXED64,
          Field_Kind_TYPE_FIXED32,
          Field_Kind_TYPEBOOL,
          Field_Kind_TYPESTRING,
          Field_Kind_TYPEGROUP,
          Field_Kind_TYPEMESSAGE,
          Field_Kind_TYPEBYTES,
          Field_Kind_TYPE_UINT32,
          Field_Kind_TYPEENUM,
          Field_Kind_TYPE_SFIXED32,
          Field_Kind_TYPE_SFIXED64,
          Field_Kind_TYPE_SINT32,
          Field_Kind_TYPE_SINT64,
          ..
        ),
  
      -- * LabelDescriptor_ValueType
      LabelDescriptor_ValueType
        ( LabelDescriptor_ValueType_String,
          LabelDescriptor_ValueType_Bool,
          LabelDescriptor_ValueType_INT64,
          ..
        ),
  
      -- * Method_Syntax
      Method_Syntax
        ( Method_Syntax_SYNTAX_PROTO2,
          Method_Syntax_SYNTAX_PROTO3,
          ..
        ),
  
      -- * MetricDescriptor_MetricKind
      MetricDescriptor_MetricKind
        ( MetricDescriptor_MetricKind_METRICKINDUNSPECIFIED,
          MetricDescriptor_MetricKind_Gauge,
          MetricDescriptor_MetricKind_Delta,
          MetricDescriptor_MetricKind_Cumulative,
          ..
        ),
  
      -- * MetricDescriptor_ValueType
      MetricDescriptor_ValueType
        ( MetricDescriptor_ValueType_VALUETYPEUNSPECIFIED,
          MetricDescriptor_ValueType_Bool,
          MetricDescriptor_ValueType_INT64,
          MetricDescriptor_ValueType_Double,
          MetricDescriptor_ValueType_String,
          MetricDescriptor_ValueType_Distribution,
          MetricDescriptor_ValueType_Money,
          ..
        ),
  
      -- * MetricDescriptorMetadata_LaunchStage
      MetricDescriptorMetadata_LaunchStage
        ( MetricDescriptorMetadata_LaunchStage_LAUNCHSTAGEUNSPECIFIED,
          MetricDescriptorMetadata_LaunchStage_EARLYACCESS,
          MetricDescriptorMetadata_LaunchStage_Alpha,
          MetricDescriptorMetadata_LaunchStage_Beta,
          MetricDescriptorMetadata_LaunchStage_GA,
          MetricDescriptorMetadata_LaunchStage_Deprecated,
          ..
        ),
  
      -- * Step_Status
      Step_Status
        ( Step_Status_STATUSUNSPECIFIED,
          Step_Status_Done,
          Step_Status_NOTSTARTED,
          Step_Status_INPROGRESS,
          Step_Status_Failed,
          Step_Status_Cancelled,
          ..
        ),
  
      -- * Type_Syntax
      Type_Syntax
        ( Type_Syntax_SYNTAX_PROTO2,
          Type_Syntax_SYNTAX_PROTO3,
          ..
        ),
    )
  where
  
  import Gogol.Prelude qualified as Core
  
  -- | V1 error format.
  newtype Xgafv = Xgafv {fromXgafv :: Core.Text}
    deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
    deriving newtype
      ( Core.Hashable,
        Core.ToHttpApiData,
        Core.FromHttpApiData,
        Core.ToJSON,
        Core.ToJSONKey,
        Core.FromJSON,
        Core.FromJSONKey
      )
  
  -- | v1 error format
  pattern Xgafv_1 :: Xgafv
  pattern Xgafv_1 = Xgafv "1"
  
  -- | v2 error format
  pattern Xgafv_2 :: Xgafv
  pattern Xgafv_2 = Xgafv "2"
  
  {-# COMPLETE
    Xgafv_1,
    Xgafv_2,
    Xgafv
    #-}
  
  -- | The source syntax of the service.
  newtype Api_Syntax = Api_Syntax {fromApi_Syntax :: Core.Text}
    deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
    deriving newtype
      ( Core.Hashable,
        Core.ToHttpApiData,
        Core.FromHttpApiData,
        Core.ToJSON,
        Core.ToJSONKey,
        Core.FromJSON,
        Core.FromJSONKey
      )
  
  -- | Syntax @proto2@.
  pattern Api_Syntax_SYNTAX_PROTO2 :: Api_Syntax
  pattern Api_Syntax_SYNTAX_PROTO2 = Api_Syntax "SYNTAX_PROTO2"
  
  -- | Syntax @proto3@.
  pattern Api_Syntax_SYNTAX_PROTO3 :: Api_Syntax
  pattern Api_Syntax_SYNTAX_PROTO3 = Api_Syntax "SYNTAX_PROTO3"
  
  {-# COMPLETE
    Api_Syntax_SYNTAX_PROTO2,
    Api_Syntax_SYNTAX_PROTO3,
    Api_Syntax
    #-}
  
  -- | The source syntax.
  newtype Enum_Syntax = Enum_Syntax {fromEnum_Syntax :: Core.Text}
    deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
    deriving newtype
      ( Core.Hashable,
        Core.ToHttpApiData,
        Core.FromHttpApiData,
        Core.ToJSON,
        Core.ToJSONKey,
        Core.FromJSON,
        Core.FromJSONKey
      )
  
  -- | Syntax @proto2@.
  pattern Enum_Syntax_SYNTAX_PROTO2 :: Enum_Syntax
  pattern Enum_Syntax_SYNTAX_PROTO2 = Enum_Syntax "SYNTAX_PROTO2"
  
  -- | Syntax @proto3@.
  pattern Enum_Syntax_SYNTAX_PROTO3 :: Enum_Syntax
  pattern Enum_Syntax_SYNTAX_PROTO3 = Enum_Syntax "SYNTAX_PROTO3"
  
  {-# COMPLETE
    Enum_Syntax_SYNTAX_PROTO2,
    Enum_Syntax_SYNTAX_PROTO3,
    Enum_Syntax
    #-}
  
  -- | The field cardinality.
  newtype Field_Cardinality = Field_Cardinality {fromField_Cardinality :: Core.Text}
    deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
    deriving newtype
      ( Core.Hashable,
        Core.ToHttpApiData,
        Core.FromHttpApiData,
        Core.ToJSON,
        Core.ToJSONKey,
        Core.FromJSON,
        Core.FromJSONKey
      )
  
  -- | For fields with unknown cardinality.
  pattern Field_Cardinality_CARDINALITYUNKNOWN :: Field_Cardinality
  pattern Field_Cardinality_CARDINALITYUNKNOWN = Field_Cardinality "CARDINALITY_UNKNOWN"
  
  -- | For optional fields.
  pattern Field_Cardinality_CARDINALITYOPTIONAL :: Field_Cardinality
  pattern Field_Cardinality_CARDINALITYOPTIONAL = Field_Cardinality "CARDINALITY_OPTIONAL"
  
  -- | For required fields. Proto2 syntax only.
  pattern Field_Cardinality_CARDINALITYREQUIRED :: Field_Cardinality
  pattern Field_Cardinality_CARDINALITYREQUIRED = Field_Cardinality "CARDINALITY_REQUIRED"
  
  -- | For repeated fields.
  pattern Field_Cardinality_CARDINALITYREPEATED :: Field_Cardinality
  pattern Field_Cardinality_CARDINALITYREPEATED = Field_Cardinality "CARDINALITY_REPEATED"
  
  {-# COMPLETE
    Field_Cardinality_CARDINALITYUNKNOWN,
    Field_Cardinality_CARDINALITYOPTIONAL,
    Field_Cardinality_CARDINALITYREQUIRED,
    Field_Cardinality_CARDINALITYREPEATED,
    Field_Cardinality
    #-}
  
  -- | The field type.
  newtype Field_Kind = Field_Kind {fromField_Kind :: Core.Text}
    deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
    deriving newtype
      ( Core.Hashable,
        Core.ToHttpApiData,
        Core.FromHttpApiData,
        Core.ToJSON,
        Core.ToJSONKey,
        Core.FromJSON,
        Core.FromJSONKey
      )
  
  -- | Field type unknown.
  pattern Field_Kind_TYPEUNKNOWN :: Field_Kind
  pattern Field_Kind_TYPEUNKNOWN = Field_Kind "TYPE_UNKNOWN"
  
  -- | Field type double.
  pattern Field_Kind_TYPEDOUBLE :: Field_Kind
  pattern Field_Kind_TYPEDOUBLE = Field_Kind "TYPE_DOUBLE"
  
  -- | Field type float.
  pattern Field_Kind_TYPEFLOAT :: Field_Kind
  pattern Field_Kind_TYPEFLOAT = Field_Kind "TYPE_FLOAT"
  
  -- | Field type int64.
  pattern Field_Kind_TYPE_INT64 :: Field_Kind
  pattern Field_Kind_TYPE_INT64 = Field_Kind "TYPE_INT64"
  
  -- | Field type uint64.
  pattern Field_Kind_TYPE_UINT64 :: Field_Kind
  pattern Field_Kind_TYPE_UINT64 = Field_Kind "TYPE_UINT64"
  
  -- | Field type int32.
  pattern Field_Kind_TYPE_INT32 :: Field_Kind
  pattern Field_Kind_TYPE_INT32 = Field_Kind "TYPE_INT32"
  
  -- | Field type fixed64.
  pattern Field_Kind_TYPE_FIXED64 :: Field_Kind
  pattern Field_Kind_TYPE_FIXED64 = Field_Kind "TYPE_FIXED64"
  
  -- | Field type fixed32.
  pattern Field_Kind_TYPE_FIXED32 :: Field_Kind
  pattern Field_Kind_TYPE_FIXED32 = Field_Kind "TYPE_FIXED32"
  
  -- | Field type bool.
  pattern Field_Kind_TYPEBOOL :: Field_Kind
  pattern Field_Kind_TYPEBOOL = Field_Kind "TYPE_BOOL"
  
  -- | Field type string.
  pattern Field_Kind_TYPESTRING :: Field_Kind
  pattern Field_Kind_TYPESTRING = Field_Kind "TYPE_STRING"
  
  -- | Field type group. Proto2 syntax only, and deprecated.
  pattern Field_Kind_TYPEGROUP :: Field_Kind
  pattern Field_Kind_TYPEGROUP = Field_Kind "TYPE_GROUP"
  
  -- | Field type message.
  pattern Field_Kind_TYPEMESSAGE :: Field_Kind
  pattern Field_Kind_TYPEMESSAGE = Field_Kind "TYPE_MESSAGE"
  
  -- | Field type bytes.
  pattern Field_Kind_TYPEBYTES :: Field_Kind
  pattern Field_Kind_TYPEBYTES = Field_Kind "TYPE_BYTES"
  
  -- | Field type uint32.
  pattern Field_Kind_TYPE_UINT32 :: Field_Kind
  pattern Field_Kind_TYPE_UINT32 = Field_Kind "TYPE_UINT32"
  
  -- | Field type enum.
  pattern Field_Kind_TYPEENUM :: Field_Kind
  pattern Field_Kind_TYPEENUM = Field_Kind "TYPE_ENUM"
  
  -- | Field type sfixed32.
  pattern Field_Kind_TYPE_SFIXED32 :: Field_Kind
  pattern Field_Kind_TYPE_SFIXED32 = Field_Kind "TYPE_SFIXED32"
  
  -- | Field type sfixed64.
  pattern Field_Kind_TYPE_SFIXED64 :: Field_Kind
  pattern Field_Kind_TYPE_SFIXED64 = Field_Kind "TYPE_SFIXED64"
  
  -- | Field type sint32.
  pattern Field_Kind_TYPE_SINT32 :: Field_Kind
  pattern Field_Kind_TYPE_SINT32 = Field_Kind "TYPE_SINT32"
  
  -- | Field type sint64.
  pattern Field_Kind_TYPE_SINT64 :: Field_Kind
  pattern Field_Kind_TYPE_SINT64 = Field_Kind "TYPE_SINT64"
  
  {-# COMPLETE
    Field_Kind_TYPEUNKNOWN,
    Field_Kind_TYPEDOUBLE,
    Field_Kind_TYPEFLOAT,
    Field_Kind_TYPE_INT64,
    Field_Kind_TYPE_UINT64,
    Field_Kind_TYPE_INT32,
    Field_Kind_TYPE_FIXED64,
    Field_Kind_TYPE_FIXED32,
    Field_Kind_TYPEBOOL,
    Field_Kind_TYPESTRING,
    Field_Kind_TYPEGROUP,
    Field_Kind_TYPEMESSAGE,
    Field_Kind_TYPEBYTES,
    Field_Kind_TYPE_UINT32,
    Field_Kind_TYPEENUM,
    Field_Kind_TYPE_SFIXED32,
    Field_Kind_TYPE_SFIXED64,
    Field_Kind_TYPE_SINT32,
    Field_Kind_TYPE_SINT64,
    Field_Kind
    #-}
  
  -- | The type of data that can be assigned to the label.
  newtype LabelDescriptor_ValueType = LabelDescriptor_ValueType {fromLabelDescriptor_ValueType :: Core.Text}
    deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
    deriving newtype
      ( Core.Hashable,
        Core.ToHttpApiData,
        Core.FromHttpApiData,
        Core.ToJSON,
        Core.ToJSONKey,
        Core.FromJSON,
        Core.FromJSONKey
      )
  
  -- | A variable-length string. This is the default.
  pattern LabelDescriptor_ValueType_String :: LabelDescriptor_ValueType
  pattern LabelDescriptor_ValueType_String = LabelDescriptor_ValueType "STRING"
  
  -- | Boolean; true or false.
  pattern LabelDescriptor_ValueType_Bool :: LabelDescriptor_ValueType
  pattern LabelDescriptor_ValueType_Bool = LabelDescriptor_ValueType "BOOL"
  
  -- | A 64-bit signed integer.
  pattern LabelDescriptor_ValueType_INT64 :: LabelDescriptor_ValueType
  pattern LabelDescriptor_ValueType_INT64 = LabelDescriptor_ValueType "INT64"
  
  {-# COMPLETE
    LabelDescriptor_ValueType_String,
    LabelDescriptor_ValueType_Bool,
    LabelDescriptor_ValueType_INT64,
    LabelDescriptor_ValueType
    #-}
  
  -- | The source syntax of this method.
  newtype Method_Syntax = Method_Syntax {fromMethod_Syntax :: Core.Text}
    deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
    deriving newtype
      ( Core.Hashable,
        Core.ToHttpApiData,
        Core.FromHttpApiData,
        Core.ToJSON,
        Core.ToJSONKey,
        Core.FromJSON,
        Core.FromJSONKey
      )
  
  -- | Syntax @proto2@.
  pattern Method_Syntax_SYNTAX_PROTO2 :: Method_Syntax
  pattern Method_Syntax_SYNTAX_PROTO2 = Method_Syntax "SYNTAX_PROTO2"
  
  -- | Syntax @proto3@.
  pattern Method_Syntax_SYNTAX_PROTO3 :: Method_Syntax
  pattern Method_Syntax_SYNTAX_PROTO3 = Method_Syntax "SYNTAX_PROTO3"
  
  {-# COMPLETE
    Method_Syntax_SYNTAX_PROTO2,
    Method_Syntax_SYNTAX_PROTO3,
    Method_Syntax
    #-}
  
  -- | Whether the metric records instantaneous values, changes to a value, etc. Some combinations of @metric_kind@ and @value_type@ might not be supported.
  newtype MetricDescriptor_MetricKind = MetricDescriptor_MetricKind {fromMetricDescriptor_MetricKind :: Core.Text}
    deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
    deriving newtype
      ( Core.Hashable,
        Core.ToHttpApiData,
        Core.FromHttpApiData,
        Core.ToJSON,
        Core.ToJSONKey,
        Core.FromJSON,
        Core.FromJSONKey
      )
  
  -- | Do not use this default value.
  pattern MetricDescriptor_MetricKind_METRICKINDUNSPECIFIED :: MetricDescriptor_MetricKind
  pattern MetricDescriptor_MetricKind_METRICKINDUNSPECIFIED = MetricDescriptor_MetricKind "METRIC_KIND_UNSPECIFIED"
  
  -- | An instantaneous measurement of a value.
  pattern MetricDescriptor_MetricKind_Gauge :: MetricDescriptor_MetricKind
  pattern MetricDescriptor_MetricKind_Gauge = MetricDescriptor_MetricKind "GAUGE"
  
  -- | The change in a value during a time interval.
  pattern MetricDescriptor_MetricKind_Delta :: MetricDescriptor_MetricKind
  pattern MetricDescriptor_MetricKind_Delta = MetricDescriptor_MetricKind "DELTA"
  
  -- | A value accumulated over a time interval. Cumulative measurements in a time series should have the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points.
  pattern MetricDescriptor_MetricKind_Cumulative :: MetricDescriptor_MetricKind
  pattern MetricDescriptor_MetricKind_Cumulative = MetricDescriptor_MetricKind "CUMULATIVE"
  
  {-# COMPLETE
    MetricDescriptor_MetricKind_METRICKINDUNSPECIFIED,
    MetricDescriptor_MetricKind_Gauge,
    MetricDescriptor_MetricKind_Delta,
    MetricDescriptor_MetricKind_Cumulative,
    MetricDescriptor_MetricKind
    #-}
  
  -- | Whether the measurement is an integer, a floating-point number, etc. Some combinations of @metric_kind@ and @value_type@ might not be supported.
  newtype MetricDescriptor_ValueType = MetricDescriptor_ValueType {fromMetricDescriptor_ValueType :: Core.Text}
    deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
    deriving newtype
      ( Core.Hashable,
        Core.ToHttpApiData,
        Core.FromHttpApiData,
        Core.ToJSON,
        Core.ToJSONKey,
        Core.FromJSON,
        Core.FromJSONKey
      )
  
  -- | Do not use this default value.
  pattern MetricDescriptor_ValueType_VALUETYPEUNSPECIFIED :: MetricDescriptor_ValueType
  pattern MetricDescriptor_ValueType_VALUETYPEUNSPECIFIED = MetricDescriptor_ValueType "VALUE_TYPE_UNSPECIFIED"
  
  -- | The value is a boolean. This value type can be used only if the metric kind is @GAUGE@.
  pattern MetricDescriptor_ValueType_Bool :: MetricDescriptor_ValueType
  pattern MetricDescriptor_ValueType_Bool = MetricDescriptor_ValueType "BOOL"
  
  -- | The value is a signed 64-bit integer.
  pattern MetricDescriptor_ValueType_INT64 :: MetricDescriptor_ValueType
  pattern MetricDescriptor_ValueType_INT64 = MetricDescriptor_ValueType "INT64"
  
  -- | The value is a double precision floating point number.
  pattern MetricDescriptor_ValueType_Double :: MetricDescriptor_ValueType
  pattern MetricDescriptor_ValueType_Double = MetricDescriptor_ValueType "DOUBLE"
  
  -- | The value is a text string. This value type can be used only if the metric kind is @GAUGE@.
  pattern MetricDescriptor_ValueType_String :: MetricDescriptor_ValueType
  pattern MetricDescriptor_ValueType_String = MetricDescriptor_ValueType "STRING"
  
  -- | The value is a @Distribution@.
  pattern MetricDescriptor_ValueType_Distribution :: MetricDescriptor_ValueType
  pattern MetricDescriptor_ValueType_Distribution = MetricDescriptor_ValueType "DISTRIBUTION"
  
  -- | The value is money.
  pattern MetricDescriptor_ValueType_Money :: MetricDescriptor_ValueType
  pattern MetricDescriptor_ValueType_Money = MetricDescriptor_ValueType "MONEY"
  
  {-# COMPLETE
    MetricDescriptor_ValueType_VALUETYPEUNSPECIFIED,
    MetricDescriptor_ValueType_Bool,
    MetricDescriptor_ValueType_INT64,
    MetricDescriptor_ValueType_Double,
    MetricDescriptor_ValueType_String,
    MetricDescriptor_ValueType_Distribution,
    MetricDescriptor_ValueType_Money,
    MetricDescriptor_ValueType
    #-}
  
  -- | The launch stage of the metric definition.
  newtype MetricDescriptorMetadata_LaunchStage = MetricDescriptorMetadata_LaunchStage {fromMetricDescriptorMetadata_LaunchStage :: Core.Text}
    deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
    deriving newtype
      ( Core.Hashable,
        Core.ToHttpApiData,
        Core.FromHttpApiData,
        Core.ToJSON,
        Core.ToJSONKey,
        Core.FromJSON,
        Core.FromJSONKey
      )
  
  -- | Do not use this default value.
  pattern MetricDescriptorMetadata_LaunchStage_LAUNCHSTAGEUNSPECIFIED :: MetricDescriptorMetadata_LaunchStage
  pattern MetricDescriptorMetadata_LaunchStage_LAUNCHSTAGEUNSPECIFIED = MetricDescriptorMetadata_LaunchStage "LAUNCH_STAGE_UNSPECIFIED"
  
  -- | Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.
  pattern MetricDescriptorMetadata_LaunchStage_EARLYACCESS :: MetricDescriptorMetadata_LaunchStage
  pattern MetricDescriptorMetadata_LaunchStage_EARLYACCESS = MetricDescriptorMetadata_LaunchStage "EARLY_ACCESS"
  
  -- | Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects whitelisted. Alpha releases don’t have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.
  pattern MetricDescriptorMetadata_LaunchStage_Alpha :: MetricDescriptorMetadata_LaunchStage
  pattern MetricDescriptorMetadata_LaunchStage_Alpha = MetricDescriptorMetadata_LaunchStage "ALPHA"
  
  -- | Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.
  pattern MetricDescriptorMetadata_LaunchStage_Beta :: MetricDescriptorMetadata_LaunchStage
  pattern MetricDescriptorMetadata_LaunchStage_Beta = MetricDescriptorMetadata_LaunchStage "BETA"
  
  -- | GA features are open to all developers and are considered stable and fully qualified for production use.
  pattern MetricDescriptorMetadata_LaunchStage_GA :: MetricDescriptorMetadata_LaunchStage
  pattern MetricDescriptorMetadata_LaunchStage_GA = MetricDescriptorMetadata_LaunchStage "GA"
  
  -- | Deprecated features are scheduled to be shut down and removed. For more information, see the “Deprecation Policy” section of our <https://cloud.google.com/terms/ Terms of Service> and the <https://cloud.google.com/terms/deprecation Google Cloud Platform Subject to the Deprecation Policy> documentation.
  pattern MetricDescriptorMetadata_LaunchStage_Deprecated :: MetricDescriptorMetadata_LaunchStage
  pattern MetricDescriptorMetadata_LaunchStage_Deprecated = MetricDescriptorMetadata_LaunchStage "DEPRECATED"
  
  {-# COMPLETE
    MetricDescriptorMetadata_LaunchStage_LAUNCHSTAGEUNSPECIFIED,
    MetricDescriptorMetadata_LaunchStage_EARLYACCESS,
    MetricDescriptorMetadata_LaunchStage_Alpha,
    MetricDescriptorMetadata_LaunchStage_Beta,
    MetricDescriptorMetadata_LaunchStage_GA,
    MetricDescriptorMetadata_LaunchStage_Deprecated,
    MetricDescriptorMetadata_LaunchStage
    #-}
  
  -- | The status code.
  newtype Step_Status = Step_Status {fromStep_Status :: Core.Text}
    deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
    deriving newtype
      ( Core.Hashable,
        Core.ToHttpApiData,
        Core.FromHttpApiData,
        Core.ToJSON,
        Core.ToJSONKey,
        Core.FromJSON,
        Core.FromJSONKey
      )
  
  -- | Unspecifed code.
  pattern Step_Status_STATUSUNSPECIFIED :: Step_Status
  pattern Step_Status_STATUSUNSPECIFIED = Step_Status "STATUS_UNSPECIFIED"
  
  -- | The operation or step has completed without errors.
  pattern Step_Status_Done :: Step_Status
  pattern Step_Status_Done = Step_Status "DONE"
  
  -- | The operation or step has not started yet.
  pattern Step_Status_NOTSTARTED :: Step_Status
  pattern Step_Status_NOTSTARTED = Step_Status "NOT_STARTED"
  
  -- | The operation or step is in progress.
  pattern Step_Status_INPROGRESS :: Step_Status
  pattern Step_Status_INPROGRESS = Step_Status "IN_PROGRESS"
  
  -- | The operation or step has completed with errors. If the operation is rollbackable, the rollback completed with errors too.
  pattern Step_Status_Failed :: Step_Status
  pattern Step_Status_Failed = Step_Status "FAILED"
  
  -- | The operation or step has completed with cancellation.
  pattern Step_Status_Cancelled :: Step_Status
  pattern Step_Status_Cancelled = Step_Status "CANCELLED"
  
  {-# COMPLETE
    Step_Status_STATUSUNSPECIFIED,
    Step_Status_Done,
    Step_Status_NOTSTARTED,
    Step_Status_INPROGRESS,
    Step_Status_Failed,
    Step_Status_Cancelled,
    Step_Status
    #-}
  
  -- | The source syntax.
  newtype Type_Syntax = Type_Syntax {fromType_Syntax :: Core.Text}
    deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
    deriving newtype
      ( Core.Hashable,
        Core.ToHttpApiData,
        Core.FromHttpApiData,
        Core.ToJSON,
        Core.ToJSONKey,
        Core.FromJSON,
        Core.FromJSONKey
      )
  
  -- | Syntax @proto2@.
  pattern Type_Syntax_SYNTAX_PROTO2 :: Type_Syntax
  pattern Type_Syntax_SYNTAX_PROTO2 = Type_Syntax "SYNTAX_PROTO2"
  
  -- | Syntax @proto3@.
  pattern Type_Syntax_SYNTAX_PROTO3 :: Type_Syntax
  pattern Type_Syntax_SYNTAX_PROTO3 = Type_Syntax "SYNTAX_PROTO3"
  
  {-# COMPLETE
    Type_Syntax_SYNTAX_PROTO2,
    Type_Syntax_SYNTAX_PROTO3,
    Type_Syntax
    #-}
  