text: // NOTE: This file was generated by the ServiceGenerator.
  
  // ----------------------------------------------------------------------------
  // API:
  //   Organization Policy API (orgpolicy/v2)
  // Description:
  //   The Org Policy API allows users to configure governance ruleson their GCP
  //   resources across the Cloud Resource Hierarchy.
  // Documentation:
  //   https://cloud.google.com/orgpolicy/docs/reference/rest/index.html
  
  #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 GTLROrgPolicyAPI_GoogleCloudOrgpolicyV2Constraint;
  @class GTLROrgPolicyAPI_GoogleCloudOrgpolicyV2ConstraintBooleanConstraint;
  @class GTLROrgPolicyAPI_GoogleCloudOrgpolicyV2ConstraintListConstraint;
  @class GTLROrgPolicyAPI_GoogleCloudOrgpolicyV2Policy;
  @class GTLROrgPolicyAPI_GoogleCloudOrgpolicyV2PolicySpec;
  @class GTLROrgPolicyAPI_GoogleCloudOrgpolicyV2PolicySpecPolicyRule;
  @class GTLROrgPolicyAPI_GoogleCloudOrgpolicyV2PolicySpecPolicyRuleStringValues;
  @class GTLROrgPolicyAPI_GoogleTypeExpr;
  
  // 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.
  
  // ----------------------------------------------------------------------------
  // GTLROrgPolicyAPI_GoogleCloudOrgpolicyV2Constraint.constraintDefault
  
  /**
   *  Indicate that all values are allowed for list constraints. Indicate that
   *  enforcement is off for boolean constraints.
   *
   *  Value: "ALLOW"
   */
  FOUNDATION_EXTERN NSString * const kGTLROrgPolicyAPI_GoogleCloudOrgpolicyV2Constraint_ConstraintDefault_Allow;
  /**
   *  This is only used for distinguishing unset values and should never be used.
   *
   *  Value: "CONSTRAINT_DEFAULT_UNSPECIFIED"
   */
  FOUNDATION_EXTERN NSString * const kGTLROrgPolicyAPI_GoogleCloudOrgpolicyV2Constraint_ConstraintDefault_ConstraintDefaultUnspecified;
  /**
   *  Indicate that all values are denied for list constraints. Indicate that
   *  enforcement is on for boolean constraints.
   *
   *  Value: "DENY"
   */
  FOUNDATION_EXTERN NSString * const kGTLROrgPolicyAPI_GoogleCloudOrgpolicyV2Constraint_ConstraintDefault_Deny;
  
  /**
   *  A `constraint` describes a way to restrict resource's configuration. For
   *  example, you could enforce a constraint that controls which cloud services
   *  can be activated across an organization, or whether a Compute Engine
   *  instance can have serial port connections established. `Constraints` can be
   *  configured by the organization's policy administrator to fit the needs of
   *  the organization by setting a `policy` that includes `constraints` at
   *  different locations in the organization's resource hierarchy. Policies are
   *  inherited down the resource hierarchy from higher levels, but can also be
   *  overridden. For details about the inheritance rules please read about
   *  `policies`. `Constraints` have a default behavior determined by the
   *  `constraint_default` field, which is the enforcement behavior that is used
   *  in the absence of a `policy` being defined or inherited for the resource in
   *  question.
   */
  @interface GTLROrgPolicyAPI_GoogleCloudOrgpolicyV2Constraint : GTLRObject
  
  /** Defines this constraint as being a BooleanConstraint. */
  @property(nonatomic, strong, nullable) GTLROrgPolicyAPI_GoogleCloudOrgpolicyV2ConstraintBooleanConstraint *booleanConstraint;
  
  /**
   *  The evaluation behavior of this constraint in the absence of 'Policy'.
   *
   *  Likely values:
   *    @arg @c kGTLROrgPolicyAPI_GoogleCloudOrgpolicyV2Constraint_ConstraintDefault_Allow
   *        Indicate that all values are allowed for list constraints. Indicate
   *        that enforcement is off for boolean constraints. (Value: "ALLOW")
   *    @arg @c kGTLROrgPolicyAPI_GoogleCloudOrgpolicyV2Constraint_ConstraintDefault_ConstraintDefaultUnspecified
   *        This is only used for distinguishing unset values and should never be
   *        used. (Value: "CONSTRAINT_DEFAULT_UNSPECIFIED")
   *    @arg @c kGTLROrgPolicyAPI_GoogleCloudOrgpolicyV2Constraint_ConstraintDefault_Deny
   *        Indicate that all values are denied for list constraints. Indicate
   *        that enforcement is on for boolean constraints. (Value: "DENY")
   */
  @property(nonatomic, copy, nullable) NSString *constraintDefault;
  
  /**
   *  Detailed description of what this `Constraint` controls as well as how and
   *  where it is enforced. Mutable.
   *
   *  Remapped to 'descriptionProperty' to avoid NSObject's 'description'.
   */
  @property(nonatomic, copy, nullable) NSString *descriptionProperty;
  
  /** The human readable name. Mutable. */
  @property(nonatomic, copy, nullable) NSString *displayName;
  
  /** Defines this constraint as being a ListConstraint. */
  @property(nonatomic, strong, nullable) GTLROrgPolicyAPI_GoogleCloudOrgpolicyV2ConstraintListConstraint *listConstraint;
  
  /**
   *  Immutable. The resource name of the Constraint. Must be in one of the
   *  following forms: * `projects/{project_number}/constraints/{constraint_name}`
   *  * `folders/{folder_id}/constraints/{constraint_name}` *
   *  `organizations/{organization_id}/constraints/{constraint_name}` For example,
   *  "/projects/123/constraints/compute.disableSerialPortAccess".
   */
  @property(nonatomic, copy, nullable) NSString *name;
  
  @end
  
  
  /**
   *  A `Constraint` that is either enforced or not. For example a constraint
   *  `constraints/compute.disableSerialPortAccess`. If it is enforced on a VM
   *  instance, serial port connections will not be opened to that instance.
   */
  @interface GTLROrgPolicyAPI_GoogleCloudOrgpolicyV2ConstraintBooleanConstraint : GTLRObject
  @end
  
  
  /**
   *  A `Constraint` that allows or disallows a list of string values, which are
   *  configured by an Organization's policy administrator with a `Policy`.
   */
  @interface GTLROrgPolicyAPI_GoogleCloudOrgpolicyV2ConstraintListConstraint : GTLRObject
  
  /**
   *  Indicates whether values grouped into categories can be used in
   *  `Policy.allowed_values` and `Policy.denied_values`. For example,
   *  `"in:Python"` would match any value in the 'Python' group.
   *
   *  Uses NSNumber of boolValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *supportsIn;
  
  /**
   *  Indicates whether subtrees of Cloud Resource Manager resource hierarchy can
   *  be used in `Policy.allowed_values` and `Policy.denied_values`. For example,
   *  `"under:folders/123"` would match any resource under the 'folders/123'
   *  folder.
   *
   *  Uses NSNumber of boolValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *supportsUnder;
  
  @end
  
  
  /**
   *  The response returned from the ListConstraints method.
   *
   *  @note This class supports NSFastEnumeration and indexed subscripting over
   *        its "constraints" property. If returned as the result of a query, it
   *        should support automatic pagination (when @c shouldFetchNextPages is
   *        enabled).
   */
  @interface GTLROrgPolicyAPI_GoogleCloudOrgpolicyV2ListConstraintsResponse : GTLRCollectionObject
  
  /**
   *  The collection of constraints that are available on the targeted resource.
   *
   *  @note This property is used to support NSFastEnumeration and indexed
   *        subscripting on this class.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLROrgPolicyAPI_GoogleCloudOrgpolicyV2Constraint *> *constraints;
  
  /** Page token used to retrieve the next page. This is currently not used. */
  @property(nonatomic, copy, nullable) NSString *nextPageToken;
  
  @end
  
  
  /**
   *  The response returned from the ListPolicies method. It will be empty if no
   *  `Policies` are set on the resource.
   *
   *  @note This class supports NSFastEnumeration and indexed subscripting over
   *        its "policies" property. If returned as the result of a query, it
   *        should support automatic pagination (when @c shouldFetchNextPages is
   *        enabled).
   */
  @interface GTLROrgPolicyAPI_GoogleCloudOrgpolicyV2ListPoliciesResponse : GTLRCollectionObject
  
  /**
   *  Page token used to retrieve the next page. This is currently not used, but
   *  the server may at any point start supplying a valid token.
   */
  @property(nonatomic, copy, nullable) NSString *nextPageToken;
  
  /**
   *  All `Policies` that exist on the resource. It will be empty if no `Policies`
   *  are set.
   *
   *  @note This property is used to support NSFastEnumeration and indexed
   *        subscripting on this class.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLROrgPolicyAPI_GoogleCloudOrgpolicyV2Policy *> *policies;
  
  @end
  
  
  /**
   *  Defines a Cloud Organization `Policy` which is used to specify `Constraints`
   *  for configurations of Cloud Platform resources.
   */
  @interface GTLROrgPolicyAPI_GoogleCloudOrgpolicyV2Policy : GTLRObject
  
  /**
   *  Immutable. The resource name of the Policy. Must be one of the following
   *  forms, where constraint_name is the name of the constraint which this Policy
   *  configures: * `projects/{project_number}/policies/{constraint_name}` *
   *  `folders/{folder_id}/policies/{constraint_name}` *
   *  `organizations/{organization_id}/policies/{constraint_name}` For example,
   *  "projects/123/policies/compute.disableSerialPortAccess". Note:
   *  `projects/{project_id}/policies/{constraint_name}` is also an acceptable
   *  name for API requests, but responses will return the name using the
   *  equivalent project number.
   */
  @property(nonatomic, copy, nullable) NSString *name;
  
  /** Basic information about the Organization Policy. */
  @property(nonatomic, strong, nullable) GTLROrgPolicyAPI_GoogleCloudOrgpolicyV2PolicySpec *spec;
  
  @end
  
  
  /**
   *  Defines a Cloud Organization `PolicySpec` which is used to specify
   *  `Constraints` for configurations of Cloud Platform resources.
   */
  @interface GTLROrgPolicyAPI_GoogleCloudOrgpolicyV2PolicySpec : GTLRObject
  
  /**
   *  An opaque tag indicating the current version of the `Policy`, used for
   *  concurrency control. This field is ignored if used in a `CreatePolicy`
   *  request. When the `Policy` is returned from either a `GetPolicy` or a
   *  `ListPolicies` request, this `etag` indicates the version of the current
   *  `Policy` to use when executing a read-modify-write loop. When the `Policy`
   *  is returned from a `GetEffectivePolicy` request, the `etag` will be unset.
   */
  @property(nonatomic, copy, nullable) NSString *ETag;
  
  /**
   *  Determines the inheritance behavior for this `Policy`. If
   *  `inherit_from_parent` is true, PolicyRules set higher up in the hierarchy
   *  (up to the closest root) are inherited and present in the effective policy.
   *  If it is false, then no rules are inherited, and this Policy becomes the new
   *  root for evaluation. This field can be set only for Policies which configure
   *  list constraints.
   *
   *  Uses NSNumber of boolValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *inheritFromParent;
  
  /**
   *  Ignores policies set above this resource and restores the
   *  `constraint_default` enforcement behavior of the specific `Constraint` at
   *  this resource. This field can be set in policies for either list or boolean
   *  constraints. If set, `rules` must be empty and `inherit_from_parent` must be
   *  set to false.
   *
   *  Uses NSNumber of boolValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *reset;
  
  /**
   *  Up to 10 PolicyRules are allowed. In Policies for boolean constraints, the
   *  following requirements apply: - There must be one and only one PolicyRule
   *  where condition is unset. - BooleanPolicyRules with conditions must set
   *  `enforced` to the opposite of the PolicyRule without a condition. - During
   *  policy evaluation, PolicyRules with conditions that are true for a target
   *  resource take precedence.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLROrgPolicyAPI_GoogleCloudOrgpolicyV2PolicySpecPolicyRule *> *rules;
  
  /**
   *  Output only. The time stamp this was previously updated. This represents the
   *  last time a call to `CreatePolicy` or `UpdatePolicy` was made for that
   *  `Policy`.
   */
  @property(nonatomic, strong, nullable) GTLRDateTime *updateTime;
  
  @end
  
  
  /**
   *  A rule used to express this policy.
   */
  @interface GTLROrgPolicyAPI_GoogleCloudOrgpolicyV2PolicySpecPolicyRule : GTLRObject
  
  /**
   *  Setting this to true means that all values are allowed. This field can be
   *  set only in Policies for list constraints.
   *
   *  Uses NSNumber of boolValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *allowAll;
  
  /**
   *  A condition which determines whether this rule is used in the evaluation of
   *  the policy. When set, the `expression` field in the `Expr' must include from
   *  1 to 10 subexpressions, joined by the "||" or "&&" operators. Each
   *  subexpression must be of the form "resource.matchTag('/tag_key_short_name,
   *  'tag_value_short_name')". or "resource.matchTagId('tagKeys/key_id',
   *  'tagValues/value_id')". where key_name and value_name are the resource names
   *  for Label Keys and Values. These names are available from the Tag Manager
   *  Service. An example expression is:
   *  "resource.matchTag('123456789/environment, 'prod')". or
   *  "resource.matchTagId('tagKeys/123', 'tagValues/456')".
   */
  @property(nonatomic, strong, nullable) GTLROrgPolicyAPI_GoogleTypeExpr *condition;
  
  /**
   *  Setting this to true means that all values are denied. This field can be set
   *  only in Policies for list constraints.
   *
   *  Uses NSNumber of boolValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *denyAll;
  
  /**
   *  If `true`, then the `Policy` is enforced. If `false`, then any configuration
   *  is acceptable. This field can be set only in Policies for boolean
   *  constraints.
   *
   *  Uses NSNumber of boolValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *enforce;
  
  /**
   *  List of values to be used for this PolicyRule. This field can be set only in
   *  Policies for list constraints.
   */
  @property(nonatomic, strong, nullable) GTLROrgPolicyAPI_GoogleCloudOrgpolicyV2PolicySpecPolicyRuleStringValues *values;
  
  @end
  
  
  /**
   *  A message that holds specific allowed and denied values. This message can
   *  define specific values and subtrees of Cloud Resource Manager resource
   *  hierarchy (`Organizations`, `Folders`, `Projects`) that are allowed or
   *  denied. This is achieved by using the `under:` and optional `is:` prefixes.
   *  The `under:` prefix is used to denote resource subtree values. The `is:`
   *  prefix is used to denote specific values, and is required only if the value
   *  contains a ":". Values prefixed with "is:" are treated the same as values
   *  with no prefix. Ancestry subtrees must be in one of the following formats: -
   *  "projects/", e.g. "projects/tokyo-rain-123" - "folders/", e.g.
   *  "folders/1234" - "organizations/", e.g. "organizations/1234" The
   *  `supports_under` field of the associated `Constraint` defines whether
   *  ancestry prefixes can be used.
   */
  @interface GTLROrgPolicyAPI_GoogleCloudOrgpolicyV2PolicySpecPolicyRuleStringValues : GTLRObject
  
  /** List of values allowed at this resource. */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *allowedValues;
  
  /** List of values denied at this resource. */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *deniedValues;
  
  @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 GTLROrgPolicyAPI_GoogleProtobufEmpty : GTLRObject
  @end
  
  
  /**
   *  Represents a textual expression in the Common Expression Language (CEL)
   *  syntax. CEL is a C-like expression language. The syntax and semantics of CEL
   *  are documented at https://github.com/google/cel-spec. Example (Comparison):
   *  title: "Summary size limit" description: "Determines if a summary is less
   *  than 100 chars" expression: "document.summary.size() < 100" Example
   *  (Equality): title: "Requestor is owner" description: "Determines if
   *  requestor is the document owner" expression: "document.owner ==
   *  request.auth.claims.email" Example (Logic): title: "Public documents"
   *  description: "Determine whether the document should be publicly visible"
   *  expression: "document.type != 'private' && document.type != 'internal'"
   *  Example (Data Manipulation): title: "Notification string" description:
   *  "Create a notification string with a timestamp." expression: "'New message
   *  received at ' + string(document.create_time)" The exact variables and
   *  functions that may be referenced within an expression are determined by the
   *  service that evaluates it. See the service documentation for additional
   *  information.
   */
  @interface GTLROrgPolicyAPI_GoogleTypeExpr : GTLRObject
  
  /**
   *  Optional. Description of the expression. This is a longer text which
   *  describes the expression, e.g. when hovered over it in a UI.
   *
   *  Remapped to 'descriptionProperty' to avoid NSObject's 'description'.
   */
  @property(nonatomic, copy, nullable) NSString *descriptionProperty;
  
  /**
   *  Textual representation of an expression in Common Expression Language
   *  syntax.
   */
  @property(nonatomic, copy, nullable) NSString *expression;
  
  /**
   *  Optional. String indicating the location of the expression for error
   *  reporting, e.g. a file name and a position in the file.
   */
  @property(nonatomic, copy, nullable) NSString *location;
  
  /**
   *  Optional. Title for the expression, i.e. a short string describing its
   *  purpose. This can be used e.g. in UIs which allow to enter the expression.
   */
  @property(nonatomic, copy, nullable) NSString *title;
  
  @end
  
  NS_ASSUME_NONNULL_END
  
  #pragma clang diagnostic pop
  