text: // NOTE: This file was generated by the ServiceGenerator.
  
  // ----------------------------------------------------------------------------
  // API:
  //   Service Consumer Management API (serviceconsumermanagement/v1)
  // Description:
  //   Manages the service consumers of a Service Infrastructure service.
  // Documentation:
  //   https://cloud.google.com/service-consumer-management/docs/overview
  
  #if SWIFT_PACKAGE || GTLR_USE_MODULAR_IMPORT
    @import GoogleAPIClientForRESTCore;
  #elif GTLR_BUILT_AS_FRAMEWORK
    #import "GTLR/GTLRObject.h"
  #else
    #import "GTLRObject.h"
  #endif
  
  #if GTLR_RUNTIME_VERSION != 3000
  #error This file was generated by a different version of ServiceGenerator which is incompatible with this GTLR library source.
  #endif
  
  @class GTLRServiceConsumerManagement_Api;
  @class GTLRServiceConsumerManagement_Authentication;
  @class GTLRServiceConsumerManagement_AuthenticationRule;
  @class GTLRServiceConsumerManagement_AuthProvider;
  @class GTLRServiceConsumerManagement_AuthRequirement;
  @class GTLRServiceConsumerManagement_Backend;
  @class GTLRServiceConsumerManagement_BackendRule;
  @class GTLRServiceConsumerManagement_Billing;
  @class GTLRServiceConsumerManagement_BillingConfig;
  @class GTLRServiceConsumerManagement_BillingDestination;
  @class GTLRServiceConsumerManagement_Context;
  @class GTLRServiceConsumerManagement_ContextRule;
  @class GTLRServiceConsumerManagement_Control;
  @class GTLRServiceConsumerManagement_CustomError;
  @class GTLRServiceConsumerManagement_CustomErrorRule;
  @class GTLRServiceConsumerManagement_CustomHttpPattern;
  @class GTLRServiceConsumerManagement_Documentation;
  @class GTLRServiceConsumerManagement_DocumentationRule;
  @class GTLRServiceConsumerManagement_Endpoint;
  @class GTLRServiceConsumerManagement_Enum;
  @class GTLRServiceConsumerManagement_EnumValue;
  @class GTLRServiceConsumerManagement_Field;
  @class GTLRServiceConsumerManagement_Http;
  @class GTLRServiceConsumerManagement_HttpRule;
  @class GTLRServiceConsumerManagement_JwtLocation;
  @class GTLRServiceConsumerManagement_LabelDescriptor;
  @class GTLRServiceConsumerManagement_LogDescriptor;
  @class GTLRServiceConsumerManagement_Logging;
  @class GTLRServiceConsumerManagement_LoggingDestination;
  @class GTLRServiceConsumerManagement_Method;
  @class GTLRServiceConsumerManagement_MetricDescriptor;
  @class GTLRServiceConsumerManagement_MetricDescriptorMetadata;
  @class GTLRServiceConsumerManagement_MetricRule;
  @class GTLRServiceConsumerManagement_MetricRule_MetricCosts;
  @class GTLRServiceConsumerManagement_Mixin;
  @class GTLRServiceConsumerManagement_MonitoredResourceDescriptor;
  @class GTLRServiceConsumerManagement_Monitoring;
  @class GTLRServiceConsumerManagement_MonitoringDestination;
  @class GTLRServiceConsumerManagement_OAuthRequirements;
  @class GTLRServiceConsumerManagement_Operation;
  @class GTLRServiceConsumerManagement_Operation_Metadata;
  @class GTLRServiceConsumerManagement_Operation_Response;
  @class GTLRServiceConsumerManagement_Option;
  @class GTLRServiceConsumerManagement_Option_Value;
  @class GTLRServiceConsumerManagement_Page;
  @class GTLRServiceConsumerManagement_PolicyBinding;
  @class GTLRServiceConsumerManagement_Quota;
  @class GTLRServiceConsumerManagement_QuotaLimit;
  @class GTLRServiceConsumerManagement_QuotaLimit_Values;
  @class GTLRServiceConsumerManagement_ServiceAccountConfig;
  @class GTLRServiceConsumerManagement_SourceContext;
  @class GTLRServiceConsumerManagement_SourceInfo;
  @class GTLRServiceConsumerManagement_SourceInfo_SourceFiles_Item;
  @class GTLRServiceConsumerManagement_Status;
  @class GTLRServiceConsumerManagement_Status_Details_Item;
  @class GTLRServiceConsumerManagement_SystemParameter;
  @class GTLRServiceConsumerManagement_SystemParameterRule;
  @class GTLRServiceConsumerManagement_SystemParameters;
  @class GTLRServiceConsumerManagement_TenancyUnit;
  @class GTLRServiceConsumerManagement_TenantProjectConfig;
  @class GTLRServiceConsumerManagement_TenantProjectConfig_Labels;
  @class GTLRServiceConsumerManagement_TenantProjectPolicy;
  @class GTLRServiceConsumerManagement_TenantResource;
  @class GTLRServiceConsumerManagement_Type;
  @class GTLRServiceConsumerManagement_Usage;
  @class GTLRServiceConsumerManagement_UsageRule;
  @class GTLRServiceConsumerManagement_V1Beta1ProducerQuotaPolicy;
  @class GTLRServiceConsumerManagement_V1Beta1ProducerQuotaPolicy_Dimensions;
  @class GTLRServiceConsumerManagement_V1Beta1QuotaOverride;
  @class GTLRServiceConsumerManagement_V1Beta1QuotaOverride_Dimensions;
  @class GTLRServiceConsumerManagement_V1Beta1ServiceIdentity;
  @class GTLRServiceConsumerManagement_V1DefaultIdentity;
  @class GTLRServiceConsumerManagement_V1ServiceAccount;
  
  // Generated comments include content from the discovery document; avoid them
  // causing warnings since clang's checks are some what arbitrary.
  #pragma clang diagnostic push
  #pragma clang diagnostic ignored "-Wdocumentation"
  
  NS_ASSUME_NONNULL_BEGIN
  
  // ----------------------------------------------------------------------------
  // Constants - For some of the classes' properties below.
  
  // ----------------------------------------------------------------------------
  // GTLRServiceConsumerManagement_Api.syntax
  
  /**
   *  Syntax `proto2`.
   *
   *  Value: "SYNTAX_PROTO2"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_Api_Syntax_SyntaxProto2;
  /**
   *  Syntax `proto3`.
   *
   *  Value: "SYNTAX_PROTO3"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_Api_Syntax_SyntaxProto3;
  
  // ----------------------------------------------------------------------------
  // GTLRServiceConsumerManagement_BackendRule.pathTranslation
  
  /**
   *  The request path will be appended to the backend address. # Examples Given
   *  the following operation config: Method path: /api/company/{cid}/user/{uid}
   *  Backend address: https://example.appspot.com Requests to the following
   *  request paths will call the backend at the translated path: Request path:
   *  /api/company/widgetworks/user/johndoe Translated:
   *  https://example.appspot.com/api/company/widgetworks/user/johndoe Request
   *  path: /api/company/widgetworks/user/johndoe?timezone=EST Translated:
   *  https://example.appspot.com/api/company/widgetworks/user/johndoe?timezone=EST
   *
   *  Value: "APPEND_PATH_TO_ADDRESS"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_BackendRule_PathTranslation_AppendPathToAddress;
  /**
   *  Use the backend address as-is, with no modification to the path. If the URL
   *  pattern contains variables, the variable names and values will be appended
   *  to the query string. If a query string parameter and a URL pattern variable
   *  have the same name, this may result in duplicate keys in the query string. #
   *  Examples Given the following operation config: Method path:
   *  /api/company/{cid}/user/{uid} Backend address:
   *  https://example.cloudfunctions.net/getUser Requests to the following request
   *  paths will call the backend at the translated path: Request path:
   *  /api/company/widgetworks/user/johndoe Translated:
   *  https://example.cloudfunctions.net/getUser?cid=widgetworks&uid=johndoe
   *  Request path: /api/company/widgetworks/user/johndoe?timezone=EST Translated:
   *  https://example.cloudfunctions.net/getUser?timezone=EST&cid=widgetworks&uid=johndoe
   *
   *  Value: "CONSTANT_ADDRESS"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_BackendRule_PathTranslation_ConstantAddress;
  /** Value: "PATH_TRANSLATION_UNSPECIFIED" */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_BackendRule_PathTranslation_PathTranslationUnspecified;
  
  // ----------------------------------------------------------------------------
  // GTLRServiceConsumerManagement_Enum.syntax
  
  /**
   *  Syntax `proto2`.
   *
   *  Value: "SYNTAX_PROTO2"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_Enum_Syntax_SyntaxProto2;
  /**
   *  Syntax `proto3`.
   *
   *  Value: "SYNTAX_PROTO3"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_Enum_Syntax_SyntaxProto3;
  
  // ----------------------------------------------------------------------------
  // GTLRServiceConsumerManagement_Field.cardinality
  
  /**
   *  For optional fields.
   *
   *  Value: "CARDINALITY_OPTIONAL"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_Field_Cardinality_CardinalityOptional;
  /**
   *  For repeated fields.
   *
   *  Value: "CARDINALITY_REPEATED"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_Field_Cardinality_CardinalityRepeated;
  /**
   *  For required fields. Proto2 syntax only.
   *
   *  Value: "CARDINALITY_REQUIRED"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_Field_Cardinality_CardinalityRequired;
  /**
   *  For fields with unknown cardinality.
   *
   *  Value: "CARDINALITY_UNKNOWN"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_Field_Cardinality_CardinalityUnknown;
  
  // ----------------------------------------------------------------------------
  // GTLRServiceConsumerManagement_Field.kind
  
  /**
   *  Field type bool.
   *
   *  Value: "TYPE_BOOL"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_Field_Kind_TypeBool;
  /**
   *  Field type bytes.
   *
   *  Value: "TYPE_BYTES"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_Field_Kind_TypeBytes;
  /**
   *  Field type double.
   *
   *  Value: "TYPE_DOUBLE"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_Field_Kind_TypeDouble;
  /**
   *  Field type enum.
   *
   *  Value: "TYPE_ENUM"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_Field_Kind_TypeEnum;
  /**
   *  Field type fixed32.
   *
   *  Value: "TYPE_FIXED32"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_Field_Kind_TypeFixed32;
  /**
   *  Field type fixed64.
   *
   *  Value: "TYPE_FIXED64"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_Field_Kind_TypeFixed64;
  /**
   *  Field type float.
   *
   *  Value: "TYPE_FLOAT"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_Field_Kind_TypeFloat;
  /**
   *  Field type group. Proto2 syntax only, and deprecated.
   *
   *  Value: "TYPE_GROUP"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_Field_Kind_TypeGroup;
  /**
   *  Field type int32.
   *
   *  Value: "TYPE_INT32"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_Field_Kind_TypeInt32;
  /**
   *  Field type int64.
   *
   *  Value: "TYPE_INT64"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_Field_Kind_TypeInt64;
  /**
   *  Field type message.
   *
   *  Value: "TYPE_MESSAGE"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_Field_Kind_TypeMessage;
  /**
   *  Field type sfixed32.
   *
   *  Value: "TYPE_SFIXED32"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_Field_Kind_TypeSfixed32;
  /**
   *  Field type sfixed64.
   *
   *  Value: "TYPE_SFIXED64"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_Field_Kind_TypeSfixed64;
  /**
   *  Field type sint32.
   *
   *  Value: "TYPE_SINT32"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_Field_Kind_TypeSint32;
  /**
   *  Field type sint64.
   *
   *  Value: "TYPE_SINT64"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_Field_Kind_TypeSint64;
  /**
   *  Field type string.
   *
   *  Value: "TYPE_STRING"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_Field_Kind_TypeString;
  /**
   *  Field type uint32.
   *
   *  Value: "TYPE_UINT32"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_Field_Kind_TypeUint32;
  /**
   *  Field type uint64.
   *
   *  Value: "TYPE_UINT64"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_Field_Kind_TypeUint64;
  /**
   *  Field type unknown.
   *
   *  Value: "TYPE_UNKNOWN"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_Field_Kind_TypeUnknown;
  
  // ----------------------------------------------------------------------------
  // GTLRServiceConsumerManagement_LabelDescriptor.valueType
  
  /**
   *  Boolean; true or false.
   *
   *  Value: "BOOL"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_LabelDescriptor_ValueType_Bool;
  /**
   *  A 64-bit signed integer.
   *
   *  Value: "INT64"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_LabelDescriptor_ValueType_Int64;
  /**
   *  A variable-length string. This is the default.
   *
   *  Value: "STRING"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_LabelDescriptor_ValueType_String;
  
  // ----------------------------------------------------------------------------
  // GTLRServiceConsumerManagement_Method.syntax
  
  /**
   *  Syntax `proto2`.
   *
   *  Value: "SYNTAX_PROTO2"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_Method_Syntax_SyntaxProto2;
  /**
   *  Syntax `proto3`.
   *
   *  Value: "SYNTAX_PROTO3"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_Method_Syntax_SyntaxProto3;
  
  // ----------------------------------------------------------------------------
  // GTLRServiceConsumerManagement_MetricDescriptor.launchStage
  
  /**
   *  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
   *  allowlisted. 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.
   *
   *  Value: "ALPHA"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MetricDescriptor_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.
   *
   *  Value: "BETA"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MetricDescriptor_LaunchStage_Beta;
  /**
   *  Deprecated features are scheduled to be shut down and removed. For more
   *  information, see the “Deprecation Policy” section of our [Terms of
   *  Service](https://cloud.google.com/terms/) and the [Google Cloud Platform
   *  Subject to the Deprecation
   *  Policy](https://cloud.google.com/terms/deprecation) documentation.
   *
   *  Value: "DEPRECATED"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MetricDescriptor_LaunchStage_Deprecated;
  /**
   *  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.
   *
   *  Value: "EARLY_ACCESS"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MetricDescriptor_LaunchStage_EarlyAccess;
  /**
   *  GA features are open to all developers and are considered stable and fully
   *  qualified for production use.
   *
   *  Value: "GA"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MetricDescriptor_LaunchStage_Ga;
  /**
   *  Do not use this default value.
   *
   *  Value: "LAUNCH_STAGE_UNSPECIFIED"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MetricDescriptor_LaunchStage_LaunchStageUnspecified;
  /**
   *  Prelaunch features are hidden from users and are only visible internally.
   *
   *  Value: "PRELAUNCH"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MetricDescriptor_LaunchStage_Prelaunch;
  /**
   *  The feature is not yet implemented. Users can not use it.
   *
   *  Value: "UNIMPLEMENTED"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MetricDescriptor_LaunchStage_Unimplemented;
  
  // ----------------------------------------------------------------------------
  // GTLRServiceConsumerManagement_MetricDescriptor.metricKind
  
  /**
   *  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.
   *
   *  Value: "CUMULATIVE"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MetricDescriptor_MetricKind_Cumulative;
  /**
   *  The change in a value during a time interval.
   *
   *  Value: "DELTA"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MetricDescriptor_MetricKind_Delta;
  /**
   *  An instantaneous measurement of a value.
   *
   *  Value: "GAUGE"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MetricDescriptor_MetricKind_Gauge;
  /**
   *  Do not use this default value.
   *
   *  Value: "METRIC_KIND_UNSPECIFIED"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MetricDescriptor_MetricKind_MetricKindUnspecified;
  
  // ----------------------------------------------------------------------------
  // GTLRServiceConsumerManagement_MetricDescriptor.valueType
  
  /**
   *  The value is a boolean. This value type can be used only if the metric kind
   *  is `GAUGE`.
   *
   *  Value: "BOOL"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MetricDescriptor_ValueType_Bool;
  /**
   *  The value is a `Distribution`.
   *
   *  Value: "DISTRIBUTION"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MetricDescriptor_ValueType_Distribution;
  /**
   *  The value is a double precision floating point number.
   *
   *  Value: "DOUBLE"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MetricDescriptor_ValueType_Double;
  /**
   *  The value is a signed 64-bit integer.
   *
   *  Value: "INT64"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MetricDescriptor_ValueType_Int64;
  /**
   *  The value is money.
   *
   *  Value: "MONEY"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MetricDescriptor_ValueType_Money;
  /**
   *  The value is a text string. This value type can be used only if the metric
   *  kind is `GAUGE`.
   *
   *  Value: "STRING"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MetricDescriptor_ValueType_String;
  /**
   *  Do not use this default value.
   *
   *  Value: "VALUE_TYPE_UNSPECIFIED"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MetricDescriptor_ValueType_ValueTypeUnspecified;
  
  // ----------------------------------------------------------------------------
  // GTLRServiceConsumerManagement_MetricDescriptorMetadata.launchStage
  
  /**
   *  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
   *  allowlisted. 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.
   *
   *  Value: "ALPHA"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_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.
   *
   *  Value: "BETA"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MetricDescriptorMetadata_LaunchStage_Beta;
  /**
   *  Deprecated features are scheduled to be shut down and removed. For more
   *  information, see the “Deprecation Policy” section of our [Terms of
   *  Service](https://cloud.google.com/terms/) and the [Google Cloud Platform
   *  Subject to the Deprecation
   *  Policy](https://cloud.google.com/terms/deprecation) documentation.
   *
   *  Value: "DEPRECATED"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MetricDescriptorMetadata_LaunchStage_Deprecated;
  /**
   *  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.
   *
   *  Value: "EARLY_ACCESS"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MetricDescriptorMetadata_LaunchStage_EarlyAccess;
  /**
   *  GA features are open to all developers and are considered stable and fully
   *  qualified for production use.
   *
   *  Value: "GA"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MetricDescriptorMetadata_LaunchStage_Ga;
  /**
   *  Do not use this default value.
   *
   *  Value: "LAUNCH_STAGE_UNSPECIFIED"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MetricDescriptorMetadata_LaunchStage_LaunchStageUnspecified;
  /**
   *  Prelaunch features are hidden from users and are only visible internally.
   *
   *  Value: "PRELAUNCH"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MetricDescriptorMetadata_LaunchStage_Prelaunch;
  /**
   *  The feature is not yet implemented. Users can not use it.
   *
   *  Value: "UNIMPLEMENTED"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MetricDescriptorMetadata_LaunchStage_Unimplemented;
  
  // ----------------------------------------------------------------------------
  // GTLRServiceConsumerManagement_MonitoredResourceDescriptor.launchStage
  
  /**
   *  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
   *  allowlisted. 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.
   *
   *  Value: "ALPHA"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MonitoredResourceDescriptor_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.
   *
   *  Value: "BETA"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MonitoredResourceDescriptor_LaunchStage_Beta;
  /**
   *  Deprecated features are scheduled to be shut down and removed. For more
   *  information, see the “Deprecation Policy” section of our [Terms of
   *  Service](https://cloud.google.com/terms/) and the [Google Cloud Platform
   *  Subject to the Deprecation
   *  Policy](https://cloud.google.com/terms/deprecation) documentation.
   *
   *  Value: "DEPRECATED"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MonitoredResourceDescriptor_LaunchStage_Deprecated;
  /**
   *  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.
   *
   *  Value: "EARLY_ACCESS"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MonitoredResourceDescriptor_LaunchStage_EarlyAccess;
  /**
   *  GA features are open to all developers and are considered stable and fully
   *  qualified for production use.
   *
   *  Value: "GA"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MonitoredResourceDescriptor_LaunchStage_Ga;
  /**
   *  Do not use this default value.
   *
   *  Value: "LAUNCH_STAGE_UNSPECIFIED"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MonitoredResourceDescriptor_LaunchStage_LaunchStageUnspecified;
  /**
   *  Prelaunch features are hidden from users and are only visible internally.
   *
   *  Value: "PRELAUNCH"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MonitoredResourceDescriptor_LaunchStage_Prelaunch;
  /**
   *  The feature is not yet implemented. Users can not use it.
   *
   *  Value: "UNIMPLEMENTED"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_MonitoredResourceDescriptor_LaunchStage_Unimplemented;
  
  // ----------------------------------------------------------------------------
  // GTLRServiceConsumerManagement_TenantResource.status
  
  /**
   *  Active resource.
   *
   *  Value: "ACTIVE"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_TenantResource_Status_Active;
  /**
   *  Tenant resource has been deleted.
   *
   *  Value: "DELETED"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_TenantResource_Status_Deleted;
  /**
   *  Tenant resource creation or deletion has failed.
   *
   *  Value: "FAILED"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_TenantResource_Status_Failed;
  /**
   *  Creation of the tenant resource is ongoing.
   *
   *  Value: "PENDING_CREATE"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_TenantResource_Status_PendingCreate;
  /**
   *  Deletion of the resource is ongoing.
   *
   *  Value: "PENDING_DELETE"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_TenantResource_Status_PendingDelete;
  /**
   *  Unspecified status is the default unset value.
   *
   *  Value: "STATUS_UNSPECIFIED"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_TenantResource_Status_StatusUnspecified;
  
  // ----------------------------------------------------------------------------
  // GTLRServiceConsumerManagement_Type.syntax
  
  /**
   *  Syntax `proto2`.
   *
   *  Value: "SYNTAX_PROTO2"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_Type_Syntax_SyntaxProto2;
  /**
   *  Syntax `proto3`.
   *
   *  Value: "SYNTAX_PROTO3"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_Type_Syntax_SyntaxProto3;
  
  // ----------------------------------------------------------------------------
  // GTLRServiceConsumerManagement_V1GenerateDefaultIdentityResponse.attachStatus
  
  /**
   *  Role attachment was denied in this request by customer set org policy.
   *  (go/si-attach-role)
   *
   *  Value: "ATTACH_DENIED_BY_ORG_POLICY"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_V1GenerateDefaultIdentityResponse_AttachStatus_AttachDeniedByOrgPolicy;
  /**
   *  The default identity was attached to a role successfully in this request.
   *
   *  Value: "ATTACHED"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_V1GenerateDefaultIdentityResponse_AttachStatus_Attached;
  /**
   *  The request specified that no attempt should be made to attach the role.
   *
   *  Value: "ATTACH_SKIPPED"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_V1GenerateDefaultIdentityResponse_AttachStatus_AttachSkipped;
  /**
   *  Indicates that the AttachStatus was not set.
   *
   *  Value: "ATTACH_STATUS_UNSPECIFIED"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_V1GenerateDefaultIdentityResponse_AttachStatus_AttachStatusUnspecified;
  /**
   *  Role was attached to the consumer project at some point in time. Tenant
   *  manager doesn't make assertion about the current state of the identity with
   *  respect to the consumer. Role attachment should happen only once after
   *  activation and cannot be reattached after customer removes it.
   *  (go/si-attach-role)
   *
   *  Value: "PREVIOUSLY_ATTACHED"
   */
  FOUNDATION_EXTERN NSString * const kGTLRServiceConsumerManagement_V1GenerateDefaultIdentityResponse_AttachStatus_PreviouslyAttached;
  
  /**
   *  Request to add a newly created and configured tenant project to a tenancy
   *  unit.
   */
  @interface GTLRServiceConsumerManagement_AddTenantProjectRequest : GTLRObject
  
  /**
   *  Configuration of the new tenant project to be added to tenancy unit
   *  resources.
   */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_TenantProjectConfig *projectConfig;
  
  /**
   *  Required. Tag of the added project. Must be less than 128 characters.
   *  Required.
   */
  @property(nonatomic, copy, nullable) NSString *tag;
  
  @end
  
  
  /**
   *  Api is a light-weight descriptor for an API Interface. Interfaces are also
   *  described as "protocol buffer services" in some contexts, such as by the
   *  "service" keyword in a .proto file, but they are different from API
   *  Services, which represent a concrete implementation of an interface as
   *  opposed to simply a description of methods and bindings. They are also
   *  sometimes simply referred to as "APIs" in other contexts, such as the name
   *  of this message itself. See https://cloud.google.com/apis/design/glossary
   *  for detailed terminology.
   */
  @interface GTLRServiceConsumerManagement_Api : GTLRObject
  
  /** The methods of this interface, in unspecified order. */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_Method *> *methods;
  
  /** Included interfaces. See Mixin. */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_Mixin *> *mixins;
  
  /**
   *  The fully qualified name of this interface, including package name followed
   *  by the interface's simple name.
   */
  @property(nonatomic, copy, nullable) NSString *name;
  
  /** Any metadata attached to the interface. */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_Option *> *options;
  
  /**
   *  Source context for the protocol buffer service represented by this message.
   */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_SourceContext *sourceContext;
  
  /**
   *  The source syntax of the service.
   *
   *  Likely values:
   *    @arg @c kGTLRServiceConsumerManagement_Api_Syntax_SyntaxProto2 Syntax
   *        `proto2`. (Value: "SYNTAX_PROTO2")
   *    @arg @c kGTLRServiceConsumerManagement_Api_Syntax_SyntaxProto3 Syntax
   *        `proto3`. (Value: "SYNTAX_PROTO3")
   */
  @property(nonatomic, copy, nullable) NSString *syntax;
  
  /**
   *  A version string for this interface. If specified, must have the form
   *  `major-version.minor-version`, as in `1.10`. If the minor version is
   *  omitted, it defaults to zero. If the entire version field is empty, the
   *  major version is derived from the package name, as outlined below. If the
   *  field is not empty, the version in the package name will be verified to be
   *  consistent with what is provided here. The versioning schema uses [semantic
   *  versioning](http://semver.org) where the major version number indicates a
   *  breaking change and the minor version an additive, non-breaking change. Both
   *  version numbers are signals to users what to expect from different versions,
   *  and should be carefully chosen based on the product plan. The major version
   *  is also reflected in the package name of the interface, which must end in
   *  `v`, as in `google.feature.v1`. For major versions 0 and 1, the suffix can
   *  be omitted. Zero major versions must only be used for experimental, non-GA
   *  interfaces.
   */
  @property(nonatomic, copy, nullable) NSString *version;
  
  @end
  
  
  /**
   *  Request to apply configuration to an existing tenant project.
   */
  @interface GTLRServiceConsumerManagement_ApplyTenantProjectConfigRequest : GTLRObject
  
  /** Configuration that should be applied to the existing tenant project. */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_TenantProjectConfig *projectConfig;
  
  /**
   *  Required. Tag of the project. Must be less than 128 characters. Required.
   */
  @property(nonatomic, copy, nullable) NSString *tag;
  
  @end
  
  
  /**
   *  Request to attach an existing project to the tenancy unit as a new tenant
   *  resource.
   */
  @interface GTLRServiceConsumerManagement_AttachTenantProjectRequest : GTLRObject
  
  /**
   *  When attaching an external project, this is in the format of
   *  `projects/{project_number}`.
   */
  @property(nonatomic, copy, nullable) NSString *externalResource;
  
  /**
   *  When attaching a reserved project already in tenancy units, this is the tag
   *  of a tenant resource under the tenancy unit for the managed service's
   *  service producer project. The reserved tenant resource must be in an active
   *  state.
   */
  @property(nonatomic, copy, nullable) NSString *reservedResource;
  
  /**
   *  Required. Tag of the tenant resource after attachment. Must be less than 128
   *  characters. Required.
   */
  @property(nonatomic, copy, nullable) NSString *tag;
  
  @end
  
  
  /**
   *  `Authentication` defines the authentication configuration for API methods
   *  provided by an API service. Example: name: calendar.googleapis.com
   *  authentication: providers: - id: google_calendar_auth jwks_uri:
   *  https://www.googleapis.com/oauth2/v1/certs issuer:
   *  https://securetoken.google.com rules: - selector: "*" requirements:
   *  provider_id: google_calendar_auth - selector: google.calendar.Delegate
   *  oauth: canonical_scopes: https://www.googleapis.com/auth/calendar.read
   */
  @interface GTLRServiceConsumerManagement_Authentication : GTLRObject
  
  /** Defines a set of authentication providers that a service supports. */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_AuthProvider *> *providers;
  
  /**
   *  A list of authentication rules that apply to individual API methods.
   *  **NOTE:** All service configuration rules follow "last one wins" order.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_AuthenticationRule *> *rules;
  
  @end
  
  
  /**
   *  Authentication rules for the service. By default, if a method has any
   *  authentication requirements, every request must include a valid credential
   *  matching one of the requirements. It's an error to include more than one
   *  kind of credential in a single request. If a method doesn't have any auth
   *  requirements, request credentials will be ignored.
   */
  @interface GTLRServiceConsumerManagement_AuthenticationRule : GTLRObject
  
  /**
   *  If true, the service accepts API keys without any other credential. This
   *  flag only applies to HTTP and gRPC requests.
   *
   *  Uses NSNumber of boolValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *allowWithoutCredential;
  
  /** The requirements for OAuth credentials. */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_OAuthRequirements *oauth;
  
  /** Requirements for additional authentication providers. */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_AuthRequirement *> *requirements;
  
  /**
   *  Selects the methods to which this rule applies. Refer to selector for syntax
   *  details.
   */
  @property(nonatomic, copy, nullable) NSString *selector;
  
  @end
  
  
  /**
   *  Configuration for an authentication provider, including support for [JSON
   *  Web Token
   *  (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
   */
  @interface GTLRServiceConsumerManagement_AuthProvider : GTLRObject
  
  /**
   *  The list of JWT
   *  [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
   *  that are allowed to access. A JWT containing any of these audiences will be
   *  accepted. When this setting is absent, JWTs with audiences: -
   *  "https://[service.name]/[google.protobuf.Api.name]" -
   *  "https://[service.name]/" will be accepted. For example, if no audiences are
   *  in the setting, LibraryService API will accept JWTs with the following
   *  audiences: -
   *  https://library-example.googleapis.com/google.example.library.v1.LibraryService
   *  - https://library-example.googleapis.com/ Example: audiences:
   *  bookstore_android.apps.googleusercontent.com,
   *  bookstore_web.apps.googleusercontent.com
   */
  @property(nonatomic, copy, nullable) NSString *audiences;
  
  /**
   *  Redirect URL if JWT token is required but not present or is expired.
   *  Implement authorizationUrl of securityDefinitions in OpenAPI spec.
   */
  @property(nonatomic, copy, nullable) NSString *authorizationUrl;
  
  /**
   *  The unique identifier of the auth provider. It will be referred to by
   *  `AuthRequirement.provider_id`. Example: "bookstore_auth".
   *
   *  identifier property maps to 'id' in JSON (to avoid Objective C's 'id').
   */
  @property(nonatomic, copy, nullable) NSString *identifier;
  
  /**
   *  Identifies the principal that issued the JWT. See
   *  https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.1
   *  Usually a URL or an email address. Example: https://securetoken.google.com
   *  Example: 1234567-compute\@developer.gserviceaccount.com
   */
  @property(nonatomic, copy, nullable) NSString *issuer;
  
  /**
   *  URL of the provider's public key set to validate signature of the JWT. See
   *  [OpenID
   *  Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata).
   *  Optional if the key set document: - can be retrieved from [OpenID
   *  Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html) of
   *  the issuer. - can be inferred from the email domain of the issuer (e.g. a
   *  Google service account). Example: https://www.googleapis.com/oauth2/v1/certs
   */
  @property(nonatomic, copy, nullable) NSString *jwksUri;
  
  /**
   *  Defines the locations to extract the JWT. JWT locations can be either from
   *  HTTP headers or URL query parameters. The rule is that the first match wins.
   *  The checking order is: checking all headers first, then URL query
   *  parameters. If not specified, default to use following 3 locations: 1)
   *  Authorization: Bearer 2) x-goog-iap-jwt-assertion 3) access_token query
   *  parameter Default locations can be specified as followings: jwt_locations: -
   *  header: Authorization value_prefix: "Bearer " - header:
   *  x-goog-iap-jwt-assertion - query: access_token
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_JwtLocation *> *jwtLocations;
  
  @end
  
  
  /**
   *  User-defined authentication requirements, including support for [JSON Web
   *  Token
   *  (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
   */
  @interface GTLRServiceConsumerManagement_AuthRequirement : GTLRObject
  
  /**
   *  NOTE: This will be deprecated soon, once AuthProvider.audiences is
   *  implemented and accepted in all the runtime components. The list of JWT
   *  [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
   *  that are allowed to access. A JWT containing any of these audiences will be
   *  accepted. When this setting is absent, only JWTs with audience
   *  "https://Service_name/API_name" will be accepted. For example, if no
   *  audiences are in the setting, LibraryService API will only accept JWTs with
   *  the following audience
   *  "https://library-example.googleapis.com/google.example.library.v1.LibraryService".
   *  Example: audiences: bookstore_android.apps.googleusercontent.com,
   *  bookstore_web.apps.googleusercontent.com
   */
  @property(nonatomic, copy, nullable) NSString *audiences;
  
  /** id from authentication provider. Example: provider_id: bookstore_auth */
  @property(nonatomic, copy, nullable) NSString *providerId;
  
  @end
  
  
  /**
   *  `Backend` defines the backend configuration for a service.
   */
  @interface GTLRServiceConsumerManagement_Backend : GTLRObject
  
  /**
   *  A list of API backend rules that apply to individual API methods. **NOTE:**
   *  All service configuration rules follow "last one wins" order.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_BackendRule *> *rules;
  
  @end
  
  
  /**
   *  A backend rule provides configuration for an individual API element.
   */
  @interface GTLRServiceConsumerManagement_BackendRule : GTLRObject
  
  /**
   *  The address of the API backend. The scheme is used to determine the backend
   *  protocol and security. The following schemes are accepted: SCHEME PROTOCOL
   *  SECURITY http:// HTTP None https:// HTTP TLS grpc:// gRPC None grpcs:// gRPC
   *  TLS It is recommended to explicitly include a scheme. Leaving out the scheme
   *  may cause constrasting behaviors across platforms. If the port is
   *  unspecified, the default is: - 80 for schemes without TLS - 443 for schemes
   *  with TLS For HTTP backends, use protocol to specify the protocol version.
   */
  @property(nonatomic, copy, nullable) NSString *address;
  
  /**
   *  The number of seconds to wait for a response from a request. The default
   *  varies based on the request protocol and deployment environment.
   *
   *  Uses NSNumber of doubleValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *deadline;
  
  /**
   *  When disable_auth is true, a JWT ID token won't be generated and the
   *  original "Authorization" HTTP header will be preserved. If the header is
   *  used to carry the original token and is expected by the backend, this field
   *  must be set to true to preserve the header.
   *
   *  Uses NSNumber of boolValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *disableAuth;
  
  /**
   *  The JWT audience is used when generating a JWT ID token for the backend.
   *  This ID token will be added in the HTTP "authorization" header, and sent to
   *  the backend.
   */
  @property(nonatomic, copy, nullable) NSString *jwtAudience;
  
  /**
   *  The number of seconds to wait for the completion of a long running
   *  operation. The default is no deadline.
   *
   *  Uses NSNumber of doubleValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *operationDeadline;
  
  /**
   *  pathTranslation
   *
   *  Likely values:
   *    @arg @c kGTLRServiceConsumerManagement_BackendRule_PathTranslation_AppendPathToAddress
   *        The request path will be appended to the backend address. # Examples
   *        Given the following operation config: Method path:
   *        /api/company/{cid}/user/{uid} Backend address:
   *        https://example.appspot.com Requests to the following request paths
   *        will call the backend at the translated path: Request path:
   *        /api/company/widgetworks/user/johndoe Translated:
   *        https://example.appspot.com/api/company/widgetworks/user/johndoe
   *        Request path: /api/company/widgetworks/user/johndoe?timezone=EST
   *        Translated:
   *        https://example.appspot.com/api/company/widgetworks/user/johndoe?timezone=EST
   *        (Value: "APPEND_PATH_TO_ADDRESS")
   *    @arg @c kGTLRServiceConsumerManagement_BackendRule_PathTranslation_ConstantAddress
   *        Use the backend address as-is, with no modification to the path. If
   *        the URL pattern contains variables, the variable names and values will
   *        be appended to the query string. If a query string parameter and a URL
   *        pattern variable have the same name, this may result in duplicate keys
   *        in the query string. # Examples Given the following operation config:
   *        Method path: /api/company/{cid}/user/{uid} Backend address:
   *        https://example.cloudfunctions.net/getUser Requests to the following
   *        request paths will call the backend at the translated path: Request
   *        path: /api/company/widgetworks/user/johndoe Translated:
   *        https://example.cloudfunctions.net/getUser?cid=widgetworks&uid=johndoe
   *        Request path: /api/company/widgetworks/user/johndoe?timezone=EST
   *        Translated:
   *        https://example.cloudfunctions.net/getUser?timezone=EST&cid=widgetworks&uid=johndoe
   *        (Value: "CONSTANT_ADDRESS")
   *    @arg @c kGTLRServiceConsumerManagement_BackendRule_PathTranslation_PathTranslationUnspecified
   *        Value "PATH_TRANSLATION_UNSPECIFIED"
   */
  @property(nonatomic, copy, nullable) NSString *pathTranslation;
  
  /**
   *  The protocol used for sending a request to the backend. The supported values
   *  are "http/1.1" and "h2". The default value is inferred from the scheme in
   *  the address field: SCHEME PROTOCOL http:// http/1.1 https:// http/1.1
   *  grpc:// h2 grpcs:// h2 For secure HTTP backends (https://) that support
   *  HTTP/2, set this field to "h2" for improved performance. Configuring this
   *  field to non-default values is only supported for secure HTTP backends. This
   *  field will be ignored for all other backends. See
   *  https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids
   *  for more details on the supported values.
   */
  @property(nonatomic, copy, nullable) NSString *protocol;
  
  /**
   *  Selects the methods to which this rule applies. Refer to selector for syntax
   *  details.
   */
  @property(nonatomic, copy, nullable) NSString *selector;
  
  @end
  
  
  /**
   *  Billing related configuration of the service. The following example shows
   *  how to configure monitored resources and metrics for billing,
   *  `consumer_destinations` is the only supported destination and the monitored
   *  resources need at least one label key `cloud.googleapis.com/location` to
   *  indicate the location of the billing usage, using different monitored
   *  resources between monitoring and billing is recommended so they can be
   *  evolved independently: monitored_resources: - type:
   *  library.googleapis.com/billing_branch labels: - key:
   *  cloud.googleapis.com/location description: | Predefined label to support
   *  billing location restriction. - key: city description: | Custom label to
   *  define the city where the library branch is located in. - key: name
   *  description: Custom label to define the name of the library branch. metrics:
   *  - name: library.googleapis.com/book/borrowed_count metric_kind: DELTA
   *  value_type: INT64 unit: "1" billing: consumer_destinations: -
   *  monitored_resource: library.googleapis.com/billing_branch metrics: -
   *  library.googleapis.com/book/borrowed_count
   */
  @interface GTLRServiceConsumerManagement_Billing : GTLRObject
  
  /**
   *  Billing configurations for sending metrics to the consumer project. There
   *  can be multiple consumer destinations per service, each one must have a
   *  different monitored resource type. A metric can be used in at most one
   *  consumer destination.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_BillingDestination *> *consumerDestinations;
  
  @end
  
  
  /**
   *  Describes the billing configuration for a new tenant project.
   */
  @interface GTLRServiceConsumerManagement_BillingConfig : GTLRObject
  
  /**
   *  Name of the billing account. For example
   *  `billingAccounts/012345-567890-ABCDEF`.
   */
  @property(nonatomic, copy, nullable) NSString *billingAccount;
  
  @end
  
  
  /**
   *  Configuration of a specific billing destination (Currently only support bill
   *  against consumer project).
   */
  @interface GTLRServiceConsumerManagement_BillingDestination : GTLRObject
  
  /**
   *  Names of the metrics to report to this billing destination. Each name must
   *  be defined in Service.metrics section.
   */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *metrics;
  
  /**
   *  The monitored resource type. The type must be defined in
   *  Service.monitored_resources section.
   */
  @property(nonatomic, copy, nullable) NSString *monitoredResource;
  
  @end
  
  
  /**
   *  The request message for Operations.CancelOperation.
   */
  @interface GTLRServiceConsumerManagement_CancelOperationRequest : GTLRObject
  @end
  
  
  /**
   *  `Context` defines which contexts an API requests. Example: context: rules: -
   *  selector: "*" requested: - google.rpc.context.ProjectContext -
   *  google.rpc.context.OriginContext The above specifies that all methods in the
   *  API request `google.rpc.context.ProjectContext` and
   *  `google.rpc.context.OriginContext`. Available context types are defined in
   *  package `google.rpc.context`. This also provides mechanism to allowlist any
   *  protobuf message extension that can be sent in grpc metadata using
   *  “x-goog-ext--bin” and “x-goog-ext--jspb” format. For example, list any
   *  service specific protobuf types that can appear in grpc metadata as follows
   *  in your yaml file: Example: context: rules: - selector:
   *  "google.example.library.v1.LibraryService.CreateBook"
   *  allowed_request_extensions: - google.foo.v1.NewExtension
   *  allowed_response_extensions: - google.foo.v1.NewExtension You can also
   *  specify extension ID instead of fully qualified extension name here.
   */
  @interface GTLRServiceConsumerManagement_Context : GTLRObject
  
  /**
   *  A list of RPC context rules that apply to individual API methods. **NOTE:**
   *  All service configuration rules follow "last one wins" order.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_ContextRule *> *rules;
  
  @end
  
  
  /**
   *  A context rule provides information about the context for an individual API
   *  element.
   */
  @interface GTLRServiceConsumerManagement_ContextRule : GTLRObject
  
  /**
   *  A list of full type names or extension IDs of extensions allowed in grpc
   *  side channel from client to backend.
   */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *allowedRequestExtensions;
  
  /**
   *  A list of full type names or extension IDs of extensions allowed in grpc
   *  side channel from backend to client.
   */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *allowedResponseExtensions;
  
  /** A list of full type names of provided contexts. */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *provided;
  
  /** A list of full type names of requested contexts. */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *requested;
  
  /**
   *  Selects the methods to which this rule applies. Refer to selector for syntax
   *  details.
   */
  @property(nonatomic, copy, nullable) NSString *selector;
  
  @end
  
  
  /**
   *  Selects and configures the service controller used by the service. The
   *  service controller handles features like abuse, quota, billing, logging,
   *  monitoring, etc.
   */
  @interface GTLRServiceConsumerManagement_Control : GTLRObject
  
  /**
   *  The service control environment to use. If empty, no control plane feature
   *  (like quota and billing) will be enabled.
   */
  @property(nonatomic, copy, nullable) NSString *environment;
  
  @end
  
  
  /**
   *  Request to create a tenancy unit for a service consumer of a managed
   *  service.
   */
  @interface GTLRServiceConsumerManagement_CreateTenancyUnitRequest : GTLRObject
  
  /**
   *  Optional. Optional service producer-provided identifier of the tenancy unit.
   *  Must be no longer than 40 characters and preferably URI friendly. If it
   *  isn't provided, a UID for the tenancy unit is automatically generated. The
   *  identifier must be unique across a managed service. If the tenancy unit
   *  already exists for the managed service and service consumer pair, calling
   *  `CreateTenancyUnit` returns the existing tenancy unit if the provided
   *  identifier is identical or empty, otherwise the call fails.
   */
  @property(nonatomic, copy, nullable) NSString *tenancyUnitId;
  
  @end
  
  
  /**
   *  Customize service error responses. For example, list any service specific
   *  protobuf types that can appear in error detail lists of error responses.
   *  Example: custom_error: types: - google.foo.v1.CustomError -
   *  google.foo.v1.AnotherError
   */
  @interface GTLRServiceConsumerManagement_CustomError : GTLRObject
  
  /**
   *  The list of custom error rules that apply to individual API messages.
   *  **NOTE:** All service configuration rules follow "last one wins" order.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_CustomErrorRule *> *rules;
  
  /**
   *  The list of custom error detail types, e.g. 'google.foo.v1.CustomError'.
   */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *types;
  
  @end
  
  
  /**
   *  A custom error rule.
   */
  @interface GTLRServiceConsumerManagement_CustomErrorRule : GTLRObject
  
  /**
   *  Mark this message as possible payload in error response. Otherwise, objects
   *  of this type will be filtered when they appear in error payload.
   *
   *  Uses NSNumber of boolValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *isErrorType;
  
  /**
   *  Selects messages to which this rule applies. Refer to selector for syntax
   *  details.
   */
  @property(nonatomic, copy, nullable) NSString *selector;
  
  @end
  
  
  /**
   *  A custom pattern is used for defining custom HTTP verb.
   */
  @interface GTLRServiceConsumerManagement_CustomHttpPattern : GTLRObject
  
  /** The name of this custom HTTP verb. */
  @property(nonatomic, copy, nullable) NSString *kind;
  
  /** The path matched by this custom verb. */
  @property(nonatomic, copy, nullable) NSString *path;
  
  @end
  
  
  /**
   *  Request message to delete tenant project resource from the tenancy unit.
   */
  @interface GTLRServiceConsumerManagement_DeleteTenantProjectRequest : GTLRObject
  
  /** Required. Tag of the resource within the tenancy unit. */
  @property(nonatomic, copy, nullable) NSString *tag;
  
  @end
  
  
  /**
   *  `Documentation` provides the information for describing a service. Example:
   *  documentation: summary: > The Google Calendar API gives access to most
   *  calendar features. pages: - name: Overview content: (== include
   *  google/foo/overview.md ==) - name: Tutorial content: (== include
   *  google/foo/tutorial.md ==) subpages; - name: Java content: (== include
   *  google/foo/tutorial_java.md ==) rules: - selector:
   *  google.calendar.Calendar.Get description: > ... - selector:
   *  google.calendar.Calendar.Put description: > ... Documentation is provided in
   *  markdown syntax. In addition to standard markdown features, definition
   *  lists, tables and fenced code blocks are supported. Section headers can be
   *  provided and are interpreted relative to the section nesting of the context
   *  where a documentation fragment is embedded. Documentation from the IDL is
   *  merged with documentation defined via the config at normalization time,
   *  where documentation provided by config rules overrides IDL provided. A
   *  number of constructs specific to the API platform are supported in
   *  documentation text. In order to reference a proto element, the following
   *  notation can be used: [fully.qualified.proto.name][] To override the display
   *  text used for the link, this can be used: [display
   *  text][fully.qualified.proto.name] Text can be excluded from doc using the
   *  following notation: (-- internal comment --) A few directives are available
   *  in documentation. Note that directives must appear on a single line to be
   *  properly identified. The `include` directive includes a markdown file from
   *  an external source: (== include path/to/file ==) The `resource_for`
   *  directive marks a message to be the resource of a collection in REST view.
   *  If it is not specified, tools attempt to infer the resource from the
   *  operations in a collection: (== resource_for v1.shelves.books ==) The
   *  directive `suppress_warning` does not directly affect documentation and is
   *  documented together with service config validation.
   */
  @interface GTLRServiceConsumerManagement_Documentation : GTLRObject
  
  /** The URL to the root of documentation. */
  @property(nonatomic, copy, nullable) NSString *documentationRootUrl;
  
  /**
   *  Declares a single overview page. For example: documentation: summary: ...
   *  overview: (== include overview.md ==) This is a shortcut for the following
   *  declaration (using pages style): documentation: summary: ... pages: - name:
   *  Overview content: (== include overview.md ==) Note: you cannot specify both
   *  `overview` field and `pages` field.
   */
  @property(nonatomic, copy, nullable) NSString *overview;
  
  /** The top level pages for the documentation set. */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_Page *> *pages;
  
  /**
   *  A list of documentation rules that apply to individual API elements.
   *  **NOTE:** All service configuration rules follow "last one wins" order.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_DocumentationRule *> *rules;
  
  /**
   *  Specifies the service root url if the default one (the service name from the
   *  yaml file) is not suitable. This can be seen in any fully specified service
   *  urls as well as sections that show a base that other urls are relative to.
   */
  @property(nonatomic, copy, nullable) NSString *serviceRootUrl;
  
  /**
   *  A short description of what the service does. The summary must be plain
   *  text. It becomes the overview of the service displayed in Google Cloud
   *  Console. NOTE: This field is equivalent to the standard field `description`.
   */
  @property(nonatomic, copy, nullable) NSString *summary;
  
  @end
  
  
  /**
   *  A documentation rule provides information about individual API elements.
   */
  @interface GTLRServiceConsumerManagement_DocumentationRule : GTLRObject
  
  /**
   *  Deprecation description of the selected element(s). It can be provided if an
   *  element is marked as `deprecated`.
   */
  @property(nonatomic, copy, nullable) NSString *deprecationDescription;
  
  /**
   *  Description of the selected proto element (e.g. a message, a method, a
   *  'service' definition, or a field). Defaults to leading & trailing comments
   *  taken from the proto source definition of the proto element.
   *
   *  Remapped to 'descriptionProperty' to avoid NSObject's 'description'.
   */
  @property(nonatomic, copy, nullable) NSString *descriptionProperty;
  
  /**
   *  The selector is a comma-separated list of patterns for any element such as a
   *  method, a field, an enum value. Each pattern is a qualified name of the
   *  element which may end in "*", indicating a wildcard. Wildcards are only
   *  allowed at the end and for a whole component of the qualified name, i.e.
   *  "foo.*" is ok, but not "foo.b*" or "foo.*.bar". A wildcard will match one or
   *  more components. To specify a default for all applicable elements, the whole
   *  pattern "*" is used.
   */
  @property(nonatomic, copy, nullable) NSString *selector;
  
  @end
  
  
  /**
   *  A generic empty message that you can re-use to avoid defining duplicated
   *  empty messages in your APIs. A typical example is to use it as the request
   *  or the response type of an API method. For instance: service Foo { rpc
   *  Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON
   *  representation for `Empty` is empty JSON object `{}`.
   */
  @interface GTLRServiceConsumerManagement_Empty : GTLRObject
  @end
  
  
  /**
   *  `Endpoint` describes a network address of a service that serves a set of
   *  APIs. It is commonly known as a service endpoint. A service may expose any
   *  number of service endpoints, and all service endpoints share the same
   *  service definition, such as quota limits and monitoring metrics. Example:
   *  type: google.api.Service name: library-example.googleapis.com endpoints: #
   *  Declares network address `https://library-example.googleapis.com` # for
   *  service `library-example.googleapis.com`. The `https` scheme # is implicit
   *  for all service endpoints. Other schemes may be # supported in the future. -
   *  name: library-example.googleapis.com allow_cors: false - name:
   *  content-staging-library-example.googleapis.com # Allows HTTP OPTIONS calls
   *  to be passed to the API frontend, for it # to decide whether the subsequent
   *  cross-origin request is allowed # to proceed. allow_cors: true
   */
  @interface GTLRServiceConsumerManagement_Endpoint : GTLRObject
  
  /**
   *  Allowing
   *  [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka
   *  cross-domain traffic, would allow the backends served from this endpoint to
   *  receive and respond to HTTP OPTIONS requests. The response will be used by
   *  the browser to determine whether the subsequent cross-origin request is
   *  allowed to proceed.
   *
   *  Uses NSNumber of boolValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *allowCors;
  
  /** The canonical name of this endpoint. */
  @property(nonatomic, copy, nullable) NSString *name;
  
  /**
   *  The specification of an Internet routable address of API frontend that will
   *  handle requests to this [API
   *  Endpoint](https://cloud.google.com/apis/design/glossary). It should be
   *  either a valid IPv4 address or a fully-qualified domain name. For example,
   *  "8.8.8.8" or "myservice.appspot.com".
   */
  @property(nonatomic, copy, nullable) NSString *target;
  
  @end
  
  
  /**
   *  Enum type definition.
   */
  @interface GTLRServiceConsumerManagement_Enum : GTLRObject
  
  /** Enum value definitions. */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_EnumValue *> *enumvalue;
  
  /** Enum type name. */
  @property(nonatomic, copy, nullable) NSString *name;
  
  /** Protocol buffer options. */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_Option *> *options;
  
  /** The source context. */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_SourceContext *sourceContext;
  
  /**
   *  The source syntax.
   *
   *  Likely values:
   *    @arg @c kGTLRServiceConsumerManagement_Enum_Syntax_SyntaxProto2 Syntax
   *        `proto2`. (Value: "SYNTAX_PROTO2")
   *    @arg @c kGTLRServiceConsumerManagement_Enum_Syntax_SyntaxProto3 Syntax
   *        `proto3`. (Value: "SYNTAX_PROTO3")
   */
  @property(nonatomic, copy, nullable) NSString *syntax;
  
  @end
  
  
  /**
   *  Enum value definition.
   */
  @interface GTLRServiceConsumerManagement_EnumValue : GTLRObject
  
  /** Enum value name. */
  @property(nonatomic, copy, nullable) NSString *name;
  
  /**
   *  Enum value number.
   *
   *  Uses NSNumber of intValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *number;
  
  /** Protocol buffer options. */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_Option *> *options;
  
  @end
  
  
  /**
   *  A single field of a message type.
   */
  @interface GTLRServiceConsumerManagement_Field : GTLRObject
  
  /**
   *  The field cardinality.
   *
   *  Likely values:
   *    @arg @c kGTLRServiceConsumerManagement_Field_Cardinality_CardinalityOptional
   *        For optional fields. (Value: "CARDINALITY_OPTIONAL")
   *    @arg @c kGTLRServiceConsumerManagement_Field_Cardinality_CardinalityRepeated
   *        For repeated fields. (Value: "CARDINALITY_REPEATED")
   *    @arg @c kGTLRServiceConsumerManagement_Field_Cardinality_CardinalityRequired
   *        For required fields. Proto2 syntax only. (Value:
   *        "CARDINALITY_REQUIRED")
   *    @arg @c kGTLRServiceConsumerManagement_Field_Cardinality_CardinalityUnknown
   *        For fields with unknown cardinality. (Value: "CARDINALITY_UNKNOWN")
   */
  @property(nonatomic, copy, nullable) NSString *cardinality;
  
  /**
   *  The string value of the default value of this field. Proto2 syntax only.
   */
  @property(nonatomic, copy, nullable) NSString *defaultValue;
  
  /** The field JSON name. */
  @property(nonatomic, copy, nullable) NSString *jsonName;
  
  /**
   *  The field type.
   *
   *  Likely values:
   *    @arg @c kGTLRServiceConsumerManagement_Field_Kind_TypeBool Field type
   *        bool. (Value: "TYPE_BOOL")
   *    @arg @c kGTLRServiceConsumerManagement_Field_Kind_TypeBytes Field type
   *        bytes. (Value: "TYPE_BYTES")
   *    @arg @c kGTLRServiceConsumerManagement_Field_Kind_TypeDouble Field type
   *        double. (Value: "TYPE_DOUBLE")
   *    @arg @c kGTLRServiceConsumerManagement_Field_Kind_TypeEnum Field type
   *        enum. (Value: "TYPE_ENUM")
   *    @arg @c kGTLRServiceConsumerManagement_Field_Kind_TypeFixed32 Field type
   *        fixed32. (Value: "TYPE_FIXED32")
   *    @arg @c kGTLRServiceConsumerManagement_Field_Kind_TypeFixed64 Field type
   *        fixed64. (Value: "TYPE_FIXED64")
   *    @arg @c kGTLRServiceConsumerManagement_Field_Kind_TypeFloat Field type
   *        float. (Value: "TYPE_FLOAT")
   *    @arg @c kGTLRServiceConsumerManagement_Field_Kind_TypeGroup Field type
   *        group. Proto2 syntax only, and deprecated. (Value: "TYPE_GROUP")
   *    @arg @c kGTLRServiceConsumerManagement_Field_Kind_TypeInt32 Field type
   *        int32. (Value: "TYPE_INT32")
   *    @arg @c kGTLRServiceConsumerManagement_Field_Kind_TypeInt64 Field type
   *        int64. (Value: "TYPE_INT64")
   *    @arg @c kGTLRServiceConsumerManagement_Field_Kind_TypeMessage Field type
   *        message. (Value: "TYPE_MESSAGE")
   *    @arg @c kGTLRServiceConsumerManagement_Field_Kind_TypeSfixed32 Field type
   *        sfixed32. (Value: "TYPE_SFIXED32")
   *    @arg @c kGTLRServiceConsumerManagement_Field_Kind_TypeSfixed64 Field type
   *        sfixed64. (Value: "TYPE_SFIXED64")
   *    @arg @c kGTLRServiceConsumerManagement_Field_Kind_TypeSint32 Field type
   *        sint32. (Value: "TYPE_SINT32")
   *    @arg @c kGTLRServiceConsumerManagement_Field_Kind_TypeSint64 Field type
   *        sint64. (Value: "TYPE_SINT64")
   *    @arg @c kGTLRServiceConsumerManagement_Field_Kind_TypeString Field type
   *        string. (Value: "TYPE_STRING")
   *    @arg @c kGTLRServiceConsumerManagement_Field_Kind_TypeUint32 Field type
   *        uint32. (Value: "TYPE_UINT32")
   *    @arg @c kGTLRServiceConsumerManagement_Field_Kind_TypeUint64 Field type
   *        uint64. (Value: "TYPE_UINT64")
   *    @arg @c kGTLRServiceConsumerManagement_Field_Kind_TypeUnknown Field type
   *        unknown. (Value: "TYPE_UNKNOWN")
   */
  @property(nonatomic, copy, nullable) NSString *kind;
  
  /** The field name. */
  @property(nonatomic, copy, nullable) NSString *name;
  
  /**
   *  The field number.
   *
   *  Uses NSNumber of intValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *number;
  
  /**
   *  The index of the field type in `Type.oneofs`, for message or enumeration
   *  types. The first type has index 1; zero means the type is not in the list.
   *
   *  Uses NSNumber of intValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *oneofIndex;
  
  /** The protocol buffer options. */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_Option *> *options;
  
  /**
   *  Whether to use alternative packed wire representation.
   *
   *  Uses NSNumber of boolValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *packed;
  
  /**
   *  The field type URL, without the scheme, for message or enumeration types.
   *  Example: `"type.googleapis.com/google.protobuf.Timestamp"`.
   */
  @property(nonatomic, copy, nullable) NSString *typeUrl;
  
  @end
  
  
  /**
   *  Defines the HTTP configuration for an API service. It contains a list of
   *  HttpRule, each specifying the mapping of an RPC method to one or more HTTP
   *  REST API methods.
   */
  @interface GTLRServiceConsumerManagement_Http : GTLRObject
  
  /**
   *  When set to true, URL path parameters will be fully URI-decoded except in
   *  cases of single segment matches in reserved expansion, where "%2F" will be
   *  left encoded. The default behavior is to not decode RFC 6570 reserved
   *  characters in multi segment matches.
   *
   *  Uses NSNumber of boolValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *fullyDecodeReservedExpansion;
  
  /**
   *  A list of HTTP configuration rules that apply to individual API methods.
   *  **NOTE:** All service configuration rules follow "last one wins" order.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_HttpRule *> *rules;
  
  @end
  
  
  /**
   *  # gRPC Transcoding gRPC Transcoding is a feature for mapping between a gRPC
   *  method and one or more HTTP REST endpoints. It allows developers to build a
   *  single API service that supports both gRPC APIs and REST APIs. Many systems,
   *  including [Google APIs](https://github.com/googleapis/googleapis), [Cloud
   *  Endpoints](https://cloud.google.com/endpoints), [gRPC
   *  Gateway](https://github.com/grpc-ecosystem/grpc-gateway), and
   *  [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature and
   *  use it for large scale production services. `HttpRule` defines the schema of
   *  the gRPC/REST mapping. The mapping specifies how different portions of the
   *  gRPC request message are mapped to the URL path, URL query parameters, and
   *  HTTP request body. It also controls how the gRPC response message is mapped
   *  to the HTTP response body. `HttpRule` is typically specified as an
   *  `google.api.http` annotation on the gRPC method. Each mapping specifies a
   *  URL path template and an HTTP method. The path template may refer to one or
   *  more fields in the gRPC request message, as long as each field is a
   *  non-repeated field with a primitive (non-message) type. The path template
   *  controls how fields of the request message are mapped to the URL path.
   *  Example: service Messaging { rpc GetMessage(GetMessageRequest) returns
   *  (Message) { option (google.api.http) = { get: "/v1/{name=messages/ *}" }; }
   *  } message GetMessageRequest { string name = 1; // Mapped to URL path. }
   *  message Message { string text = 1; // The resource content. } This enables
   *  an HTTP REST to gRPC mapping as below: HTTP | gRPC -----|----- `GET
   *  /v1/messages/123456` | `GetMessage(name: "messages/123456")` Any fields in
   *  the request message which are not bound by the path template automatically
   *  become HTTP query parameters if there is no HTTP request body. For example:
   *  service Messaging { rpc GetMessage(GetMessageRequest) returns (Message) {
   *  option (google.api.http) = { get:"/v1/messages/{message_id}" }; } } message
   *  GetMessageRequest { message SubMessage { string subfield = 1; } string
   *  message_id = 1; // Mapped to URL path. int64 revision = 2; // Mapped to URL
   *  query parameter `revision`. SubMessage sub = 3; // Mapped to URL query
   *  parameter `sub.subfield`. } This enables a HTTP JSON to RPC mapping as
   *  below: HTTP | gRPC -----|----- `GET
   *  /v1/messages/123456?revision=2&sub.subfield=foo` | `GetMessage(message_id:
   *  "123456" revision: 2 sub: SubMessage(subfield: "foo"))` Note that fields
   *  which are mapped to URL query parameters must have a primitive type or a
   *  repeated primitive type or a non-repeated message type. In the case of a
   *  repeated type, the parameter can be repeated in the URL as
   *  `...?param=A&param=B`. In the case of a message type, each field of the
   *  message is mapped to a separate parameter, such as
   *  `...?foo.a=A&foo.b=B&foo.c=C`. For HTTP methods that allow a request body,
   *  the `body` field specifies the mapping. Consider a REST update method on the
   *  message resource collection: service Messaging { rpc
   *  UpdateMessage(UpdateMessageRequest) returns (Message) { option
   *  (google.api.http) = { patch: "/v1/messages/{message_id}" body: "message" };
   *  } } message UpdateMessageRequest { string message_id = 1; // mapped to the
   *  URL Message message = 2; // mapped to the body } The following HTTP JSON to
   *  RPC mapping is enabled, where the representation of the JSON in the request
   *  body is determined by protos JSON encoding: HTTP | gRPC -----|----- `PATCH
   *  /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: "123456"
   *  message { text: "Hi!" })` The special name `*` can be used in the body
   *  mapping to define that every field not bound by the path template should be
   *  mapped to the request body. This enables the following alternative
   *  definition of the update method: service Messaging { rpc
   *  UpdateMessage(Message) returns (Message) { option (google.api.http) = {
   *  patch: "/v1/messages/{message_id}" body: "*" }; } } message Message { string
   *  message_id = 1; string text = 2; } The following HTTP JSON to RPC mapping is
   *  enabled: HTTP | gRPC -----|----- `PATCH /v1/messages/123456 { "text": "Hi!"
   *  }` | `UpdateMessage(message_id: "123456" text: "Hi!")` Note that when using
   *  `*` in the body mapping, it is not possible to have HTTP parameters, as all
   *  fields not bound by the path end in the body. This makes this option more
   *  rarely used in practice when defining REST APIs. The common usage of `*` is
   *  in custom methods which don't use the URL at all for transferring data. It
   *  is possible to define multiple HTTP methods for one RPC by using the
   *  `additional_bindings` option. Example: service Messaging { rpc
   *  GetMessage(GetMessageRequest) returns (Message) { option (google.api.http) =
   *  { get: "/v1/messages/{message_id}" additional_bindings { get:
   *  "/v1/users/{user_id}/messages/{message_id}" } }; } } message
   *  GetMessageRequest { string message_id = 1; string user_id = 2; } This
   *  enables the following two alternative HTTP JSON to RPC mappings: HTTP | gRPC
   *  -----|----- `GET /v1/messages/123456` | `GetMessage(message_id: "123456")`
   *  `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id:
   *  "123456")` ## Rules for HTTP mapping 1. Leaf request fields (recursive
   *  expansion nested messages in the request message) are classified into three
   *  categories: - Fields referred by the path template. They are passed via the
   *  URL path. - Fields referred by the HttpRule.body. They are passed via the
   *  HTTP request body. - All other fields are passed via the URL query
   *  parameters, and the parameter name is the field path in the request message.
   *  A repeated field can be represented as multiple query parameters under the
   *  same name. 2. If HttpRule.body is "*", there is no URL query parameter, all
   *  fields are passed via URL path and HTTP request body. 3. If HttpRule.body is
   *  omitted, there is no HTTP request body, all fields are passed via URL path
   *  and URL query parameters. ### Path template syntax Template = "/" Segments [
   *  Verb ] ; Segments = Segment { "/" Segment } ; Segment = "*" | "**" | LITERAL
   *  | Variable ; Variable = "{" FieldPath [ "=" Segments ] "}" ; FieldPath =
   *  IDENT { "." IDENT } ; Verb = ":" LITERAL ; The syntax `*` matches a single
   *  URL path segment. The syntax `**` matches zero or more URL path segments,
   *  which must be the last part of the URL path except the `Verb`. The syntax
   *  `Variable` matches part of the URL path as specified by its template. A
   *  variable template must not contain other variables. If a variable matches a
   *  single path segment, its template may be omitted, e.g. `{var}` is equivalent
   *  to `{var=*}`. The syntax `LITERAL` matches literal text in the URL path. If
   *  the `LITERAL` contains any reserved character, such characters should be
   *  percent-encoded before the matching. If a variable contains exactly one path
   *  segment, such as `"{var}"` or `"{var=*}"`, when such a variable is expanded
   *  into a URL path on the client side, all characters except `[-_.~0-9a-zA-Z]`
   *  are percent-encoded. The server side does the reverse decoding. Such
   *  variables show up in the [Discovery
   *  Document](https://developers.google.com/discovery/v1/reference/apis) as
   *  `{var}`. If a variable contains multiple path segments, such as `"{var=foo/
   *  *}"` or `"{var=**}"`, when such a variable is expanded into a URL path on
   *  the client side, all characters except `[-_.~/0-9a-zA-Z]` are
   *  percent-encoded. The server side does the reverse decoding, except "%2F" and
   *  "%2f" are left unchanged. Such variables show up in the [Discovery
   *  Document](https://developers.google.com/discovery/v1/reference/apis) as
   *  `{+var}`. ## Using gRPC API Service Configuration gRPC API Service
   *  Configuration (service config) is a configuration language for configuring a
   *  gRPC service to become a user-facing product. The service config is simply
   *  the YAML representation of the `google.api.Service` proto message. As an
   *  alternative to annotating your proto file, you can configure gRPC
   *  transcoding in your service config YAML files. You do this by specifying a
   *  `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same
   *  effect as the proto annotation. This can be particularly useful if you have
   *  a proto that is reused in multiple services. Note that any transcoding
   *  specified in the service config will override any matching transcoding
   *  configuration in the proto. Example: http: rules: # Selects a gRPC method
   *  and applies HttpRule to it. - selector: example.v1.Messaging.GetMessage get:
   *  /v1/messages/{message_id}/{sub.subfield} ## Special notes When gRPC
   *  Transcoding is used to map a gRPC to JSON REST endpoints, the proto to JSON
   *  conversion must follow the [proto3
   *  specification](https://developers.google.com/protocol-buffers/docs/proto3#json).
   *  While the single segment variable follows the semantics of [RFC
   *  6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String
   *  Expansion, the multi segment variable **does not** follow RFC 6570 Section
   *  3.2.3 Reserved Expansion. The reason is that the Reserved Expansion does not
   *  expand special characters like `?` and `#`, which would lead to invalid
   *  URLs. As the result, gRPC Transcoding uses a custom encoding for multi
   *  segment variables. The path variables **must not** refer to any repeated or
   *  mapped field, because client libraries are not capable of handling such
   *  variable expansion. The path variables **must not** capture the leading "/"
   *  character. The reason is that the most common use case "{var}" does not
   *  capture the leading "/" character. For consistency, all path variables must
   *  share the same behavior. Repeated message fields must not be mapped to URL
   *  query parameters, because no client library can support such complicated
   *  mapping. If an API needs to use a JSON array for request or response body,
   *  it can map the request or response body to a repeated field. However, some
   *  gRPC Transcoding implementations may not support this feature.
   */
  @interface GTLRServiceConsumerManagement_HttpRule : GTLRObject
  
  /**
   *  Additional HTTP bindings for the selector. Nested bindings must not contain
   *  an `additional_bindings` field themselves (that is, the nesting may only be
   *  one level deep).
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_HttpRule *> *additionalBindings;
  
  /**
   *  The name of the request field whose value is mapped to the HTTP request
   *  body, or `*` for mapping all request fields not captured by the path pattern
   *  to the HTTP body, or omitted for not having any HTTP request body. NOTE: the
   *  referred field must be present at the top-level of the request message type.
   */
  @property(nonatomic, copy, nullable) NSString *body;
  
  /**
   *  The custom pattern is used for specifying an HTTP method that is not
   *  included in the `pattern` field, such as HEAD, or "*" to leave the HTTP
   *  method unspecified for this rule. The wild-card rule is useful for services
   *  that provide content to Web (HTML) clients.
   */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_CustomHttpPattern *custom;
  
  /**
   *  Maps to HTTP DELETE. Used for deleting a resource.
   *
   *  Remapped to 'deleteProperty' to avoid language reserved word 'delete'.
   */
  @property(nonatomic, copy, nullable) NSString *deleteProperty;
  
  /**
   *  Maps to HTTP GET. Used for listing and getting information about resources.
   */
  @property(nonatomic, copy, nullable) NSString *get;
  
  /** Maps to HTTP PATCH. Used for updating a resource. */
  @property(nonatomic, copy, nullable) NSString *patch;
  
  /**
   *  Maps to HTTP POST. Used for creating a resource or performing an action.
   */
  @property(nonatomic, copy, nullable) NSString *post;
  
  /** Maps to HTTP PUT. Used for replacing a resource. */
  @property(nonatomic, copy, nullable) NSString *put;
  
  /**
   *  Optional. The name of the response field whose value is mapped to the HTTP
   *  response body. When omitted, the entire response message will be used as the
   *  HTTP response body. NOTE: The referred field must be present at the
   *  top-level of the response message type.
   */
  @property(nonatomic, copy, nullable) NSString *responseBody;
  
  /**
   *  Selects a method to which this rule applies. Refer to selector for syntax
   *  details.
   */
  @property(nonatomic, copy, nullable) NSString *selector;
  
  @end
  
  
  /**
   *  Specifies a location to extract JWT from an API request.
   */
  @interface GTLRServiceConsumerManagement_JwtLocation : GTLRObject
  
  /** Specifies HTTP header name to extract JWT token. */
  @property(nonatomic, copy, nullable) NSString *header;
  
  /** Specifies URL query parameter name to extract JWT token. */
  @property(nonatomic, copy, nullable) NSString *query;
  
  /**
   *  The value prefix. The value format is "value_prefix{token}" Only applies to
   *  "in" header type. Must be empty for "in" query type. If not empty, the
   *  header value has to match (case sensitive) this prefix. If not matched, JWT
   *  will not be extracted. If matched, JWT will be extracted after the prefix is
   *  removed. For example, for "Authorization: Bearer {JWT}",
   *  value_prefix="Bearer " with a space at the end.
   */
  @property(nonatomic, copy, nullable) NSString *valuePrefix;
  
  @end
  
  
  /**
   *  A description of a label.
   */
  @interface GTLRServiceConsumerManagement_LabelDescriptor : GTLRObject
  
  /**
   *  A human-readable description for the label.
   *
   *  Remapped to 'descriptionProperty' to avoid NSObject's 'description'.
   */
  @property(nonatomic, copy, nullable) NSString *descriptionProperty;
  
  /** The label key. */
  @property(nonatomic, copy, nullable) NSString *key;
  
  /**
   *  The type of data that can be assigned to the label.
   *
   *  Likely values:
   *    @arg @c kGTLRServiceConsumerManagement_LabelDescriptor_ValueType_Bool
   *        Boolean; true or false. (Value: "BOOL")
   *    @arg @c kGTLRServiceConsumerManagement_LabelDescriptor_ValueType_Int64 A
   *        64-bit signed integer. (Value: "INT64")
   *    @arg @c kGTLRServiceConsumerManagement_LabelDescriptor_ValueType_String A
   *        variable-length string. This is the default. (Value: "STRING")
   */
  @property(nonatomic, copy, nullable) NSString *valueType;
  
  @end
  
  
  /**
   *  The response message for Operations.ListOperations.
   *
   *  @note This class supports NSFastEnumeration and indexed subscripting over
   *        its "operations" property. If returned as the result of a query, it
   *        should support automatic pagination (when @c shouldFetchNextPages is
   *        enabled).
   */
  @interface GTLRServiceConsumerManagement_ListOperationsResponse : GTLRCollectionObject
  
  /** The standard List next-page token. */
  @property(nonatomic, copy, nullable) NSString *nextPageToken;
  
  /**
   *  A list of operations that matches the specified filter in the request.
   *
   *  @note This property is used to support NSFastEnumeration and indexed
   *        subscripting on this class.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_Operation *> *operations;
  
  @end
  
  
  /**
   *  Response for the list request.
   *
   *  @note This class supports NSFastEnumeration and indexed subscripting over
   *        its "tenancyUnits" property. If returned as the result of a query, it
   *        should support automatic pagination (when @c shouldFetchNextPages is
   *        enabled).
   */
  @interface GTLRServiceConsumerManagement_ListTenancyUnitsResponse : GTLRCollectionObject
  
  /** Pagination token for large results. */
  @property(nonatomic, copy, nullable) NSString *nextPageToken;
  
  /**
   *  Tenancy units matching the request.
   *
   *  @note This property is used to support NSFastEnumeration and indexed
   *        subscripting on this class.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_TenancyUnit *> *tenancyUnits;
  
  @end
  
  
  /**
   *  A description of a log type. Example in YAML format: - name:
   *  library.googleapis.com/activity_history description: The history of
   *  borrowing and returning library items. display_name: Activity labels: - key:
   *  /customer_id description: Identifier of a library customer
   */
  @interface GTLRServiceConsumerManagement_LogDescriptor : GTLRObject
  
  /**
   *  A human-readable description of this log. This information appears in the
   *  documentation and can contain details.
   *
   *  Remapped to 'descriptionProperty' to avoid NSObject's 'description'.
   */
  @property(nonatomic, copy, nullable) NSString *descriptionProperty;
  
  /**
   *  The human-readable name for this log. This information appears on the user
   *  interface and should be concise.
   */
  @property(nonatomic, copy, nullable) NSString *displayName;
  
  /**
   *  The set of labels that are available to describe a specific log entry.
   *  Runtime requests that contain labels not specified here are considered
   *  invalid.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_LabelDescriptor *> *labels;
  
  /**
   *  The name of the log. It must be less than 512 characters long and can
   *  include the following characters: upper- and lower-case alphanumeric
   *  characters [A-Za-z0-9], and punctuation characters including slash,
   *  underscore, hyphen, period [/_-.].
   */
  @property(nonatomic, copy, nullable) NSString *name;
  
  @end
  
  
  /**
   *  Logging configuration of the service. The following example shows how to
   *  configure logs to be sent to the producer and consumer projects. In the
   *  example, the `activity_history` log is sent to both the producer and
   *  consumer projects, whereas the `purchase_history` log is only sent to the
   *  producer project. monitored_resources: - type: library.googleapis.com/branch
   *  labels: - key: /city description: The city where the library branch is
   *  located in. - key: /name description: The name of the branch. logs: - name:
   *  activity_history labels: - key: /customer_id - name: purchase_history
   *  logging: producer_destinations: - monitored_resource:
   *  library.googleapis.com/branch logs: - activity_history - purchase_history
   *  consumer_destinations: - monitored_resource: library.googleapis.com/branch
   *  logs: - activity_history
   */
  @interface GTLRServiceConsumerManagement_Logging : GTLRObject
  
  /**
   *  Logging configurations for sending logs to the consumer project. There can
   *  be multiple consumer destinations, each one must have a different monitored
   *  resource type. A log can be used in at most one consumer destination.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_LoggingDestination *> *consumerDestinations;
  
  /**
   *  Logging configurations for sending logs to the producer project. There can
   *  be multiple producer destinations, each one must have a different monitored
   *  resource type. A log can be used in at most one producer destination.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_LoggingDestination *> *producerDestinations;
  
  @end
  
  
  /**
   *  Configuration of a specific logging destination (the producer project or the
   *  consumer project).
   */
  @interface GTLRServiceConsumerManagement_LoggingDestination : GTLRObject
  
  /**
   *  Names of the logs to be sent to this destination. Each name must be defined
   *  in the Service.logs section. If the log name is not a domain scoped name, it
   *  will be automatically prefixed with the service name followed by "/".
   */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *logs;
  
  /**
   *  The monitored resource type. The type must be defined in the
   *  Service.monitored_resources section.
   */
  @property(nonatomic, copy, nullable) NSString *monitoredResource;
  
  @end
  
  
  /**
   *  Method represents a method of an API interface.
   */
  @interface GTLRServiceConsumerManagement_Method : GTLRObject
  
  /** The simple name of this method. */
  @property(nonatomic, copy, nullable) NSString *name;
  
  /** Any metadata attached to the method. */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_Option *> *options;
  
  /**
   *  If true, the request is streamed.
   *
   *  Uses NSNumber of boolValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *requestStreaming;
  
  /** A URL of the input message type. */
  @property(nonatomic, copy, nullable) NSString *requestTypeUrl;
  
  /**
   *  If true, the response is streamed.
   *
   *  Uses NSNumber of boolValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *responseStreaming;
  
  /** The URL of the output message type. */
  @property(nonatomic, copy, nullable) NSString *responseTypeUrl;
  
  /**
   *  The source syntax of this method.
   *
   *  Likely values:
   *    @arg @c kGTLRServiceConsumerManagement_Method_Syntax_SyntaxProto2 Syntax
   *        `proto2`. (Value: "SYNTAX_PROTO2")
   *    @arg @c kGTLRServiceConsumerManagement_Method_Syntax_SyntaxProto3 Syntax
   *        `proto3`. (Value: "SYNTAX_PROTO3")
   */
  @property(nonatomic, copy, nullable) NSString *syntax;
  
  @end
  
  
  /**
   *  Defines a metric type and its schema. Once a metric descriptor is created,
   *  deleting or altering it stops data collection and makes the metric type's
   *  existing data unusable.
   */
  @interface GTLRServiceConsumerManagement_MetricDescriptor : GTLRObject
  
  /**
   *  A detailed description of the metric, which can be used in documentation.
   *
   *  Remapped to 'descriptionProperty' to avoid NSObject's 'description'.
   */
  @property(nonatomic, copy, nullable) NSString *descriptionProperty;
  
  /**
   *  A concise name for the metric, which can be displayed in user interfaces.
   *  Use sentence case without an ending period, for example "Request count".
   *  This field is optional but it is recommended to be set for any metrics
   *  associated with user-visible concepts, such as Quota.
   */
  @property(nonatomic, copy, nullable) NSString *displayName;
  
  /**
   *  The set of labels that can be used to describe a specific instance of this
   *  metric type. For example, the
   *  `appengine.googleapis.com/http/server/response_latencies` metric type has a
   *  label for the HTTP response code, `response_code`, so you can look at
   *  latencies for successful responses or just for responses that failed.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_LabelDescriptor *> *labels;
  
  /**
   *  Optional. The launch stage of the metric definition.
   *
   *  Likely values:
   *    @arg @c kGTLRServiceConsumerManagement_MetricDescriptor_LaunchStage_Alpha
   *        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 allowlisted. 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. (Value: "ALPHA")
   *    @arg @c kGTLRServiceConsumerManagement_MetricDescriptor_LaunchStage_Beta
   *        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. (Value: "BETA")
   *    @arg @c kGTLRServiceConsumerManagement_MetricDescriptor_LaunchStage_Deprecated
   *        Deprecated features are scheduled to be shut down and removed. For
   *        more information, see the “Deprecation Policy” section of our [Terms
   *        of Service](https://cloud.google.com/terms/) and the [Google Cloud
   *        Platform Subject to the Deprecation
   *        Policy](https://cloud.google.com/terms/deprecation) documentation.
   *        (Value: "DEPRECATED")
   *    @arg @c kGTLRServiceConsumerManagement_MetricDescriptor_LaunchStage_EarlyAccess
   *        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. (Value: "EARLY_ACCESS")
   *    @arg @c kGTLRServiceConsumerManagement_MetricDescriptor_LaunchStage_Ga GA
   *        features are open to all developers and are considered stable and
   *        fully qualified for production use. (Value: "GA")
   *    @arg @c kGTLRServiceConsumerManagement_MetricDescriptor_LaunchStage_LaunchStageUnspecified
   *        Do not use this default value. (Value: "LAUNCH_STAGE_UNSPECIFIED")
   *    @arg @c kGTLRServiceConsumerManagement_MetricDescriptor_LaunchStage_Prelaunch
   *        Prelaunch features are hidden from users and are only visible
   *        internally. (Value: "PRELAUNCH")
   *    @arg @c kGTLRServiceConsumerManagement_MetricDescriptor_LaunchStage_Unimplemented
   *        The feature is not yet implemented. Users can not use it. (Value:
   *        "UNIMPLEMENTED")
   */
  @property(nonatomic, copy, nullable) NSString *launchStage;
  
  /** Optional. Metadata which can be used to guide usage of the metric. */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_MetricDescriptorMetadata *metadata;
  
  /**
   *  Whether the metric records instantaneous values, changes to a value, etc.
   *  Some combinations of `metric_kind` and `value_type` might not be supported.
   *
   *  Likely values:
   *    @arg @c kGTLRServiceConsumerManagement_MetricDescriptor_MetricKind_Cumulative
   *        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. (Value: "CUMULATIVE")
   *    @arg @c kGTLRServiceConsumerManagement_MetricDescriptor_MetricKind_Delta
   *        The change in a value during a time interval. (Value: "DELTA")
   *    @arg @c kGTLRServiceConsumerManagement_MetricDescriptor_MetricKind_Gauge
   *        An instantaneous measurement of a value. (Value: "GAUGE")
   *    @arg @c kGTLRServiceConsumerManagement_MetricDescriptor_MetricKind_MetricKindUnspecified
   *        Do not use this default value. (Value: "METRIC_KIND_UNSPECIFIED")
   */
  @property(nonatomic, copy, nullable) NSString *metricKind;
  
  /**
   *  Read-only. If present, then a time series, which is identified partially by
   *  a metric type and a MonitoredResourceDescriptor, that is associated with
   *  this metric type can only be associated with one of the monitored resource
   *  types listed here.
   */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *monitoredResourceTypes;
  
  /** The resource name of the metric descriptor. */
  @property(nonatomic, copy, nullable) NSString *name;
  
  /**
   *  The metric type, including its DNS name prefix. The type is not URL-encoded.
   *  All user-defined metric types have the DNS name `custom.googleapis.com` or
   *  `external.googleapis.com`. Metric types should use a natural hierarchical
   *  grouping. For example: "custom.googleapis.com/invoice/paid/amount"
   *  "external.googleapis.com/prometheus/up"
   *  "appengine.googleapis.com/http/server/response_latencies"
   */
  @property(nonatomic, copy, nullable) NSString *type;
  
  /**
   *  The units in which the metric value is reported. It is only applicable if
   *  the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The `unit` defines
   *  the representation of the stored metric values. Different systems might
   *  scale the values to be more easily displayed (so a value of `0.02kBy`
   *  _might_ be displayed as `20By`, and a value of `3523kBy` _might_ be
   *  displayed as `3.5MBy`). However, if the `unit` is `kBy`, then the value of
   *  the metric is always in thousands of bytes, no matter how it might be
   *  displayed. If you want a custom metric to record the exact number of
   *  CPU-seconds used by a job, you can create an `INT64 CUMULATIVE` metric whose
   *  `unit` is `s{CPU}` (or equivalently `1s{CPU}` or just `s`). If the job uses
   *  12,005 CPU-seconds, then the value is written as `12005`. Alternatively, if
   *  you want a custom metric to record data in a more granular way, you can
   *  create a `DOUBLE CUMULATIVE` metric whose `unit` is `ks{CPU}`, and then
   *  write the value `12.005` (which is `12005/1000`), or use `Kis{CPU}` and
   *  write `11.723` (which is `12005/1024`). The supported units are a subset of
   *  [The Unified Code for Units of
   *  Measure](https://unitsofmeasure.org/ucum.html) standard: **Basic units
   *  (UNIT)** * `bit` bit * `By` byte * `s` second * `min` minute * `h` hour *
   *  `d` day * `1` dimensionless **Prefixes (PREFIX)** * `k` kilo (10^3) * `M`
   *  mega (10^6) * `G` giga (10^9) * `T` tera (10^12) * `P` peta (10^15) * `E`
   *  exa (10^18) * `Z` zetta (10^21) * `Y` yotta (10^24) * `m` milli (10^-3) *
   *  `u` micro (10^-6) * `n` nano (10^-9) * `p` pico (10^-12) * `f` femto
   *  (10^-15) * `a` atto (10^-18) * `z` zepto (10^-21) * `y` yocto (10^-24) *
   *  `Ki` kibi (2^10) * `Mi` mebi (2^20) * `Gi` gibi (2^30) * `Ti` tebi (2^40) *
   *  `Pi` pebi (2^50) **Grammar** The grammar also includes these connectors: *
   *  `/` division or ratio (as an infix operator). For examples, `kBy/{email}` or
   *  `MiBy/10ms` (although you should almost never have `/s` in a metric `unit`;
   *  rates should always be computed at query time from the underlying cumulative
   *  or delta value). * `.` multiplication or composition (as an infix operator).
   *  For examples, `GBy.d` or `k{watt}.h`. The grammar for a unit is as follows:
   *  Expression = Component { "." Component } { "/" Component } ; Component = ( [
   *  PREFIX ] UNIT | "%" ) [ Annotation ] | Annotation | "1" ; Annotation = "{"
   *  NAME "}" ; Notes: * `Annotation` is just a comment if it follows a `UNIT`.
   *  If the annotation is used alone, then the unit is equivalent to `1`. For
   *  examples, `{request}/s == 1/s`, `By{transmitted}/s == By/s`. * `NAME` is a
   *  sequence of non-blank printable ASCII characters not containing `{` or `}`.
   *  * `1` represents a unitary [dimensionless
   *  unit](https://en.wikipedia.org/wiki/Dimensionless_quantity) of 1, such as in
   *  `1/s`. It is typically used when none of the basic units are appropriate.
   *  For example, "new users per day" can be represented as `1/d` or
   *  `{new-users}/d` (and a metric value `5` would mean "5 new users).
   *  Alternatively, "thousands of page views per day" would be represented as
   *  `1000/d` or `k1/d` or `k{page_views}/d` (and a metric value of `5.3` would
   *  mean "5300 page views per day"). * `%` represents dimensionless value of
   *  1/100, and annotates values giving a percentage (so the metric values are
   *  typically in the range of 0..100, and a metric value `3` means "3 percent").
   *  * `10^2.%` indicates a metric contains a ratio, typically in the range 0..1,
   *  that will be multiplied by 100 and displayed as a percentage (so a metric
   *  value `0.03` means "3 percent").
   */
  @property(nonatomic, copy, nullable) NSString *unit;
  
  /**
   *  Whether the measurement is an integer, a floating-point number, etc. Some
   *  combinations of `metric_kind` and `value_type` might not be supported.
   *
   *  Likely values:
   *    @arg @c kGTLRServiceConsumerManagement_MetricDescriptor_ValueType_Bool The
   *        value is a boolean. This value type can be used only if the metric
   *        kind is `GAUGE`. (Value: "BOOL")
   *    @arg @c kGTLRServiceConsumerManagement_MetricDescriptor_ValueType_Distribution
   *        The value is a `Distribution`. (Value: "DISTRIBUTION")
   *    @arg @c kGTLRServiceConsumerManagement_MetricDescriptor_ValueType_Double
   *        The value is a double precision floating point number. (Value:
   *        "DOUBLE")
   *    @arg @c kGTLRServiceConsumerManagement_MetricDescriptor_ValueType_Int64
   *        The value is a signed 64-bit integer. (Value: "INT64")
   *    @arg @c kGTLRServiceConsumerManagement_MetricDescriptor_ValueType_Money
   *        The value is money. (Value: "MONEY")
   *    @arg @c kGTLRServiceConsumerManagement_MetricDescriptor_ValueType_String
   *        The value is a text string. This value type can be used only if the
   *        metric kind is `GAUGE`. (Value: "STRING")
   *    @arg @c kGTLRServiceConsumerManagement_MetricDescriptor_ValueType_ValueTypeUnspecified
   *        Do not use this default value. (Value: "VALUE_TYPE_UNSPECIFIED")
   */
  @property(nonatomic, copy, nullable) NSString *valueType;
  
  @end
  
  
  /**
   *  Additional annotations that can be used to guide the usage of a metric.
   */
  @interface GTLRServiceConsumerManagement_MetricDescriptorMetadata : GTLRObject
  
  /**
   *  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.
   */
  @property(nonatomic, strong, nullable) GTLRDuration *ingestDelay;
  
  /**
   *  Deprecated. Must use the MetricDescriptor.launch_stage instead.
   *
   *  Likely values:
   *    @arg @c kGTLRServiceConsumerManagement_MetricDescriptorMetadata_LaunchStage_Alpha
   *        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 allowlisted. 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. (Value: "ALPHA")
   *    @arg @c kGTLRServiceConsumerManagement_MetricDescriptorMetadata_LaunchStage_Beta
   *        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. (Value: "BETA")
   *    @arg @c kGTLRServiceConsumerManagement_MetricDescriptorMetadata_LaunchStage_Deprecated
   *        Deprecated features are scheduled to be shut down and removed. For
   *        more information, see the “Deprecation Policy” section of our [Terms
   *        of Service](https://cloud.google.com/terms/) and the [Google Cloud
   *        Platform Subject to the Deprecation
   *        Policy](https://cloud.google.com/terms/deprecation) documentation.
   *        (Value: "DEPRECATED")
   *    @arg @c kGTLRServiceConsumerManagement_MetricDescriptorMetadata_LaunchStage_EarlyAccess
   *        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. (Value: "EARLY_ACCESS")
   *    @arg @c kGTLRServiceConsumerManagement_MetricDescriptorMetadata_LaunchStage_Ga
   *        GA features are open to all developers and are considered stable and
   *        fully qualified for production use. (Value: "GA")
   *    @arg @c kGTLRServiceConsumerManagement_MetricDescriptorMetadata_LaunchStage_LaunchStageUnspecified
   *        Do not use this default value. (Value: "LAUNCH_STAGE_UNSPECIFIED")
   *    @arg @c kGTLRServiceConsumerManagement_MetricDescriptorMetadata_LaunchStage_Prelaunch
   *        Prelaunch features are hidden from users and are only visible
   *        internally. (Value: "PRELAUNCH")
   *    @arg @c kGTLRServiceConsumerManagement_MetricDescriptorMetadata_LaunchStage_Unimplemented
   *        The feature is not yet implemented. Users can not use it. (Value:
   *        "UNIMPLEMENTED")
   */
  @property(nonatomic, copy, nullable) NSString *launchStage;
  
  /**
   *  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.
   */
  @property(nonatomic, strong, nullable) GTLRDuration *samplePeriod;
  
  @end
  
  
  /**
   *  Bind API methods to metrics. Binding a method to a metric causes that
   *  metric's configured quota behaviors to apply to the method call.
   */
  @interface GTLRServiceConsumerManagement_MetricRule : GTLRObject
  
  /**
   *  Metrics to update when the selected methods are called, and the associated
   *  cost applied to each metric. The key of the map is the metric name, and the
   *  values are the amount increased for the metric against which the quota
   *  limits are defined. The value must not be negative.
   */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_MetricRule_MetricCosts *metricCosts;
  
  /**
   *  Selects the methods to which this rule applies. Refer to selector for syntax
   *  details.
   */
  @property(nonatomic, copy, nullable) NSString *selector;
  
  @end
  
  
  /**
   *  Metrics to update when the selected methods are called, and the associated
   *  cost applied to each metric. The key of the map is the metric name, and the
   *  values are the amount increased for the metric against which the quota
   *  limits are defined. The value must not be negative.
   *
   *  @note This class is documented as having more properties of NSNumber (Uses
   *        NSNumber of longLongValue.). Use @c -additionalJSONKeys and @c
   *        -additionalPropertyForName: to get the list of properties and then
   *        fetch them; or @c -additionalProperties to fetch them all at once.
   */
  @interface GTLRServiceConsumerManagement_MetricRule_MetricCosts : GTLRObject
  @end
  
  
  /**
   *  Declares an API Interface to be included in this interface. The including
   *  interface must redeclare all the methods from the included interface, but
   *  documentation and options are inherited as follows: - If after comment and
   *  whitespace stripping, the documentation string of the redeclared method is
   *  empty, it will be inherited from the original method. - Each annotation
   *  belonging to the service config (http, visibility) which is not set in the
   *  redeclared method will be inherited. - If an http annotation is inherited,
   *  the path pattern will be modified as follows. Any version prefix will be
   *  replaced by the version of the including interface plus the root path if
   *  specified. Example of a simple mixin: package google.acl.v1; service
   *  AccessControl { // Get the underlying ACL object. rpc GetAcl(GetAclRequest)
   *  returns (Acl) { option (google.api.http).get = "/v1/{resource=**}:getAcl"; }
   *  } package google.storage.v2; service Storage { // rpc GetAcl(GetAclRequest)
   *  returns (Acl); // Get a data record. rpc GetData(GetDataRequest) returns
   *  (Data) { option (google.api.http).get = "/v2/{resource=**}"; } } Example of
   *  a mixin configuration: apis: - name: google.storage.v2.Storage mixins: -
   *  name: google.acl.v1.AccessControl The mixin construct implies that all
   *  methods in `AccessControl` are also declared with same name and
   *  request/response types in `Storage`. A documentation generator or annotation
   *  processor will see the effective `Storage.GetAcl` method after inheriting
   *  documentation and annotations as follows: service Storage { // Get the
   *  underlying ACL object. rpc GetAcl(GetAclRequest) returns (Acl) { option
   *  (google.api.http).get = "/v2/{resource=**}:getAcl"; } ... } Note how the
   *  version in the path pattern changed from `v1` to `v2`. If the `root` field
   *  in the mixin is specified, it should be a relative path under which
   *  inherited HTTP paths are placed. Example: apis: - name:
   *  google.storage.v2.Storage mixins: - name: google.acl.v1.AccessControl root:
   *  acls This implies the following inherited HTTP annotation: service Storage {
   *  // Get the underlying ACL object. rpc GetAcl(GetAclRequest) returns (Acl) {
   *  option (google.api.http).get = "/v2/acls/{resource=**}:getAcl"; } ... }
   */
  @interface GTLRServiceConsumerManagement_Mixin : GTLRObject
  
  /** The fully qualified name of the interface which is included. */
  @property(nonatomic, copy, nullable) NSString *name;
  
  /**
   *  If non-empty specifies a path under which inherited HTTP paths are rooted.
   */
  @property(nonatomic, copy, nullable) NSString *root;
  
  @end
  
  
  /**
   *  An object that describes the schema of a MonitoredResource object using a
   *  type name and a set of labels. For example, the monitored resource
   *  descriptor for Google Compute Engine VM instances has a type of
   *  `"gce_instance"` and specifies the use of the labels `"instance_id"` and
   *  `"zone"` to identify particular VM instances. Different APIs can support
   *  different monitored resource types. APIs generally provide a `list` method
   *  that returns the monitored resource descriptors used by the API.
   */
  @interface GTLRServiceConsumerManagement_MonitoredResourceDescriptor : GTLRObject
  
  /**
   *  Optional. A detailed description of the monitored resource type that might
   *  be used in documentation.
   *
   *  Remapped to 'descriptionProperty' to avoid NSObject's 'description'.
   */
  @property(nonatomic, copy, nullable) NSString *descriptionProperty;
  
  /**
   *  Optional. A concise name for the monitored resource type that might be
   *  displayed in user interfaces. It should be a Title Cased Noun Phrase,
   *  without any article or other determiners. For example, `"Google Cloud SQL
   *  Database"`.
   */
  @property(nonatomic, copy, nullable) NSString *displayName;
  
  /**
   *  Required. A set of labels used to describe instances of this monitored
   *  resource type. For example, an individual Google Cloud SQL database is
   *  identified by values for the labels `"database_id"` and `"zone"`.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_LabelDescriptor *> *labels;
  
  /**
   *  Optional. The launch stage of the monitored resource definition.
   *
   *  Likely values:
   *    @arg @c kGTLRServiceConsumerManagement_MonitoredResourceDescriptor_LaunchStage_Alpha
   *        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 allowlisted. 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. (Value: "ALPHA")
   *    @arg @c kGTLRServiceConsumerManagement_MonitoredResourceDescriptor_LaunchStage_Beta
   *        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. (Value: "BETA")
   *    @arg @c kGTLRServiceConsumerManagement_MonitoredResourceDescriptor_LaunchStage_Deprecated
   *        Deprecated features are scheduled to be shut down and removed. For
   *        more information, see the “Deprecation Policy” section of our [Terms
   *        of Service](https://cloud.google.com/terms/) and the [Google Cloud
   *        Platform Subject to the Deprecation
   *        Policy](https://cloud.google.com/terms/deprecation) documentation.
   *        (Value: "DEPRECATED")
   *    @arg @c kGTLRServiceConsumerManagement_MonitoredResourceDescriptor_LaunchStage_EarlyAccess
   *        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. (Value: "EARLY_ACCESS")
   *    @arg @c kGTLRServiceConsumerManagement_MonitoredResourceDescriptor_LaunchStage_Ga
   *        GA features are open to all developers and are considered stable and
   *        fully qualified for production use. (Value: "GA")
   *    @arg @c kGTLRServiceConsumerManagement_MonitoredResourceDescriptor_LaunchStage_LaunchStageUnspecified
   *        Do not use this default value. (Value: "LAUNCH_STAGE_UNSPECIFIED")
   *    @arg @c kGTLRServiceConsumerManagement_MonitoredResourceDescriptor_LaunchStage_Prelaunch
   *        Prelaunch features are hidden from users and are only visible
   *        internally. (Value: "PRELAUNCH")
   *    @arg @c kGTLRServiceConsumerManagement_MonitoredResourceDescriptor_LaunchStage_Unimplemented
   *        The feature is not yet implemented. Users can not use it. (Value:
   *        "UNIMPLEMENTED")
   */
  @property(nonatomic, copy, nullable) NSString *launchStage;
  
  /**
   *  Optional. The resource name of the monitored resource descriptor:
   *  `"projects/{project_id}/monitoredResourceDescriptors/{type}"` where {type}
   *  is the value of the `type` field in this object and {project_id} is a
   *  project ID that provides API-specific context for accessing the type. APIs
   *  that do not use project information can use the resource name format
   *  `"monitoredResourceDescriptors/{type}"`.
   */
  @property(nonatomic, copy, nullable) NSString *name;
  
  /**
   *  Required. The monitored resource type. For example, the type
   *  `"cloudsql_database"` represents databases in Google Cloud SQL. For a list
   *  of types, see [Monitoring resource
   *  types](https://cloud.google.com/monitoring/api/resources) and [Logging
   *  resource types](https://cloud.google.com/logging/docs/api/v2/resource-list).
   */
  @property(nonatomic, copy, nullable) NSString *type;
  
  @end
  
  
  /**
   *  Monitoring configuration of the service. The example below shows how to
   *  configure monitored resources and metrics for monitoring. In the example, a
   *  monitored resource and two metrics are defined. The
   *  `library.googleapis.com/book/returned_count` metric is sent to both producer
   *  and consumer projects, whereas the `library.googleapis.com/book/num_overdue`
   *  metric is only sent to the consumer project. monitored_resources: - type:
   *  library.googleapis.com/Branch display_name: "Library Branch" description: "A
   *  branch of a library." launch_stage: GA labels: - key: resource_container
   *  description: "The Cloud container (ie. project id) for the Branch." - key:
   *  location description: "The location of the library branch." - key: branch_id
   *  description: "The id of the branch." metrics: - name:
   *  library.googleapis.com/book/returned_count display_name: "Books Returned"
   *  description: "The count of books that have been returned." launch_stage: GA
   *  metric_kind: DELTA value_type: INT64 unit: "1" labels: - key: customer_id
   *  description: "The id of the customer." - name:
   *  library.googleapis.com/book/num_overdue display_name: "Books Overdue"
   *  description: "The current number of overdue books." launch_stage: GA
   *  metric_kind: GAUGE value_type: INT64 unit: "1" labels: - key: customer_id
   *  description: "The id of the customer." monitoring: producer_destinations: -
   *  monitored_resource: library.googleapis.com/Branch metrics: -
   *  library.googleapis.com/book/returned_count consumer_destinations: -
   *  monitored_resource: library.googleapis.com/Branch metrics: -
   *  library.googleapis.com/book/returned_count -
   *  library.googleapis.com/book/num_overdue
   */
  @interface GTLRServiceConsumerManagement_Monitoring : GTLRObject
  
  /**
   *  Monitoring configurations for sending metrics to the consumer project. There
   *  can be multiple consumer destinations. A monitored resource type may appear
   *  in multiple monitoring destinations if different aggregations are needed for
   *  different sets of metrics associated with that monitored resource type. A
   *  monitored resource and metric pair may only be used once in the Monitoring
   *  configuration.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_MonitoringDestination *> *consumerDestinations;
  
  /**
   *  Monitoring configurations for sending metrics to the producer project. There
   *  can be multiple producer destinations. A monitored resource type may appear
   *  in multiple monitoring destinations if different aggregations are needed for
   *  different sets of metrics associated with that monitored resource type. A
   *  monitored resource and metric pair may only be used once in the Monitoring
   *  configuration.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_MonitoringDestination *> *producerDestinations;
  
  @end
  
  
  /**
   *  Configuration of a specific monitoring destination (the producer project or
   *  the consumer project).
   */
  @interface GTLRServiceConsumerManagement_MonitoringDestination : GTLRObject
  
  /**
   *  Types of the metrics to report to this monitoring destination. Each type
   *  must be defined in Service.metrics section.
   */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *metrics;
  
  /**
   *  The monitored resource type. The type must be defined in
   *  Service.monitored_resources section.
   */
  @property(nonatomic, copy, nullable) NSString *monitoredResource;
  
  @end
  
  
  /**
   *  OAuth scopes are a way to define data and permissions on data. For example,
   *  there are scopes defined for "Read-only access to Google Calendar" and
   *  "Access to Cloud Platform". Users can consent to a scope for an application,
   *  giving it permission to access that data on their behalf. OAuth scope
   *  specifications should be fairly coarse grained; a user will need to see and
   *  understand the text description of what your scope means. In most cases: use
   *  one or at most two OAuth scopes for an entire family of products. If your
   *  product has multiple APIs, you should probably be sharing the OAuth scope
   *  across all of those APIs. When you need finer grained OAuth consent screens:
   *  talk with your product management about how developers will use them in
   *  practice. Please note that even though each of the canonical scopes is
   *  enough for a request to be accepted and passed to the backend, a request can
   *  still fail due to the backend requiring additional scopes or permissions.
   */
  @interface GTLRServiceConsumerManagement_OAuthRequirements : GTLRObject
  
  /**
   *  The list of publicly documented OAuth scopes that are allowed access. An
   *  OAuth token containing any of these scopes will be accepted. Example:
   *  canonical_scopes: https://www.googleapis.com/auth/calendar,
   *  https://www.googleapis.com/auth/calendar.read
   */
  @property(nonatomic, copy, nullable) NSString *canonicalScopes;
  
  @end
  
  
  /**
   *  This resource represents a long-running operation that is the result of a
   *  network API call.
   */
  @interface GTLRServiceConsumerManagement_Operation : GTLRObject
  
  /**
   *  If the value is `false`, it means the operation is still in progress. If
   *  `true`, the operation is completed, and either `error` or `response` is
   *  available.
   *
   *  Uses NSNumber of boolValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *done;
  
  /** The error result of the operation in case of failure or cancellation. */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_Status *error;
  
  /**
   *  Service-specific metadata associated with the operation. It typically
   *  contains progress information and common metadata such as create time. Some
   *  services might not provide such metadata. Any method that returns a
   *  long-running operation should document the metadata type, if any.
   */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_Operation_Metadata *metadata;
  
  /**
   *  The server-assigned name, which is only unique within the same service that
   *  originally returns it. If you use the default HTTP mapping, the `name`
   *  should be a resource name ending with `operations/{unique_id}`.
   */
  @property(nonatomic, copy, nullable) NSString *name;
  
  /**
   *  The normal response of the operation in case of success. If the original
   *  method returns no data on success, such as `Delete`, the response is
   *  `google.protobuf.Empty`. If the original method is standard
   *  `Get`/`Create`/`Update`, the response should be the resource. For other
   *  methods, the response should have the type `XxxResponse`, where `Xxx` is the
   *  original method name. For example, if the original method name is
   *  `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
   */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_Operation_Response *response;
  
  @end
  
  
  /**
   *  Service-specific metadata associated with the operation. It typically
   *  contains progress information and common metadata such as create time. Some
   *  services might not provide such metadata. Any method that returns a
   *  long-running operation should document the metadata type, if any.
   *
   *  @note This class is documented as having more properties of any valid JSON
   *        type. Use @c -additionalJSONKeys and @c -additionalPropertyForName: to
   *        get the list of properties and then fetch them; or @c
   *        -additionalProperties to fetch them all at once.
   */
  @interface GTLRServiceConsumerManagement_Operation_Metadata : GTLRObject
  @end
  
  
  /**
   *  The normal response of the operation in case of success. If the original
   *  method returns no data on success, such as `Delete`, the response is
   *  `google.protobuf.Empty`. If the original method is standard
   *  `Get`/`Create`/`Update`, the response should be the resource. For other
   *  methods, the response should have the type `XxxResponse`, where `Xxx` is the
   *  original method name. For example, if the original method name is
   *  `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
   *
   *  @note This class is documented as having more properties of any valid JSON
   *        type. Use @c -additionalJSONKeys and @c -additionalPropertyForName: to
   *        get the list of properties and then fetch them; or @c
   *        -additionalProperties to fetch them all at once.
   */
  @interface GTLRServiceConsumerManagement_Operation_Response : GTLRObject
  @end
  
  
  /**
   *  A protocol buffer option, which can be attached to a message, field,
   *  enumeration, etc.
   */
  @interface GTLRServiceConsumerManagement_Option : GTLRObject
  
  /**
   *  The option's name. For protobuf built-in options (options defined in
   *  descriptor.proto), this is the short name. For example, `"map_entry"`. For
   *  custom options, it should be the fully-qualified name. For example,
   *  `"google.api.http"`.
   */
  @property(nonatomic, copy, nullable) NSString *name;
  
  /**
   *  The option's value packed in an Any message. If the value is a primitive,
   *  the corresponding wrapper type defined in google/protobuf/wrappers.proto
   *  should be used. If the value is an enum, it should be stored as an int32
   *  value using the google.protobuf.Int32Value type.
   */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_Option_Value *value;
  
  @end
  
  
  /**
   *  The option's value packed in an Any message. If the value is a primitive,
   *  the corresponding wrapper type defined in google/protobuf/wrappers.proto
   *  should be used. If the value is an enum, it should be stored as an int32
   *  value using the google.protobuf.Int32Value type.
   *
   *  @note This class is documented as having more properties of any valid JSON
   *        type. Use @c -additionalJSONKeys and @c -additionalPropertyForName: to
   *        get the list of properties and then fetch them; or @c
   *        -additionalProperties to fetch them all at once.
   */
  @interface GTLRServiceConsumerManagement_Option_Value : GTLRObject
  @end
  
  
  /**
   *  Represents a documentation page. A page can contain subpages to represent
   *  nested documentation set structure.
   */
  @interface GTLRServiceConsumerManagement_Page : GTLRObject
  
  /**
   *  The Markdown content of the page. You can use (== include {path} ==) to
   *  include content from a Markdown file. The content can be used to produce the
   *  documentation page such as HTML format page.
   */
  @property(nonatomic, copy, nullable) NSString *content;
  
  /**
   *  The name of the page. It will be used as an identity of the page to generate
   *  URI of the page, text of the link to this page in navigation, etc. The full
   *  page name (start from the root page name to this page concatenated with `.`)
   *  can be used as reference to the page in your documentation. For example:
   *  pages: - name: Tutorial content: (== include tutorial.md ==) subpages: -
   *  name: Java content: (== include tutorial_java.md ==) You can reference
   *  `Java` page using Markdown reference link syntax: `Java`.
   */
  @property(nonatomic, copy, nullable) NSString *name;
  
  /**
   *  Subpages of this page. The order of subpages specified here will be honored
   *  in the generated docset.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_Page *> *subpages;
  
  @end
  
  
  /**
   *  Translates to IAM Policy bindings (without auditing at this level)
   */
  @interface GTLRServiceConsumerManagement_PolicyBinding : GTLRObject
  
  /**
   *  Uses the same format as in IAM policy. `member` must include both a prefix
   *  and ID. For example, `user:{emailId}`, `serviceAccount:{emailId}`,
   *  `group:{emailId}`.
   */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *members;
  
  /**
   *  Role. (https://cloud.google.com/iam/docs/understanding-roles) For example,
   *  `roles/viewer`, `roles/editor`, or `roles/owner`.
   */
  @property(nonatomic, copy, nullable) NSString *role;
  
  @end
  
  
  /**
   *  Quota configuration helps to achieve fairness and budgeting in service
   *  usage. The metric based quota configuration works this way: - The service
   *  configuration defines a set of metrics. - For API calls, the
   *  quota.metric_rules maps methods to metrics with corresponding costs. - The
   *  quota.limits defines limits on the metrics, which will be used for quota
   *  checks at runtime. An example quota configuration in yaml format: quota:
   *  limits: - name: apiWriteQpsPerProject metric:
   *  library.googleapis.com/write_calls unit: "1/min/{project}" # rate limit for
   *  consumer projects values: STANDARD: 10000 # The metric rules bind all
   *  methods to the read_calls metric, # except for the UpdateBook and DeleteBook
   *  methods. These two methods # are mapped to the write_calls metric, with the
   *  UpdateBook method # consuming at twice rate as the DeleteBook method.
   *  metric_rules: - selector: "*" metric_costs:
   *  library.googleapis.com/read_calls: 1 - selector:
   *  google.example.library.v1.LibraryService.UpdateBook metric_costs:
   *  library.googleapis.com/write_calls: 2 - selector:
   *  google.example.library.v1.LibraryService.DeleteBook metric_costs:
   *  library.googleapis.com/write_calls: 1 Corresponding Metric definition:
   *  metrics: - name: library.googleapis.com/read_calls display_name: Read
   *  requests metric_kind: DELTA value_type: INT64 - name:
   *  library.googleapis.com/write_calls display_name: Write requests metric_kind:
   *  DELTA value_type: INT64
   */
  @interface GTLRServiceConsumerManagement_Quota : GTLRObject
  
  /** List of `QuotaLimit` definitions for the service. */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_QuotaLimit *> *limits;
  
  /**
   *  List of `MetricRule` definitions, each one mapping a selected method to one
   *  or more metrics.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_MetricRule *> *metricRules;
  
  @end
  
  
  /**
   *  `QuotaLimit` defines a specific limit that applies over a specified duration
   *  for a limit type. There can be at most one limit for a duration and limit
   *  type combination defined within a `QuotaGroup`.
   */
  @interface GTLRServiceConsumerManagement_QuotaLimit : GTLRObject
  
  /**
   *  Default number of tokens that can be consumed during the specified duration.
   *  This is the number of tokens assigned when a client application developer
   *  activates the service for his/her project. Specifying a value of 0 will
   *  block all requests. This can be used if you are provisioning quota to
   *  selected consumers and blocking others. Similarly, a value of -1 will
   *  indicate an unlimited quota. No other negative values are allowed. Used by
   *  group-based quotas only.
   *
   *  Uses NSNumber of longLongValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *defaultLimit;
  
  /**
   *  Optional. User-visible, extended description for this quota limit. Should be
   *  used only when more context is needed to understand this limit than provided
   *  by the limit's display name (see: `display_name`).
   *
   *  Remapped to 'descriptionProperty' to avoid NSObject's 'description'.
   */
  @property(nonatomic, copy, nullable) NSString *descriptionProperty;
  
  /**
   *  User-visible display name for this limit. Optional. If not set, the UI will
   *  provide a default display name based on the quota configuration. This field
   *  can be used to override the default display name generated from the
   *  configuration.
   */
  @property(nonatomic, copy, nullable) NSString *displayName;
  
  /**
   *  Duration of this limit in textual notation. Must be "100s" or "1d". Used by
   *  group-based quotas only.
   */
  @property(nonatomic, copy, nullable) NSString *duration;
  
  /**
   *  Free tier value displayed in the Developers Console for this limit. The free
   *  tier is the number of tokens that will be subtracted from the billed amount
   *  when billing is enabled. This field can only be set on a limit with duration
   *  "1d", in a billable group; it is invalid on any other limit. If this field
   *  is not set, it defaults to 0, indicating that there is no free tier for this
   *  service. Used by group-based quotas only.
   *
   *  Uses NSNumber of longLongValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *freeTier;
  
  /**
   *  Maximum number of tokens that can be consumed during the specified duration.
   *  Client application developers can override the default limit up to this
   *  maximum. If specified, this value cannot be set to a value less than the
   *  default limit. If not specified, it is set to the default limit. To allow
   *  clients to apply overrides with no upper bound, set this to -1, indicating
   *  unlimited maximum quota. Used by group-based quotas only.
   *
   *  Uses NSNumber of longLongValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *maxLimit;
  
  /**
   *  The name of the metric this quota limit applies to. The quota limits with
   *  the same metric will be checked together during runtime. The metric must be
   *  defined within the service config.
   */
  @property(nonatomic, copy, nullable) NSString *metric;
  
  /**
   *  Name of the quota limit. The name must be provided, and it must be unique
   *  within the service. The name can only include alphanumeric characters as
   *  well as '-'. The maximum length of the limit name is 64 characters.
   */
  @property(nonatomic, copy, nullable) NSString *name;
  
  /**
   *  Specify the unit of the quota limit. It uses the same syntax as Metric.unit.
   *  The supported unit kinds are determined by the quota backend system. Here
   *  are some examples: * "1/min/{project}" for quota per minute per project.
   *  Note: the order of unit components is insignificant. The "1" at the
   *  beginning is required to follow the metric unit syntax.
   */
  @property(nonatomic, copy, nullable) NSString *unit;
  
  /**
   *  Tiered limit values. You must specify this as a key:value pair, with an
   *  integer value that is the maximum number of requests allowed for the
   *  specified unit. Currently only STANDARD is supported.
   */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_QuotaLimit_Values *values;
  
  @end
  
  
  /**
   *  Tiered limit values. You must specify this as a key:value pair, with an
   *  integer value that is the maximum number of requests allowed for the
   *  specified unit. Currently only STANDARD is supported.
   *
   *  @note This class is documented as having more properties of NSNumber (Uses
   *        NSNumber of longLongValue.). Use @c -additionalJSONKeys and @c
   *        -additionalPropertyForName: to get the list of properties and then
   *        fetch them; or @c -additionalProperties to fetch them all at once.
   */
  @interface GTLRServiceConsumerManagement_QuotaLimit_Values : GTLRObject
  @end
  
  
  /**
   *  Request message to remove a tenant project resource from the tenancy unit.
   */
  @interface GTLRServiceConsumerManagement_RemoveTenantProjectRequest : GTLRObject
  
  /** Required. Tag of the resource within the tenancy unit. */
  @property(nonatomic, copy, nullable) NSString *tag;
  
  @end
  
  
  /**
   *  Response for the search query.
   *
   *  @note This class supports NSFastEnumeration and indexed subscripting over
   *        its "tenancyUnits" property. If returned as the result of a query, it
   *        should support automatic pagination (when @c shouldFetchNextPages is
   *        enabled).
   */
  @interface GTLRServiceConsumerManagement_SearchTenancyUnitsResponse : GTLRCollectionObject
  
  /** Pagination token for large results. */
  @property(nonatomic, copy, nullable) NSString *nextPageToken;
  
  /**
   *  Tenancy Units matching the request.
   *
   *  @note This property is used to support NSFastEnumeration and indexed
   *        subscripting on this class.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_TenancyUnit *> *tenancyUnits;
  
  @end
  
  
  /**
   *  `Service` is the root object of Google API service configuration (service
   *  config). It describes the basic information about a logical service, such as
   *  the service name and the user-facing title, and delegates other aspects to
   *  sub-sections. Each sub-section is either a proto message or a repeated proto
   *  message that configures a specific aspect, such as auth. For more
   *  information, see each proto message definition. Example: type:
   *  google.api.Service name: calendar.googleapis.com title: Google Calendar API
   *  apis: - name: google.calendar.v3.Calendar visibility: rules: - selector:
   *  "google.calendar.v3.*" restriction: PREVIEW backend: rules: - selector:
   *  "google.calendar.v3.*" address: calendar.example.com authentication:
   *  providers: - id: google_calendar_auth jwks_uri:
   *  https://www.googleapis.com/oauth2/v1/certs issuer:
   *  https://securetoken.google.com rules: - selector: "*" requirements:
   *  provider_id: google_calendar_auth
   */
  @interface GTLRServiceConsumerManagement_Service : GTLRObject
  
  /**
   *  A list of API interfaces exported by this service. Only the `name` field of
   *  the google.protobuf.Api needs to be provided by the configuration author, as
   *  the remaining fields will be derived from the IDL during the normalization
   *  process. It is an error to specify an API interface here which cannot be
   *  resolved against the associated IDL files.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_Api *> *apis;
  
  /** Auth configuration. */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_Authentication *authentication;
  
  /** API backend configuration. */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_Backend *backend;
  
  /** Billing configuration. */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_Billing *billing;
  
  /**
   *  Obsolete. Do not use. This field has no semantic meaning. The service config
   *  compiler always sets this field to `3`.
   *
   *  Uses NSNumber of unsignedIntValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *configVersion;
  
  /** Context configuration. */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_Context *context;
  
  /** Configuration for the service control plane. */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_Control *control;
  
  /** Custom error configuration. */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_CustomError *customError;
  
  /** Additional API documentation. */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_Documentation *documentation;
  
  /**
   *  Configuration for network endpoints. If this is empty, then an endpoint with
   *  the same name as the service is automatically generated to service all
   *  defined APIs.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_Endpoint *> *endpoints;
  
  /**
   *  A list of all enum types included in this API service. Enums referenced
   *  directly or indirectly by the `apis` are automatically included. Enums which
   *  are not referenced but shall be included should be listed here by name by
   *  the configuration author. Example: enums: - name: google.someapi.v1.SomeEnum
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_Enum *> *enums;
  
  /** HTTP configuration. */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_Http *http;
  
  /**
   *  A unique ID for a specific instance of this message, typically assigned by
   *  the client for tracking purpose. Must be no longer than 63 characters and
   *  only lower case letters, digits, '.', '_' and '-' are allowed. If empty, the
   *  server may choose to generate one instead.
   *
   *  identifier property maps to 'id' in JSON (to avoid Objective C's 'id').
   */
  @property(nonatomic, copy, nullable) NSString *identifier;
  
  /** Logging configuration. */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_Logging *logging;
  
  /** Defines the logs used by this service. */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_LogDescriptor *> *logs;
  
  /** Defines the metrics used by this service. */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_MetricDescriptor *> *metrics;
  
  /**
   *  Defines the monitored resources used by this service. This is required by
   *  the Service.monitoring and Service.logging configurations.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_MonitoredResourceDescriptor *> *monitoredResources;
  
  /** Monitoring configuration. */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_Monitoring *monitoring;
  
  /**
   *  The service name, which is a DNS-like logical identifier for the service,
   *  such as `calendar.googleapis.com`. The service name typically goes through
   *  DNS verification to make sure the owner of the service also owns the DNS
   *  name.
   */
  @property(nonatomic, copy, nullable) NSString *name;
  
  /** The Google project that owns this service. */
  @property(nonatomic, copy, nullable) NSString *producerProjectId;
  
  /** Quota configuration. */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_Quota *quota;
  
  /**
   *  Output only. The source information for this configuration if available.
   */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_SourceInfo *sourceInfo;
  
  /** System parameter configuration. */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_SystemParameters *systemParameters;
  
  /**
   *  A list of all proto message types included in this API service. It serves
   *  similar purpose as [google.api.Service.types], except that these types are
   *  not needed by user-defined APIs. Therefore, they will not show up in the
   *  generated discovery doc. This field should only be used to define system
   *  APIs in ESF.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_Type *> *systemTypes;
  
  /**
   *  The product title for this service, it is the name displayed in Google Cloud
   *  Console.
   */
  @property(nonatomic, copy, nullable) NSString *title;
  
  /**
   *  A list of all proto message types included in this API service. Types
   *  referenced directly or indirectly by the `apis` are automatically included.
   *  Messages which are not referenced but shall be included, such as types used
   *  by the `google.protobuf.Any` type, should be listed here by name by the
   *  configuration author. Example: types: - name: google.protobuf.Int32
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_Type *> *types;
  
  /** Configuration controlling usage of this service. */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_Usage *usage;
  
  @end
  
  
  /**
   *  Describes the service account configuration for the tenant project.
   */
  @interface GTLRServiceConsumerManagement_ServiceAccountConfig : GTLRObject
  
  /**
   *  ID of the IAM service account to be created in tenant project. The email
   *  format of the service account is "\@.iam.gserviceaccount.com". This account
   *  ID must be unique within tenant project and service producers have to
   *  guarantee it. The ID must be 6-30 characters long, and match the following
   *  regular expression: `[a-z]([-a-z0-9]*[a-z0-9])`.
   */
  @property(nonatomic, copy, nullable) NSString *accountId;
  
  /** Roles for the associated service account for the tenant project. */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *tenantProjectRoles;
  
  @end
  
  
  /**
   *  `SourceContext` represents information about the source of a protobuf
   *  element, like the file in which it is defined.
   */
  @interface GTLRServiceConsumerManagement_SourceContext : GTLRObject
  
  /**
   *  The path-qualified name of the .proto file that contained the associated
   *  protobuf element. For example: `"google/protobuf/source_context.proto"`.
   */
  @property(nonatomic, copy, nullable) NSString *fileName;
  
  @end
  
  
  /**
   *  Source information used to create a Service Config
   */
  @interface GTLRServiceConsumerManagement_SourceInfo : GTLRObject
  
  /** All files used during config generation. */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_SourceInfo_SourceFiles_Item *> *sourceFiles;
  
  @end
  
  
  /**
   *  GTLRServiceConsumerManagement_SourceInfo_SourceFiles_Item
   *
   *  @note This class is documented as having more properties of any valid JSON
   *        type. Use @c -additionalJSONKeys and @c -additionalPropertyForName: to
   *        get the list of properties and then fetch them; or @c
   *        -additionalProperties to fetch them all at once.
   */
  @interface GTLRServiceConsumerManagement_SourceInfo_SourceFiles_Item : GTLRObject
  @end
  
  
  /**
   *  The `Status` type defines a logical error model that is suitable for
   *  different programming environments, including REST APIs and RPC APIs. It is
   *  used by [gRPC](https://github.com/grpc). Each `Status` message contains
   *  three pieces of data: error code, error message, and error details. You can
   *  find out more about this error model and how to work with it in the [API
   *  Design Guide](https://cloud.google.com/apis/design/errors).
   */
  @interface GTLRServiceConsumerManagement_Status : GTLRObject
  
  /**
   *  The status code, which should be an enum value of google.rpc.Code.
   *
   *  Uses NSNumber of intValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *code;
  
  /**
   *  A list of messages that carry the error details. There is a common set of
   *  message types for APIs to use.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_Status_Details_Item *> *details;
  
  /**
   *  A developer-facing error message, which should be in English. Any
   *  user-facing error message should be localized and sent in the
   *  google.rpc.Status.details field, or localized by the client.
   */
  @property(nonatomic, copy, nullable) NSString *message;
  
  @end
  
  
  /**
   *  GTLRServiceConsumerManagement_Status_Details_Item
   *
   *  @note This class is documented as having more properties of any valid JSON
   *        type. Use @c -additionalJSONKeys and @c -additionalPropertyForName: to
   *        get the list of properties and then fetch them; or @c
   *        -additionalProperties to fetch them all at once.
   */
  @interface GTLRServiceConsumerManagement_Status_Details_Item : GTLRObject
  @end
  
  
  /**
   *  Define a parameter's name and location. The parameter may be passed as
   *  either an HTTP header or a URL query parameter, and if both are passed the
   *  behavior is implementation-dependent.
   */
  @interface GTLRServiceConsumerManagement_SystemParameter : GTLRObject
  
  /**
   *  Define the HTTP header name to use for the parameter. It is case
   *  insensitive.
   */
  @property(nonatomic, copy, nullable) NSString *httpHeader;
  
  /**
   *  Define the name of the parameter, such as "api_key" . It is case sensitive.
   */
  @property(nonatomic, copy, nullable) NSString *name;
  
  /**
   *  Define the URL query parameter name to use for the parameter. It is case
   *  sensitive.
   */
  @property(nonatomic, copy, nullable) NSString *urlQueryParameter;
  
  @end
  
  
  /**
   *  Define a system parameter rule mapping system parameter definitions to
   *  methods.
   */
  @interface GTLRServiceConsumerManagement_SystemParameterRule : GTLRObject
  
  /**
   *  Define parameters. Multiple names may be defined for a parameter. For a
   *  given method call, only one of them should be used. If multiple names are
   *  used the behavior is implementation-dependent. If none of the specified
   *  names are present the behavior is parameter-dependent.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_SystemParameter *> *parameters;
  
  /**
   *  Selects the methods to which this rule applies. Use '*' to indicate all
   *  methods in all APIs. Refer to selector for syntax details.
   */
  @property(nonatomic, copy, nullable) NSString *selector;
  
  @end
  
  
  /**
   *  ### System parameter configuration A system parameter is a special kind of
   *  parameter defined by the API system, not by an individual API. It is
   *  typically mapped to an HTTP header and/or a URL query parameter. This
   *  configuration specifies which methods change the names of the system
   *  parameters.
   */
  @interface GTLRServiceConsumerManagement_SystemParameters : GTLRObject
  
  /**
   *  Define system parameters. The parameters defined here will override the
   *  default parameters implemented by the system. If this field is missing from
   *  the service config, default system parameters will be used. Default system
   *  parameters and names is implementation-dependent. Example: define api key
   *  for all methods system_parameters rules: - selector: "*" parameters: - name:
   *  api_key url_query_parameter: api_key Example: define 2 api key names for a
   *  specific method. system_parameters rules: - selector: "/ListShelves"
   *  parameters: - name: api_key http_header: Api-Key1 - name: api_key
   *  http_header: Api-Key2 **NOTE:** All service configuration rules follow "last
   *  one wins" order.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_SystemParameterRule *> *rules;
  
  @end
  
  
  /**
   *  Representation of a tenancy unit.
   */
  @interface GTLRServiceConsumerManagement_TenancyUnit : GTLRObject
  
  /**
   *  Output only. \@OutputOnly Cloud resource name of the consumer of this
   *  service. For example 'projects/123456'.
   */
  @property(nonatomic, copy, nullable) NSString *consumer;
  
  /** Output only. \@OutputOnly The time this tenancy unit was created. */
  @property(nonatomic, strong, nullable) GTLRDateTime *createTime;
  
  /**
   *  Globally unique identifier of this tenancy unit
   *  "services/{service}/{collection id}/{resource id}/tenancyUnits/{unit}"
   */
  @property(nonatomic, copy, nullable) NSString *name;
  
  /**
   *  Output only. Google Cloud API name of the managed service owning this
   *  tenancy unit. For example 'serviceconsumermanagement.googleapis.com'.
   */
  @property(nonatomic, copy, nullable) NSString *service;
  
  /**
   *  Resources constituting the tenancy unit. There can be at most 512 tenant
   *  resources in a tenancy unit.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_TenantResource *> *tenantResources;
  
  @end
  
  
  /**
   *  This structure defines a tenant project to be added to the specified tenancy
   *  unit and its initial configuration and properties. A project lien is created
   *  for the tenant project to prevent the tenant project from being deleted
   *  accidentally. The lien is deleted as part of tenant project removal.
   */
  @interface GTLRServiceConsumerManagement_TenantProjectConfig : GTLRObject
  
  /** Billing account properties. The billing account must be specified. */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_BillingConfig *billingConfig;
  
  /**
   *  Folder where project in this tenancy unit must be located This folder must
   *  have been previously created with the required permissions for the caller to
   *  create and configure a project in it. Valid folder resource names have the
   *  format `folders/{folder_number}` (for example, `folders/123456`).
   */
  @property(nonatomic, copy, nullable) NSString *folder;
  
  /** Labels that are applied to this project. */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_TenantProjectConfig_Labels *labels;
  
  /** Configuration for the IAM service account on the tenant project. */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_ServiceAccountConfig *serviceAccountConfig;
  
  /**
   *  Google Cloud API names of services that are activated on this project during
   *  provisioning. If any of these services can't be activated, the request
   *  fails. For example: 'compute.googleapis.com','cloudfunctions.googleapis.com'
   */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *services;
  
  /** Describes ownership and policies for the new tenant project. Required. */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_TenantProjectPolicy *tenantProjectPolicy;
  
  @end
  
  
  /**
   *  Labels that are applied to this project.
   *
   *  @note This class is documented as having more properties of NSString. Use @c
   *        -additionalJSONKeys and @c -additionalPropertyForName: to get the list
   *        of properties and then fetch them; or @c -additionalProperties to
   *        fetch them all at once.
   */
  @interface GTLRServiceConsumerManagement_TenantProjectConfig_Labels : GTLRObject
  @end
  
  
  /**
   *  Describes policy settings that need to be applied to a newly created tenant
   *  project.
   */
  @interface GTLRServiceConsumerManagement_TenantProjectPolicy : GTLRObject
  
  /**
   *  Policy bindings to be applied to the tenant project, in addition to the
   *  'roles/owner' role granted to the Service Consumer Management service
   *  account. At least one binding must have the role `roles/owner`.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_PolicyBinding *> *policyBindings;
  
  @end
  
  
  /**
   *  Resource constituting the TenancyUnit.
   */
  @interface GTLRServiceConsumerManagement_TenantResource : GTLRObject
  
  /**
   *  Output only. \@OutputOnly Identifier of the tenant resource. For cloud
   *  projects, it is in the form 'projects/{number}'. For example
   *  'projects/123456'.
   */
  @property(nonatomic, copy, nullable) NSString *resource;
  
  /**
   *  Status of tenant resource.
   *
   *  Likely values:
   *    @arg @c kGTLRServiceConsumerManagement_TenantResource_Status_Active Active
   *        resource. (Value: "ACTIVE")
   *    @arg @c kGTLRServiceConsumerManagement_TenantResource_Status_Deleted
   *        Tenant resource has been deleted. (Value: "DELETED")
   *    @arg @c kGTLRServiceConsumerManagement_TenantResource_Status_Failed Tenant
   *        resource creation or deletion has failed. (Value: "FAILED")
   *    @arg @c kGTLRServiceConsumerManagement_TenantResource_Status_PendingCreate
   *        Creation of the tenant resource is ongoing. (Value: "PENDING_CREATE")
   *    @arg @c kGTLRServiceConsumerManagement_TenantResource_Status_PendingDelete
   *        Deletion of the resource is ongoing. (Value: "PENDING_DELETE")
   *    @arg @c kGTLRServiceConsumerManagement_TenantResource_Status_StatusUnspecified
   *        Unspecified status is the default unset value. (Value:
   *        "STATUS_UNSPECIFIED")
   */
  @property(nonatomic, copy, nullable) NSString *status;
  
  /** Unique per single tenancy unit. */
  @property(nonatomic, copy, nullable) NSString *tag;
  
  @end
  
  
  /**
   *  A protocol buffer message type.
   */
  @interface GTLRServiceConsumerManagement_Type : GTLRObject
  
  /** The list of fields. */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_Field *> *fields;
  
  /** The fully qualified message name. */
  @property(nonatomic, copy, nullable) NSString *name;
  
  /** The list of types appearing in `oneof` definitions in this type. */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *oneofs;
  
  /** The protocol buffer options. */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_Option *> *options;
  
  /** The source context. */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_SourceContext *sourceContext;
  
  /**
   *  The source syntax.
   *
   *  Likely values:
   *    @arg @c kGTLRServiceConsumerManagement_Type_Syntax_SyntaxProto2 Syntax
   *        `proto2`. (Value: "SYNTAX_PROTO2")
   *    @arg @c kGTLRServiceConsumerManagement_Type_Syntax_SyntaxProto3 Syntax
   *        `proto3`. (Value: "SYNTAX_PROTO3")
   */
  @property(nonatomic, copy, nullable) NSString *syntax;
  
  @end
  
  
  /**
   *  Request message to undelete tenant project resource previously deleted from
   *  the tenancy unit.
   */
  @interface GTLRServiceConsumerManagement_UndeleteTenantProjectRequest : GTLRObject
  
  /** Required. Tag of the resource within the tenancy unit. */
  @property(nonatomic, copy, nullable) NSString *tag;
  
  @end
  
  
  /**
   *  Configuration controlling usage of a service.
   */
  @interface GTLRServiceConsumerManagement_Usage : GTLRObject
  
  /**
   *  The full resource name of a channel used for sending notifications to the
   *  service producer. Google Service Management currently only supports [Google
   *  Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification channel.
   *  To use Google Cloud Pub/Sub as the channel, this must be the name of a Cloud
   *  Pub/Sub topic that uses the Cloud Pub/Sub topic name format documented in
   *  https://cloud.google.com/pubsub/docs/overview.
   */
  @property(nonatomic, copy, nullable) NSString *producerNotificationChannel;
  
  /**
   *  Requirements that must be satisfied before a consumer project can use the
   *  service. Each requirement is of the form /; for example
   *  'serviceusage.googleapis.com/billing-enabled'. For Google APIs, a Terms of
   *  Service requirement must be included here. Google Cloud APIs must include
   *  "serviceusage.googleapis.com/tos/cloud". Other Google APIs should include
   *  "serviceusage.googleapis.com/tos/universal". Additional ToS can be included
   *  based on the business needs.
   */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *requirements;
  
  /**
   *  A list of usage rules that apply to individual API methods. **NOTE:** All
   *  service configuration rules follow "last one wins" order.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_UsageRule *> *rules;
  
  @end
  
  
  /**
   *  Usage configuration rules for the service. NOTE: Under development. Use this
   *  rule to configure unregistered calls for the service. Unregistered calls are
   *  calls that do not contain consumer project identity. (Example: calls that do
   *  not contain an API key). By default, API methods do not allow unregistered
   *  calls, and each method call must be identified by a consumer project
   *  identity. Use this rule to allow/disallow unregistered calls. Example of an
   *  API that wants to allow unregistered calls for entire service. usage: rules:
   *  - selector: "*" allow_unregistered_calls: true Example of a method that
   *  wants to allow unregistered calls. usage: rules: - selector:
   *  "google.example.library.v1.LibraryService.CreateBook"
   *  allow_unregistered_calls: true
   */
  @interface GTLRServiceConsumerManagement_UsageRule : GTLRObject
  
  /**
   *  If true, the selected method allows unregistered calls, e.g. calls that
   *  don't identify any user or application.
   *
   *  Uses NSNumber of boolValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *allowUnregisteredCalls;
  
  /**
   *  Selects the methods to which this rule applies. Use '*' to indicate all
   *  methods in all APIs. Refer to selector for syntax details.
   */
  @property(nonatomic, copy, nullable) NSString *selector;
  
  /**
   *  If true, the selected method should skip service control and the control
   *  plane features, such as quota and billing, will not be available. This flag
   *  is used by Google Cloud Endpoints to bypass checks for internal methods,
   *  such as service health check methods.
   *
   *  Uses NSNumber of boolValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *skipServiceControl;
  
  @end
  
  
  /**
   *  Response message for the `AddVisibilityLabels` method. This response message
   *  is assigned to the `response` field of the returned Operation when that
   *  operation is done.
   */
  @interface GTLRServiceConsumerManagement_V1AddVisibilityLabelsResponse : GTLRObject
  
  /** The updated set of visibility labels for this consumer on this service. */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *labels;
  
  @end
  
  
  /**
   *  Response message for BatchCreateProducerOverrides
   */
  @interface GTLRServiceConsumerManagement_V1Beta1BatchCreateProducerOverridesResponse : GTLRObject
  
  /** The overrides that were created. */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_V1Beta1QuotaOverride *> *overrides;
  
  @end
  
  
  /**
   *  Response message for the `DisableConsumer` method. This response message is
   *  assigned to the `response` field of the returned Operation when that
   *  operation is done.
   */
  @interface GTLRServiceConsumerManagement_V1Beta1DisableConsumerResponse : GTLRObject
  @end
  
  
  /**
   *  Response message for the `EnableConsumer` method. This response message is
   *  assigned to the `response` field of the returned Operation when that
   *  operation is done.
   */
  @interface GTLRServiceConsumerManagement_V1Beta1EnableConsumerResponse : GTLRObject
  @end
  
  
  /**
   *  Response message for the `GenerateServiceIdentity` method. This response
   *  message is assigned to the `response` field of the returned Operation when
   *  that operation is done.
   */
  @interface GTLRServiceConsumerManagement_V1Beta1GenerateServiceIdentityResponse : GTLRObject
  
  /** ServiceIdentity that was created or retrieved. */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_V1Beta1ServiceIdentity *identity;
  
  @end
  
  
  /**
   *  Response message for ImportProducerOverrides
   */
  @interface GTLRServiceConsumerManagement_V1Beta1ImportProducerOverridesResponse : GTLRObject
  
  /** The overrides that were created from the imported data. */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_V1Beta1QuotaOverride *> *overrides;
  
  @end
  
  
  /**
   *  Response message for ImportProducerQuotaPolicies
   */
  @interface GTLRServiceConsumerManagement_V1Beta1ImportProducerQuotaPoliciesResponse : GTLRObject
  
  /** The policies that were created from the imported data. */
  @property(nonatomic, strong, nullable) NSArray<GTLRServiceConsumerManagement_V1Beta1ProducerQuotaPolicy *> *policies;
  
  @end
  
  
  /**
   *  Quota policy created by service producer.
   */
  @interface GTLRServiceConsumerManagement_V1Beta1ProducerQuotaPolicy : GTLRObject
  
  /**
   *  The cloud resource container at which the quota policy is created. The
   *  format is {container_type}/{container_number}
   */
  @property(nonatomic, copy, nullable) NSString *container;
  
  /**
   *  If this map is nonempty, then this policy applies only to specific values
   *  for dimensions defined in the limit unit. For example, an policy on a limit
   *  with the unit 1/{project}/{region} could contain an entry with the key
   *  "region" and the value "us-east-1"; the policy is only applied to quota
   *  consumed in that region. This map has the following restrictions: * Keys
   *  that are not defined in the limit's unit are not valid keys. Any string
   *  appearing in {brackets} in the unit (besides {project} or {user}) is a
   *  defined key. * "project" is not a valid key; the project is already
   *  specified in the parent resource name. * "user" is not a valid key; the API
   *  does not support quota polcies that apply only to a specific user. * If
   *  "region" appears as a key, its value must be a valid Cloud region. * If
   *  "zone" appears as a key, its value must be a valid Cloud zone. * If any
   *  valid key other than "region" or "zone" appears in the map, then all valid
   *  keys other than "region" or "zone" must also appear in the map.
   */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_V1Beta1ProducerQuotaPolicy_Dimensions *dimensions;
  
  /**
   *  The name of the metric to which this policy applies. An example name would
   *  be: `compute.googleapis.com/cpus`
   */
  @property(nonatomic, copy, nullable) NSString *metric;
  
  /**
   *  The resource name of the producer policy. An example name would be:
   *  `services/compute.googleapis.com/organizations/123/consumerQuotaMetrics/compute.googleapis.com%2Fcpus/limits/%2Fproject%2Fregion/producerQuotaPolicies/4a3f2c1d`
   */
  @property(nonatomic, copy, nullable) NSString *name;
  
  /**
   *  The quota policy value. Can be any nonnegative integer, or -1 (unlimited
   *  quota).
   *
   *  Uses NSNumber of longLongValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *policyValue;
  
  /**
   *  The limit unit of the limit to which this policy applies. An example unit
   *  would be: `1/{project}/{region}` Note that `{project}` and `{region}` are
   *  not placeholders in this example; the literal characters `{` and `}` occur
   *  in the string.
   */
  @property(nonatomic, copy, nullable) NSString *unit;
  
  @end
  
  
  /**
   *  If this map is nonempty, then this policy applies only to specific values
   *  for dimensions defined in the limit unit. For example, an policy on a limit
   *  with the unit 1/{project}/{region} could contain an entry with the key
   *  "region" and the value "us-east-1"; the policy is only applied to quota
   *  consumed in that region. This map has the following restrictions: * Keys
   *  that are not defined in the limit's unit are not valid keys. Any string
   *  appearing in {brackets} in the unit (besides {project} or {user}) is a
   *  defined key. * "project" is not a valid key; the project is already
   *  specified in the parent resource name. * "user" is not a valid key; the API
   *  does not support quota polcies that apply only to a specific user. * If
   *  "region" appears as a key, its value must be a valid Cloud region. * If
   *  "zone" appears as a key, its value must be a valid Cloud zone. * If any
   *  valid key other than "region" or "zone" appears in the map, then all valid
   *  keys other than "region" or "zone" must also appear in the map.
   *
   *  @note This class is documented as having more properties of NSString. Use @c
   *        -additionalJSONKeys and @c -additionalPropertyForName: to get the list
   *        of properties and then fetch them; or @c -additionalProperties to
   *        fetch them all at once.
   */
  @interface GTLRServiceConsumerManagement_V1Beta1ProducerQuotaPolicy_Dimensions : GTLRObject
  @end
  
  
  /**
   *  A quota override
   */
  @interface GTLRServiceConsumerManagement_V1Beta1QuotaOverride : GTLRObject
  
  /**
   *  The resource name of the ancestor that requested the override. For example:
   *  "organizations/12345" or "folders/67890". Used by admin overrides only.
   */
  @property(nonatomic, copy, nullable) NSString *adminOverrideAncestor;
  
  /**
   *  If this map is nonempty, then this override applies only to specific values
   *  for dimensions defined in the limit unit. For example, an override on a
   *  limit with the unit 1/{project}/{region} could contain an entry with the key
   *  "region" and the value "us-east-1"; the override is only applied to quota
   *  consumed in that region. This map has the following restrictions: * Keys
   *  that are not defined in the limit's unit are not valid keys. Any string
   *  appearing in {brackets} in the unit (besides {project} or {user}) is a
   *  defined key. * "project" is not a valid key; the project is already
   *  specified in the parent resource name. * "user" is not a valid key; the API
   *  does not support quota overrides that apply only to a specific user. * If
   *  "region" appears as a key, its value must be a valid Cloud region. * If
   *  "zone" appears as a key, its value must be a valid Cloud zone. * If any
   *  valid key other than "region" or "zone" appears in the map, then all valid
   *  keys other than "region" or "zone" must also appear in the map.
   */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_V1Beta1QuotaOverride_Dimensions *dimensions;
  
  /**
   *  The name of the metric to which this override applies. An example name would
   *  be: `compute.googleapis.com/cpus`
   */
  @property(nonatomic, copy, nullable) NSString *metric;
  
  /**
   *  The resource name of the producer override. An example name would be:
   *  `services/compute.googleapis.com/projects/123/consumerQuotaMetrics/compute.googleapis.com%2Fcpus/limits/%2Fproject%2Fregion/producerOverrides/4a3f2c1d`
   */
  @property(nonatomic, copy, nullable) NSString *name;
  
  /**
   *  The overriding quota limit value. Can be any nonnegative integer, or -1
   *  (unlimited quota).
   *
   *  Uses NSNumber of longLongValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *overrideValue;
  
  /**
   *  The limit unit of the limit to which this override applies. An example unit
   *  would be: `1/{project}/{region}` Note that `{project}` and `{region}` are
   *  not placeholders in this example; the literal characters `{` and `}` occur
   *  in the string.
   */
  @property(nonatomic, copy, nullable) NSString *unit;
  
  @end
  
  
  /**
   *  If this map is nonempty, then this override applies only to specific values
   *  for dimensions defined in the limit unit. For example, an override on a
   *  limit with the unit 1/{project}/{region} could contain an entry with the key
   *  "region" and the value "us-east-1"; the override is only applied to quota
   *  consumed in that region. This map has the following restrictions: * Keys
   *  that are not defined in the limit's unit are not valid keys. Any string
   *  appearing in {brackets} in the unit (besides {project} or {user}) is a
   *  defined key. * "project" is not a valid key; the project is already
   *  specified in the parent resource name. * "user" is not a valid key; the API
   *  does not support quota overrides that apply only to a specific user. * If
   *  "region" appears as a key, its value must be a valid Cloud region. * If
   *  "zone" appears as a key, its value must be a valid Cloud zone. * If any
   *  valid key other than "region" or "zone" appears in the map, then all valid
   *  keys other than "region" or "zone" must also appear in the map.
   *
   *  @note This class is documented as having more properties of NSString. Use @c
   *        -additionalJSONKeys and @c -additionalPropertyForName: to get the list
   *        of properties and then fetch them; or @c -additionalProperties to
   *        fetch them all at once.
   */
  @interface GTLRServiceConsumerManagement_V1Beta1QuotaOverride_Dimensions : GTLRObject
  @end
  
  
  /**
   *  Response message for the `RefreshConsumer` method. This response message is
   *  assigned to the `response` field of the returned Operation when that
   *  operation is done.
   */
  @interface GTLRServiceConsumerManagement_V1Beta1RefreshConsumerResponse : GTLRObject
  @end
  
  
  /**
   *  A service identity in the Identity and Access Management API.
   */
  @interface GTLRServiceConsumerManagement_V1Beta1ServiceIdentity : GTLRObject
  
  /** The email address of the service identity. */
  @property(nonatomic, copy, nullable) NSString *email;
  
  /**
   *  P4 service identity resource name. An example name would be:
   *  `services/serviceconsumermanagement.googleapis.com/projects/123/serviceIdentities/default`
   */
  @property(nonatomic, copy, nullable) NSString *name;
  
  /**
   *  The P4 service identity configuration tag. This must be defined in
   *  activation_grants. If not specified when creating the account, the tag is
   *  set to "default".
   */
  @property(nonatomic, copy, nullable) NSString *tag;
  
  /** The unique and stable id of the service identity. */
  @property(nonatomic, copy, nullable) NSString *uniqueId;
  
  @end
  
  
  /**
   *  A default identity in the Identity and Access Management API.
   */
  @interface GTLRServiceConsumerManagement_V1DefaultIdentity : GTLRObject
  
  /** The email address of the default identity. */
  @property(nonatomic, copy, nullable) NSString *email;
  
  /**
   *  Default identity resource name. An example name would be:
   *  `services/serviceconsumermanagement.googleapis.com/projects/123/defaultIdentity`
   */
  @property(nonatomic, copy, nullable) NSString *name;
  
  /**
   *  The Default Identity tag. If specified when creating the account, the tag
   *  must be present in activation_grants. If not specified when creating the
   *  account, the tag is set to the tag specified in activation_grants.
   */
  @property(nonatomic, copy, nullable) NSString *tag;
  
  /** The unique and stable id of the default identity. */
  @property(nonatomic, copy, nullable) NSString *uniqueId;
  
  @end
  
  
  /**
   *  Response message for the `DisableConsumer` method. This response message is
   *  assigned to the `response` field of the returned Operation when that
   *  operation is done.
   */
  @interface GTLRServiceConsumerManagement_V1DisableConsumerResponse : GTLRObject
  @end
  
  
  /**
   *  Response message for the `EnableConsumer` method. This response message is
   *  assigned to the `response` field of the returned Operation when that
   *  operation is done.
   */
  @interface GTLRServiceConsumerManagement_V1EnableConsumerResponse : GTLRObject
  @end
  
  
  /**
   *  Response message for the `GenerateDefaultIdentity` method. This response
   *  message is assigned to the `response` field of the returned Operation when
   *  that operation is done.
   */
  @interface GTLRServiceConsumerManagement_V1GenerateDefaultIdentityResponse : GTLRObject
  
  /**
   *  Status of the role attachment. Under development (go/si-attach-role),
   *  currently always return ATTACH_STATUS_UNSPECIFIED)
   *
   *  Likely values:
   *    @arg @c kGTLRServiceConsumerManagement_V1GenerateDefaultIdentityResponse_AttachStatus_AttachDeniedByOrgPolicy
   *        Role attachment was denied in this request by customer set org policy.
   *        (go/si-attach-role) (Value: "ATTACH_DENIED_BY_ORG_POLICY")
   *    @arg @c kGTLRServiceConsumerManagement_V1GenerateDefaultIdentityResponse_AttachStatus_Attached
   *        The default identity was attached to a role successfully in this
   *        request. (Value: "ATTACHED")
   *    @arg @c kGTLRServiceConsumerManagement_V1GenerateDefaultIdentityResponse_AttachStatus_AttachSkipped
   *        The request specified that no attempt should be made to attach the
   *        role. (Value: "ATTACH_SKIPPED")
   *    @arg @c kGTLRServiceConsumerManagement_V1GenerateDefaultIdentityResponse_AttachStatus_AttachStatusUnspecified
   *        Indicates that the AttachStatus was not set. (Value:
   *        "ATTACH_STATUS_UNSPECIFIED")
   *    @arg @c kGTLRServiceConsumerManagement_V1GenerateDefaultIdentityResponse_AttachStatus_PreviouslyAttached
   *        Role was attached to the consumer project at some point in time.
   *        Tenant manager doesn't make assertion about the current state of the
   *        identity with respect to the consumer. Role attachment should happen
   *        only once after activation and cannot be reattached after customer
   *        removes it. (go/si-attach-role) (Value: "PREVIOUSLY_ATTACHED")
   */
  @property(nonatomic, copy, nullable) NSString *attachStatus;
  
  /** DefaultIdentity that was created or retrieved. */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_V1DefaultIdentity *identity;
  
  /**
   *  Role attached to consumer project. Empty if not attached in this request.
   *  (Under development, currently always return empty.)
   */
  @property(nonatomic, copy, nullable) NSString *role;
  
  @end
  
  
  /**
   *  Response message for the `GenerateServiceAccount` method. This response
   *  message is assigned to the `response` field of the returned Operation when
   *  that operation is done.
   */
  @interface GTLRServiceConsumerManagement_V1GenerateServiceAccountResponse : GTLRObject
  
  /** ServiceAccount that was created or retrieved. */
  @property(nonatomic, strong, nullable) GTLRServiceConsumerManagement_V1ServiceAccount *account;
  
  @end
  
  
  /**
   *  Response message for the `RefreshConsumer` method. This response message is
   *  assigned to the `response` field of the returned Operation when that
   *  operation is done.
   */
  @interface GTLRServiceConsumerManagement_V1RefreshConsumerResponse : GTLRObject
  @end
  
  
  /**
   *  Response message for the `RemoveVisibilityLabels` method. This response
   *  message is assigned to the `response` field of the returned Operation when
   *  that operation is done.
   */
  @interface GTLRServiceConsumerManagement_V1RemoveVisibilityLabelsResponse : GTLRObject
  
  /** The updated set of visibility labels for this consumer on this service. */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *labels;
  
  @end
  
  
  /**
   *  A service account in the Identity and Access Management API.
   */
  @interface GTLRServiceConsumerManagement_V1ServiceAccount : GTLRObject
  
  /** The email address of the service account. */
  @property(nonatomic, copy, nullable) NSString *email;
  
  /** Deprecated. See b/136209818. */
  @property(nonatomic, copy, nullable) NSString *iamAccountName;
  
  /**
   *  P4 SA resource name. An example name would be:
   *  `services/serviceconsumermanagement.googleapis.com/projects/123/serviceAccounts/default`
   */
  @property(nonatomic, copy, nullable) NSString *name;
  
  /**
   *  The P4 SA configuration tag. This must be defined in activation_grants. If
   *  not specified when creating the account, the tag is set to "default".
   */
  @property(nonatomic, copy, nullable) NSString *tag;
  
  /** The unique and stable id of the service account. */
  @property(nonatomic, copy, nullable) NSString *uniqueId;
  
  @end
  
  NS_ASSUME_NONNULL_END
  
  #pragma clang diagnostic pop
  