<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="resourcesettings_v1.html">Resource Settings API</a> . <a href="resourcesettings_v1.organizations.html">organizations</a> . <a href="resourcesettings_v1.organizations.settings.html">settings</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#get">get(name, view=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns a specified setting. Returns a `google.rpc.Status` with `google.rpc.Code.NOT_FOUND` if the setting does not exist.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, pageToken=None, view=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all the settings that are available on the Cloud resource `parent`.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a specified setting. Returns a `google.rpc.Status` with `google.rpc.Code.NOT_FOUND` if the setting does not exist. Returns a `google.rpc.Status` with `google.rpc.Code.FAILED_PRECONDITION` if the setting is flagged as read only. Returns a `google.rpc.Status` with `google.rpc.Code.ABORTED` if the etag supplied in the request does not match the persisted etag of the setting value. On success, the response will contain only `name`, `local_value` and `etag`. The `metadata` and `effective_value` cannot be updated through this API. Note: the supplied setting will perform a full overwrite of the `local_value` field.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, view=None, x__xgafv=None)</code>
  <pre>Returns a specified setting. Returns a `google.rpc.Status` with `google.rpc.Code.NOT_FOUND` if the setting does not exist.

Args:
  name: string, Required. The name of the setting to get. See Setting for naming requirements. (required)
  view: string, The SettingView for this request.
    Allowed values
      SETTING_VIEW_UNSPECIFIED - The default / unset value. The API will default to the SETTING_VIEW_BASIC view.
      SETTING_VIEW_BASIC - Include Setting.metadata, but nothing else. This is the default value (for both ListSettings and GetSetting).
      SETTING_VIEW_EFFECTIVE_VALUE - Include Setting.effective_value, but nothing else.
      SETTING_VIEW_LOCAL_VALUE - Include Setting.local_value, but nothing else.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The schema for settings.
  &quot;effectiveValue&quot;: { # The data in a setting value. # Output only. The effective value of the setting at the given parent resource, evaluated based on the resource hierarchy The effective value evaluates to one of the following options, in this order. If an option is not valid or doesn&#x27;t exist, then the next option is used: 1. The local setting value on the given resource: Setting.local_value 2. If one of the given resource&#x27;s ancestors in the resource hierarchy have a local setting value, the local value at the nearest such ancestor. 3. The setting&#x27;s default value: SettingMetadata.default_value 4. An empty value, defined as a `Value` with all fields unset. The data type of Value must always be consistent with the data type defined in Setting.metadata.
    &quot;booleanValue&quot;: True or False, # Defines this value as being a boolean value.
    &quot;durationValue&quot;: &quot;A String&quot;, # Defines this value as being a Duration.
    &quot;enumValue&quot;: { # A enum value that can hold any enum type setting values. Each enum type is represented by a number, this representation is stored in the definitions. # Defines this value as being a Enum.
      &quot;value&quot;: &quot;A String&quot;, # The value of this enum
    },
    &quot;stringMapValue&quot;: { # A string-&gt;string map value that can hold a map of string keys to string values. The maximum length of each string is 200 characters and there can be a maximum of 50 key-value pairs in the map. # Defines this value as being a StringMap.
      &quot;mappings&quot;: { # The key-value pairs in the map
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;stringSetValue&quot;: { # A string set value that can hold a set of strings. The maximum length of each string is 200 characters and there can be a maximum of 50 strings in the string set. # Defines this value as being a StringSet.
      &quot;values&quot;: [ # The strings in the set
        &quot;A String&quot;,
      ],
    },
    &quot;stringValue&quot;: &quot;A String&quot;, # Defines this value as being a string value.
  },
  &quot;etag&quot;: &quot;A String&quot;, # A fingerprint used for optimistic concurrency. See UpdateSetting for more details.
  &quot;localValue&quot;: { # The data in a setting value. # The configured value of the setting at the given parent resource, ignoring the resource hierarchy. The data type of Value must always be consistent with the data type defined in Setting.metadata.
    &quot;booleanValue&quot;: True or False, # Defines this value as being a boolean value.
    &quot;durationValue&quot;: &quot;A String&quot;, # Defines this value as being a Duration.
    &quot;enumValue&quot;: { # A enum value that can hold any enum type setting values. Each enum type is represented by a number, this representation is stored in the definitions. # Defines this value as being a Enum.
      &quot;value&quot;: &quot;A String&quot;, # The value of this enum
    },
    &quot;stringMapValue&quot;: { # A string-&gt;string map value that can hold a map of string keys to string values. The maximum length of each string is 200 characters and there can be a maximum of 50 key-value pairs in the map. # Defines this value as being a StringMap.
      &quot;mappings&quot;: { # The key-value pairs in the map
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;stringSetValue&quot;: { # A string set value that can hold a set of strings. The maximum length of each string is 200 characters and there can be a maximum of 50 strings in the string set. # Defines this value as being a StringSet.
      &quot;values&quot;: [ # The strings in the set
        &quot;A String&quot;,
      ],
    },
    &quot;stringValue&quot;: &quot;A String&quot;, # Defines this value as being a string value.
  },
  &quot;metadata&quot;: { # Metadata about a setting which is not editable by the end user. # Output only. Metadata about a setting which is not editable by the end user.
    &quot;dataType&quot;: &quot;A String&quot;, # The data type for this setting.
    &quot;defaultValue&quot;: { # The data in a setting value. # The value provided by Setting.effective_value if no setting value is explicitly set. Note: not all settings have a default value.
      &quot;booleanValue&quot;: True or False, # Defines this value as being a boolean value.
      &quot;durationValue&quot;: &quot;A String&quot;, # Defines this value as being a Duration.
      &quot;enumValue&quot;: { # A enum value that can hold any enum type setting values. Each enum type is represented by a number, this representation is stored in the definitions. # Defines this value as being a Enum.
        &quot;value&quot;: &quot;A String&quot;, # The value of this enum
      },
      &quot;stringMapValue&quot;: { # A string-&gt;string map value that can hold a map of string keys to string values. The maximum length of each string is 200 characters and there can be a maximum of 50 key-value pairs in the map. # Defines this value as being a StringMap.
        &quot;mappings&quot;: { # The key-value pairs in the map
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;stringSetValue&quot;: { # A string set value that can hold a set of strings. The maximum length of each string is 200 characters and there can be a maximum of 50 strings in the string set. # Defines this value as being a StringSet.
        &quot;values&quot;: [ # The strings in the set
          &quot;A String&quot;,
        ],
      },
      &quot;stringValue&quot;: &quot;A String&quot;, # Defines this value as being a string value.
    },
    &quot;description&quot;: &quot;A String&quot;, # A detailed description of what this setting does.
    &quot;displayName&quot;: &quot;A String&quot;, # The human readable name for this setting.
    &quot;readOnly&quot;: True or False, # A flag indicating that values of this setting cannot be modified. See documentation for the specific setting for updates and reasons.
  },
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the setting. Must be in one of the following forms: * `projects/{project_number}/settings/{setting_name}` * `folders/{folder_id}/settings/{setting_name}` * `organizations/{organization_id}/settings/{setting_name}` For example, &quot;/projects/123/settings/gcp-enableMyFeature&quot;
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, view=None, x__xgafv=None)</code>
  <pre>Lists all the settings that are available on the Cloud resource `parent`.

Args:
  parent: string, Required. The project, folder, or organization that is the parent resource for this setting. Must be in one of the following forms: * `projects/{project_number}` * `projects/{project_id}` * `folders/{folder_id}` * `organizations/{organization_id}` (required)
  pageSize: integer, Unused. The size of the page to be returned.
  pageToken: string, Unused. A page token used to retrieve the next page.
  view: string, The SettingView for this request.
    Allowed values
      SETTING_VIEW_UNSPECIFIED - The default / unset value. The API will default to the SETTING_VIEW_BASIC view.
      SETTING_VIEW_BASIC - Include Setting.metadata, but nothing else. This is the default value (for both ListSettings and GetSetting).
      SETTING_VIEW_EFFECTIVE_VALUE - Include Setting.effective_value, but nothing else.
      SETTING_VIEW_LOCAL_VALUE - Include Setting.local_value, but nothing else.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The response from ListSettings.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Unused. A page token used to retrieve the next page.
  &quot;settings&quot;: [ # A list of settings that are available at the specified Cloud resource.
    { # The schema for settings.
      &quot;effectiveValue&quot;: { # The data in a setting value. # Output only. The effective value of the setting at the given parent resource, evaluated based on the resource hierarchy The effective value evaluates to one of the following options, in this order. If an option is not valid or doesn&#x27;t exist, then the next option is used: 1. The local setting value on the given resource: Setting.local_value 2. If one of the given resource&#x27;s ancestors in the resource hierarchy have a local setting value, the local value at the nearest such ancestor. 3. The setting&#x27;s default value: SettingMetadata.default_value 4. An empty value, defined as a `Value` with all fields unset. The data type of Value must always be consistent with the data type defined in Setting.metadata.
        &quot;booleanValue&quot;: True or False, # Defines this value as being a boolean value.
        &quot;durationValue&quot;: &quot;A String&quot;, # Defines this value as being a Duration.
        &quot;enumValue&quot;: { # A enum value that can hold any enum type setting values. Each enum type is represented by a number, this representation is stored in the definitions. # Defines this value as being a Enum.
          &quot;value&quot;: &quot;A String&quot;, # The value of this enum
        },
        &quot;stringMapValue&quot;: { # A string-&gt;string map value that can hold a map of string keys to string values. The maximum length of each string is 200 characters and there can be a maximum of 50 key-value pairs in the map. # Defines this value as being a StringMap.
          &quot;mappings&quot;: { # The key-value pairs in the map
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;stringSetValue&quot;: { # A string set value that can hold a set of strings. The maximum length of each string is 200 characters and there can be a maximum of 50 strings in the string set. # Defines this value as being a StringSet.
          &quot;values&quot;: [ # The strings in the set
            &quot;A String&quot;,
          ],
        },
        &quot;stringValue&quot;: &quot;A String&quot;, # Defines this value as being a string value.
      },
      &quot;etag&quot;: &quot;A String&quot;, # A fingerprint used for optimistic concurrency. See UpdateSetting for more details.
      &quot;localValue&quot;: { # The data in a setting value. # The configured value of the setting at the given parent resource, ignoring the resource hierarchy. The data type of Value must always be consistent with the data type defined in Setting.metadata.
        &quot;booleanValue&quot;: True or False, # Defines this value as being a boolean value.
        &quot;durationValue&quot;: &quot;A String&quot;, # Defines this value as being a Duration.
        &quot;enumValue&quot;: { # A enum value that can hold any enum type setting values. Each enum type is represented by a number, this representation is stored in the definitions. # Defines this value as being a Enum.
          &quot;value&quot;: &quot;A String&quot;, # The value of this enum
        },
        &quot;stringMapValue&quot;: { # A string-&gt;string map value that can hold a map of string keys to string values. The maximum length of each string is 200 characters and there can be a maximum of 50 key-value pairs in the map. # Defines this value as being a StringMap.
          &quot;mappings&quot;: { # The key-value pairs in the map
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;stringSetValue&quot;: { # A string set value that can hold a set of strings. The maximum length of each string is 200 characters and there can be a maximum of 50 strings in the string set. # Defines this value as being a StringSet.
          &quot;values&quot;: [ # The strings in the set
            &quot;A String&quot;,
          ],
        },
        &quot;stringValue&quot;: &quot;A String&quot;, # Defines this value as being a string value.
      },
      &quot;metadata&quot;: { # Metadata about a setting which is not editable by the end user. # Output only. Metadata about a setting which is not editable by the end user.
        &quot;dataType&quot;: &quot;A String&quot;, # The data type for this setting.
        &quot;defaultValue&quot;: { # The data in a setting value. # The value provided by Setting.effective_value if no setting value is explicitly set. Note: not all settings have a default value.
          &quot;booleanValue&quot;: True or False, # Defines this value as being a boolean value.
          &quot;durationValue&quot;: &quot;A String&quot;, # Defines this value as being a Duration.
          &quot;enumValue&quot;: { # A enum value that can hold any enum type setting values. Each enum type is represented by a number, this representation is stored in the definitions. # Defines this value as being a Enum.
            &quot;value&quot;: &quot;A String&quot;, # The value of this enum
          },
          &quot;stringMapValue&quot;: { # A string-&gt;string map value that can hold a map of string keys to string values. The maximum length of each string is 200 characters and there can be a maximum of 50 key-value pairs in the map. # Defines this value as being a StringMap.
            &quot;mappings&quot;: { # The key-value pairs in the map
              &quot;a_key&quot;: &quot;A String&quot;,
            },
          },
          &quot;stringSetValue&quot;: { # A string set value that can hold a set of strings. The maximum length of each string is 200 characters and there can be a maximum of 50 strings in the string set. # Defines this value as being a StringSet.
            &quot;values&quot;: [ # The strings in the set
              &quot;A String&quot;,
            ],
          },
          &quot;stringValue&quot;: &quot;A String&quot;, # Defines this value as being a string value.
        },
        &quot;description&quot;: &quot;A String&quot;, # A detailed description of what this setting does.
        &quot;displayName&quot;: &quot;A String&quot;, # The human readable name for this setting.
        &quot;readOnly&quot;: True or False, # A flag indicating that values of this setting cannot be modified. See documentation for the specific setting for updates and reasons.
      },
      &quot;name&quot;: &quot;A String&quot;, # The resource name of the setting. Must be in one of the following forms: * `projects/{project_number}/settings/{setting_name}` * `folders/{folder_id}/settings/{setting_name}` * `organizations/{organization_id}/settings/{setting_name}` For example, &quot;/projects/123/settings/gcp-enableMyFeature&quot;
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(name, body=None, x__xgafv=None)</code>
  <pre>Updates a specified setting. Returns a `google.rpc.Status` with `google.rpc.Code.NOT_FOUND` if the setting does not exist. Returns a `google.rpc.Status` with `google.rpc.Code.FAILED_PRECONDITION` if the setting is flagged as read only. Returns a `google.rpc.Status` with `google.rpc.Code.ABORTED` if the etag supplied in the request does not match the persisted etag of the setting value. On success, the response will contain only `name`, `local_value` and `etag`. The `metadata` and `effective_value` cannot be updated through this API. Note: the supplied setting will perform a full overwrite of the `local_value` field.

Args:
  name: string, The resource name of the setting. Must be in one of the following forms: * `projects/{project_number}/settings/{setting_name}` * `folders/{folder_id}/settings/{setting_name}` * `organizations/{organization_id}/settings/{setting_name}` For example, &quot;/projects/123/settings/gcp-enableMyFeature&quot; (required)
  body: object, The request body.
    The object takes the form of:

{ # The schema for settings.
  &quot;effectiveValue&quot;: { # The data in a setting value. # Output only. The effective value of the setting at the given parent resource, evaluated based on the resource hierarchy The effective value evaluates to one of the following options, in this order. If an option is not valid or doesn&#x27;t exist, then the next option is used: 1. The local setting value on the given resource: Setting.local_value 2. If one of the given resource&#x27;s ancestors in the resource hierarchy have a local setting value, the local value at the nearest such ancestor. 3. The setting&#x27;s default value: SettingMetadata.default_value 4. An empty value, defined as a `Value` with all fields unset. The data type of Value must always be consistent with the data type defined in Setting.metadata.
    &quot;booleanValue&quot;: True or False, # Defines this value as being a boolean value.
    &quot;durationValue&quot;: &quot;A String&quot;, # Defines this value as being a Duration.
    &quot;enumValue&quot;: { # A enum value that can hold any enum type setting values. Each enum type is represented by a number, this representation is stored in the definitions. # Defines this value as being a Enum.
      &quot;value&quot;: &quot;A String&quot;, # The value of this enum
    },
    &quot;stringMapValue&quot;: { # A string-&gt;string map value that can hold a map of string keys to string values. The maximum length of each string is 200 characters and there can be a maximum of 50 key-value pairs in the map. # Defines this value as being a StringMap.
      &quot;mappings&quot;: { # The key-value pairs in the map
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;stringSetValue&quot;: { # A string set value that can hold a set of strings. The maximum length of each string is 200 characters and there can be a maximum of 50 strings in the string set. # Defines this value as being a StringSet.
      &quot;values&quot;: [ # The strings in the set
        &quot;A String&quot;,
      ],
    },
    &quot;stringValue&quot;: &quot;A String&quot;, # Defines this value as being a string value.
  },
  &quot;etag&quot;: &quot;A String&quot;, # A fingerprint used for optimistic concurrency. See UpdateSetting for more details.
  &quot;localValue&quot;: { # The data in a setting value. # The configured value of the setting at the given parent resource, ignoring the resource hierarchy. The data type of Value must always be consistent with the data type defined in Setting.metadata.
    &quot;booleanValue&quot;: True or False, # Defines this value as being a boolean value.
    &quot;durationValue&quot;: &quot;A String&quot;, # Defines this value as being a Duration.
    &quot;enumValue&quot;: { # A enum value that can hold any enum type setting values. Each enum type is represented by a number, this representation is stored in the definitions. # Defines this value as being a Enum.
      &quot;value&quot;: &quot;A String&quot;, # The value of this enum
    },
    &quot;stringMapValue&quot;: { # A string-&gt;string map value that can hold a map of string keys to string values. The maximum length of each string is 200 characters and there can be a maximum of 50 key-value pairs in the map. # Defines this value as being a StringMap.
      &quot;mappings&quot;: { # The key-value pairs in the map
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;stringSetValue&quot;: { # A string set value that can hold a set of strings. The maximum length of each string is 200 characters and there can be a maximum of 50 strings in the string set. # Defines this value as being a StringSet.
      &quot;values&quot;: [ # The strings in the set
        &quot;A String&quot;,
      ],
    },
    &quot;stringValue&quot;: &quot;A String&quot;, # Defines this value as being a string value.
  },
  &quot;metadata&quot;: { # Metadata about a setting which is not editable by the end user. # Output only. Metadata about a setting which is not editable by the end user.
    &quot;dataType&quot;: &quot;A String&quot;, # The data type for this setting.
    &quot;defaultValue&quot;: { # The data in a setting value. # The value provided by Setting.effective_value if no setting value is explicitly set. Note: not all settings have a default value.
      &quot;booleanValue&quot;: True or False, # Defines this value as being a boolean value.
      &quot;durationValue&quot;: &quot;A String&quot;, # Defines this value as being a Duration.
      &quot;enumValue&quot;: { # A enum value that can hold any enum type setting values. Each enum type is represented by a number, this representation is stored in the definitions. # Defines this value as being a Enum.
        &quot;value&quot;: &quot;A String&quot;, # The value of this enum
      },
      &quot;stringMapValue&quot;: { # A string-&gt;string map value that can hold a map of string keys to string values. The maximum length of each string is 200 characters and there can be a maximum of 50 key-value pairs in the map. # Defines this value as being a StringMap.
        &quot;mappings&quot;: { # The key-value pairs in the map
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;stringSetValue&quot;: { # A string set value that can hold a set of strings. The maximum length of each string is 200 characters and there can be a maximum of 50 strings in the string set. # Defines this value as being a StringSet.
        &quot;values&quot;: [ # The strings in the set
          &quot;A String&quot;,
        ],
      },
      &quot;stringValue&quot;: &quot;A String&quot;, # Defines this value as being a string value.
    },
    &quot;description&quot;: &quot;A String&quot;, # A detailed description of what this setting does.
    &quot;displayName&quot;: &quot;A String&quot;, # The human readable name for this setting.
    &quot;readOnly&quot;: True or False, # A flag indicating that values of this setting cannot be modified. See documentation for the specific setting for updates and reasons.
  },
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the setting. Must be in one of the following forms: * `projects/{project_number}/settings/{setting_name}` * `folders/{folder_id}/settings/{setting_name}` * `organizations/{organization_id}/settings/{setting_name}` For example, &quot;/projects/123/settings/gcp-enableMyFeature&quot;
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The schema for settings.
  &quot;effectiveValue&quot;: { # The data in a setting value. # Output only. The effective value of the setting at the given parent resource, evaluated based on the resource hierarchy The effective value evaluates to one of the following options, in this order. If an option is not valid or doesn&#x27;t exist, then the next option is used: 1. The local setting value on the given resource: Setting.local_value 2. If one of the given resource&#x27;s ancestors in the resource hierarchy have a local setting value, the local value at the nearest such ancestor. 3. The setting&#x27;s default value: SettingMetadata.default_value 4. An empty value, defined as a `Value` with all fields unset. The data type of Value must always be consistent with the data type defined in Setting.metadata.
    &quot;booleanValue&quot;: True or False, # Defines this value as being a boolean value.
    &quot;durationValue&quot;: &quot;A String&quot;, # Defines this value as being a Duration.
    &quot;enumValue&quot;: { # A enum value that can hold any enum type setting values. Each enum type is represented by a number, this representation is stored in the definitions. # Defines this value as being a Enum.
      &quot;value&quot;: &quot;A String&quot;, # The value of this enum
    },
    &quot;stringMapValue&quot;: { # A string-&gt;string map value that can hold a map of string keys to string values. The maximum length of each string is 200 characters and there can be a maximum of 50 key-value pairs in the map. # Defines this value as being a StringMap.
      &quot;mappings&quot;: { # The key-value pairs in the map
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;stringSetValue&quot;: { # A string set value that can hold a set of strings. The maximum length of each string is 200 characters and there can be a maximum of 50 strings in the string set. # Defines this value as being a StringSet.
      &quot;values&quot;: [ # The strings in the set
        &quot;A String&quot;,
      ],
    },
    &quot;stringValue&quot;: &quot;A String&quot;, # Defines this value as being a string value.
  },
  &quot;etag&quot;: &quot;A String&quot;, # A fingerprint used for optimistic concurrency. See UpdateSetting for more details.
  &quot;localValue&quot;: { # The data in a setting value. # The configured value of the setting at the given parent resource, ignoring the resource hierarchy. The data type of Value must always be consistent with the data type defined in Setting.metadata.
    &quot;booleanValue&quot;: True or False, # Defines this value as being a boolean value.
    &quot;durationValue&quot;: &quot;A String&quot;, # Defines this value as being a Duration.
    &quot;enumValue&quot;: { # A enum value that can hold any enum type setting values. Each enum type is represented by a number, this representation is stored in the definitions. # Defines this value as being a Enum.
      &quot;value&quot;: &quot;A String&quot;, # The value of this enum
    },
    &quot;stringMapValue&quot;: { # A string-&gt;string map value that can hold a map of string keys to string values. The maximum length of each string is 200 characters and there can be a maximum of 50 key-value pairs in the map. # Defines this value as being a StringMap.
      &quot;mappings&quot;: { # The key-value pairs in the map
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;stringSetValue&quot;: { # A string set value that can hold a set of strings. The maximum length of each string is 200 characters and there can be a maximum of 50 strings in the string set. # Defines this value as being a StringSet.
      &quot;values&quot;: [ # The strings in the set
        &quot;A String&quot;,
      ],
    },
    &quot;stringValue&quot;: &quot;A String&quot;, # Defines this value as being a string value.
  },
  &quot;metadata&quot;: { # Metadata about a setting which is not editable by the end user. # Output only. Metadata about a setting which is not editable by the end user.
    &quot;dataType&quot;: &quot;A String&quot;, # The data type for this setting.
    &quot;defaultValue&quot;: { # The data in a setting value. # The value provided by Setting.effective_value if no setting value is explicitly set. Note: not all settings have a default value.
      &quot;booleanValue&quot;: True or False, # Defines this value as being a boolean value.
      &quot;durationValue&quot;: &quot;A String&quot;, # Defines this value as being a Duration.
      &quot;enumValue&quot;: { # A enum value that can hold any enum type setting values. Each enum type is represented by a number, this representation is stored in the definitions. # Defines this value as being a Enum.
        &quot;value&quot;: &quot;A String&quot;, # The value of this enum
      },
      &quot;stringMapValue&quot;: { # A string-&gt;string map value that can hold a map of string keys to string values. The maximum length of each string is 200 characters and there can be a maximum of 50 key-value pairs in the map. # Defines this value as being a StringMap.
        &quot;mappings&quot;: { # The key-value pairs in the map
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;stringSetValue&quot;: { # A string set value that can hold a set of strings. The maximum length of each string is 200 characters and there can be a maximum of 50 strings in the string set. # Defines this value as being a StringSet.
        &quot;values&quot;: [ # The strings in the set
          &quot;A String&quot;,
        ],
      },
      &quot;stringValue&quot;: &quot;A String&quot;, # Defines this value as being a string value.
    },
    &quot;description&quot;: &quot;A String&quot;, # A detailed description of what this setting does.
    &quot;displayName&quot;: &quot;A String&quot;, # The human readable name for this setting.
    &quot;readOnly&quot;: True or False, # A flag indicating that values of this setting cannot be modified. See documentation for the specific setting for updates and reasons.
  },
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the setting. Must be in one of the following forms: * `projects/{project_number}/settings/{setting_name}` * `folders/{folder_id}/settings/{setting_name}` * `organizations/{organization_id}/settings/{setting_name}` For example, &quot;/projects/123/settings/gcp-enableMyFeature&quot;
}</pre>
</div>

</body></html>