<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="chromepolicy_v1.html">Chrome Policy API</a> . <a href="chromepolicy_v1.customers.html">customers</a> . <a href="chromepolicy_v1.customers.policySchemas.html">policySchemas</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, x__xgafv=None)</a></code></p>
<p class="firstline">Get a specific policy schema for a customer by its resource name.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a list of policy schemas that match a specified filter value for a given customer.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next()</a></code></p>
<p class="firstline">Retrieves the next page of results.</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, x__xgafv=None)</code>
  <pre>Get a specific policy schema for a customer by its resource name.

Args:
  name: string, Required. The policy schema resource name to query. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Resource representing a policy schema.
  &quot;accessRestrictions&quot;: [ # Output only. Specific access restrictions related to this policy.
    &quot;A String&quot;,
  ],
  &quot;additionalTargetKeyNames&quot;: [ # Output only. Additional key names that will be used to identify the target of the policy value. When specifying a `policyTargetKey`, each of the additional keys specified here will have to be included in the `additionalTargetKeys` map.
    { # Additional key names that will be used to identify the target of the policy value.
      &quot;key&quot;: &quot;A String&quot;, # Key name.
      &quot;keyDescription&quot;: &quot;A String&quot;, # Key description.
    },
  ],
  &quot;categoryTitle&quot;: &quot;A String&quot;, # Title of the category in which a setting belongs.
  &quot;definition&quot;: { # Describes a complete .proto file. # Schema definition using proto descriptor.
    &quot;editionDeprecated&quot;: &quot;A String&quot;, # copybara:strip_begin TODO(b/297898292) Deprecate and remove this field in favor of enums. copybara:strip_end
    &quot;enumType&quot;: [
      { # Describes an enum type.
        &quot;name&quot;: &quot;A String&quot;,
        &quot;value&quot;: [
          { # Describes a value within an enum.
            &quot;name&quot;: &quot;A String&quot;,
            &quot;number&quot;: 42,
          },
        ],
        &quot;visibility&quot;: &quot;A String&quot;, # Support for `export` and `local` keywords on enums.
      },
    ],
    &quot;messageType&quot;: [ # All top-level definitions in this file.
      { # Describes a message type.
        &quot;enumType&quot;: [
          { # Describes an enum type.
            &quot;name&quot;: &quot;A String&quot;,
            &quot;value&quot;: [
              { # Describes a value within an enum.
                &quot;name&quot;: &quot;A String&quot;,
                &quot;number&quot;: 42,
              },
            ],
            &quot;visibility&quot;: &quot;A String&quot;, # Support for `export` and `local` keywords on enums.
          },
        ],
        &quot;field&quot;: [
          { # Describes a field within a message.
            &quot;defaultValue&quot;: &quot;A String&quot;, # For numeric types, contains the original text representation of the value. For booleans, &quot;true&quot; or &quot;false&quot;. For strings, contains the default text contents (not escaped in any way). For bytes, contains the C escaped value. All bytes &gt;= 128 are escaped.
            &quot;jsonName&quot;: &quot;A String&quot;, # JSON name of this field. The value is set by protocol compiler. If the user has set a &quot;json_name&quot; option on this field, that option&#x27;s value will be used. Otherwise, it&#x27;s deduced from the field&#x27;s name by converting it to camelCase.
            &quot;label&quot;: &quot;A String&quot;,
            &quot;name&quot;: &quot;A String&quot;,
            &quot;number&quot;: 42,
            &quot;oneofIndex&quot;: 42, # If set, gives the index of a oneof in the containing type&#x27;s oneof_decl list. This field is a member of that oneof.
            &quot;proto3Optional&quot;: True or False, # If true, this is a proto3 &quot;optional&quot;. When a proto3 field is optional, it tracks presence regardless of field type. When proto3_optional is true, this field must belong to a oneof to signal to old proto3 clients that presence is tracked for this field. This oneof is known as a &quot;synthetic&quot; oneof, and this field must be its sole member (each proto3 optional field gets its own synthetic oneof). Synthetic oneofs exist in the descriptor only, and do not generate any API. Synthetic oneofs must be ordered after all &quot;real&quot; oneofs. For message fields, proto3_optional doesn&#x27;t create any semantic change, since non-repeated message fields always track presence. However it still indicates the semantic detail of whether the user wrote &quot;optional&quot; or not. This can be useful for round-tripping the .proto file. For consistency we give message fields a synthetic oneof also, even though it is not required to track presence. This is especially important because the parser can&#x27;t tell if a field is a message or an enum, so it must always create a synthetic oneof. Proto2 optional fields do not set this flag, because they already indicate optional with `LABEL_OPTIONAL`.
            &quot;type&quot;: &quot;A String&quot;, # If type_name is set, this need not be set. If both this and type_name are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
            &quot;typeName&quot;: &quot;A String&quot;, # For message and enum types, this is the name of the type. If the name starts with a &#x27;.&#x27;, it is fully-qualified. Otherwise, C++-like scoping rules are used to find the type (i.e. first the nested types within this message are searched, then within the parent, on up to the root namespace).
          },
        ],
        &quot;name&quot;: &quot;A String&quot;,
        &quot;nestedType&quot;: [
          # Object with schema name: Proto2DescriptorProto
        ],
        &quot;oneofDecl&quot;: [
          { # Describes a oneof.
            &quot;name&quot;: &quot;A String&quot;,
          },
        ],
        &quot;visibility&quot;: &quot;A String&quot;, # Support for `export` and `local` keywords on enums.
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # file name, relative to root of source tree
    &quot;optionDependency&quot;: [ # Names of files imported by this file purely for the purpose of providing option extensions. These are excluded from the dependency list above.
      &quot;A String&quot;,
    ],
    &quot;package&quot;: &quot;A String&quot;, # e.g. &quot;foo&quot;, &quot;foo.bar&quot;, etc.
    &quot;syntax&quot;: &quot;A String&quot;, # The syntax of the proto file. The supported values are &quot;proto2&quot;, &quot;proto3&quot;, and &quot;editions&quot;. If `edition` is present, this value must be &quot;editions&quot;. WARNING: This field should only be used by protobuf plugins or special cases like the proto compiler. Other uses are discouraged and developers should rely on the protoreflect APIs for their client language.
  },
  &quot;fieldDescriptions&quot;: [ # Output only. Detailed description of each field that is part of the schema. Fields are suggested to be displayed by the ordering in this list, not by field number.
    { # Provides detailed information for a particular field that is part of a PolicySchema.
      &quot;defaultValue&quot;: &quot;&quot;, # Output only. Client default if the policy is unset.
      &quot;description&quot;: &quot;A String&quot;, # Deprecated. Use name and field_description instead. The description for the field.
      &quot;field&quot;: &quot;A String&quot;, # Output only. The name of the field for associated with this description.
      &quot;fieldConstraints&quot;: { # Information about any range constraints. # Output only. Information on any input constraints associated on the values for the field.
        &quot;numericRangeConstraint&quot;: { # A constraint on upper and/or lower bounds, with at least one being set. # The allowed range for numeric fields.
          &quot;maximum&quot;: &quot;A String&quot;, # Maximum value.
          &quot;minimum&quot;: &quot;A String&quot;, # Minimum value.
        },
        &quot;uploadedFileConstraints&quot;: { # Constraints on the uploaded file of a file policy. # Constraints on the uploaded file of a file policy. If present, this policy requires a URL that can be fetched by uploading a file with the constraints specified in this proto.
          &quot;sizeLimitBytes&quot;: &quot;A String&quot;, # The size limit of uploaded files for a setting, in bytes.
          &quot;supportedContentTypes&quot;: [ # File types that can be uploaded for a setting.
            &quot;A String&quot;,
          ],
        },
      },
      &quot;fieldDependencies&quot;: [ # Output only. Provides a list of fields and values. At least one of the fields must have the corresponding value in order for this field to be allowed to be set.
        { # The field and the value it must have for another field to be allowed to be set.
          &quot;sourceField&quot;: &quot;A String&quot;, # The source field which this field depends on.
          &quot;sourceFieldValue&quot;: &quot;A String&quot;, # The value which the source field must have for this field to be allowed to be set.
        },
      ],
      &quot;fieldDescription&quot;: &quot;A String&quot;, # Output only. The description of the field.
      &quot;inputConstraint&quot;: &quot;A String&quot;, # Output only. Any input constraints associated on the values for the field.
      &quot;knownValueDescriptions&quot;: [ # Output only. If the field has a set of known values, this field will provide a description for these values.
        { # Provides detailed information about a known value that is allowed for a particular field in a PolicySchema.
          &quot;description&quot;: &quot;A String&quot;, # Output only. Additional description for this value.
          &quot;fieldDependencies&quot;: [ # Output only. Field conditions required for this value to be valid.
            { # The field and the value it must have for another field to be allowed to be set.
              &quot;sourceField&quot;: &quot;A String&quot;, # The source field which this field depends on.
              &quot;sourceFieldValue&quot;: &quot;A String&quot;, # The value which the source field must have for this field to be allowed to be set.
            },
          ],
          &quot;value&quot;: &quot;A String&quot;, # Output only. The string represenstation of the value that can be set for the field.
        },
      ],
      &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the field.
      &quot;nestedFieldDescriptions&quot;: [ # Output only. Provides the description of the fields nested in this field, if the field is a message type that defines multiple fields. Fields are suggested to be displayed by the ordering in this list, not by field number.
        # Object with schema name: GoogleChromePolicyVersionsV1PolicySchemaFieldDescription
      ],
      &quot;requiredItems&quot;: [ # Output only. Provides a list of fields that are required to be set if this field has a certain value.
        { # The fields that will become required based on the value of this field.
          &quot;fieldConditions&quot;: [ # The value(s) of the field that provoke required field enforcement. An empty field_conditions implies that any value assigned to this field will provoke required field enforcement.
            &quot;A String&quot;,
          ],
          &quot;requiredFields&quot;: [ # The fields that are required as a consequence of the field conditions.
            &quot;A String&quot;,
          ],
        },
      ],
    },
  ],
  &quot;name&quot;: &quot;A String&quot;, # Format: name=customers/{customer}/policySchemas/{schema_namespace}
  &quot;notices&quot;: [ # Output only. Special notice messages related to setting certain values in certain fields in the schema.
    { # Provides special notice messages related to a particular value in a field that is part of a PolicySchema.
      &quot;acknowledgementRequired&quot;: True or False, # Output only. Whether the user needs to acknowledge the notice message before the value can be set.
      &quot;field&quot;: &quot;A String&quot;, # Output only. The field name associated with the notice.
      &quot;noticeMessage&quot;: &quot;A String&quot;, # Output only. The notice message associate with the value of the field.
      &quot;noticeValue&quot;: &quot;A String&quot;, # Output only. The value of the field that has a notice. When setting the field to this value, the user may be required to acknowledge the notice message in order for the value to be set.
    },
  ],
  &quot;policyApiLifecycle&quot;: { # Lifecycle information. # Output only. Current lifecycle information.
    &quot;deprecatedInFavorOf&quot;: [ # In the event that this policy was deprecated in favor of another policy, the fully qualified namespace(s) of the new policies as they will show in PolicyAPI. Could only be set if policy_api_lifecycle_stage is API_DEPRECATED.
      &quot;A String&quot;,
    ],
    &quot;description&quot;: &quot;A String&quot;, # Description about current life cycle.
    &quot;endSupport&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp # End supporting date for current policy. Attempting to modify a policy after its end support date will result in a Bad Request (400 error). Could only be set if policy_api_lifecycle_stage is API_DEPRECATED.
      &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
      &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
      &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
    },
    &quot;policyApiLifecycleStage&quot;: &quot;A String&quot;, # Indicates current life cycle stage of the policy API.
    &quot;scheduledToDeprecatePolicies&quot;: [ # Corresponding to deprecated_in_favor_of, the fully qualified namespace(s) of the old policies that will be deprecated because of introduction of this policy.
      &quot;A String&quot;,
    ],
  },
  &quot;policyDescription&quot;: &quot;A String&quot;, # Output only. Description about the policy schema for user consumption.
  &quot;schemaName&quot;: &quot;A String&quot;, # Output only. The fully qualified name of the policy schema. This value is used to fill the field `policy_schema` in PolicyValue when calling BatchInheritOrgUnitPolicies BatchModifyOrgUnitPolicies BatchModifyGroupPolicies or BatchDeleteGroupPolicies.
  &quot;supportUri&quot;: &quot;A String&quot;, # Output only. URI to related support article for this schema.
  &quot;supportedPlatforms&quot;: [ # Output only. List indicates that the policy will only apply to devices/users on these platforms.
    &quot;A String&quot;,
  ],
  &quot;validTargetResources&quot;: [ # Output only. Information about applicable target resources for the policy.
    &quot;A String&quot;,
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Gets a list of policy schemas that match a specified filter value for a given customer.

Args:
  parent: string, Required. The customer for which the listing request will apply. (required)
  filter: string, The schema filter used to find a particular schema based on fields like its resource name, description and `additionalTargetKeyNames`.
  pageSize: integer, The maximum number of policy schemas to return, defaults to 100 and has a maximum of 1000.
  pageToken: string, The page token used to retrieve a specific page of the listing request.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for listing policy schemas that match a filter.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The page token used to get the next page of policy schemas.
  &quot;policySchemas&quot;: [ # The list of policy schemas that match the query.
    { # Resource representing a policy schema.
      &quot;accessRestrictions&quot;: [ # Output only. Specific access restrictions related to this policy.
        &quot;A String&quot;,
      ],
      &quot;additionalTargetKeyNames&quot;: [ # Output only. Additional key names that will be used to identify the target of the policy value. When specifying a `policyTargetKey`, each of the additional keys specified here will have to be included in the `additionalTargetKeys` map.
        { # Additional key names that will be used to identify the target of the policy value.
          &quot;key&quot;: &quot;A String&quot;, # Key name.
          &quot;keyDescription&quot;: &quot;A String&quot;, # Key description.
        },
      ],
      &quot;categoryTitle&quot;: &quot;A String&quot;, # Title of the category in which a setting belongs.
      &quot;definition&quot;: { # Describes a complete .proto file. # Schema definition using proto descriptor.
        &quot;editionDeprecated&quot;: &quot;A String&quot;, # copybara:strip_begin TODO(b/297898292) Deprecate and remove this field in favor of enums. copybara:strip_end
        &quot;enumType&quot;: [
          { # Describes an enum type.
            &quot;name&quot;: &quot;A String&quot;,
            &quot;value&quot;: [
              { # Describes a value within an enum.
                &quot;name&quot;: &quot;A String&quot;,
                &quot;number&quot;: 42,
              },
            ],
            &quot;visibility&quot;: &quot;A String&quot;, # Support for `export` and `local` keywords on enums.
          },
        ],
        &quot;messageType&quot;: [ # All top-level definitions in this file.
          { # Describes a message type.
            &quot;enumType&quot;: [
              { # Describes an enum type.
                &quot;name&quot;: &quot;A String&quot;,
                &quot;value&quot;: [
                  { # Describes a value within an enum.
                    &quot;name&quot;: &quot;A String&quot;,
                    &quot;number&quot;: 42,
                  },
                ],
                &quot;visibility&quot;: &quot;A String&quot;, # Support for `export` and `local` keywords on enums.
              },
            ],
            &quot;field&quot;: [
              { # Describes a field within a message.
                &quot;defaultValue&quot;: &quot;A String&quot;, # For numeric types, contains the original text representation of the value. For booleans, &quot;true&quot; or &quot;false&quot;. For strings, contains the default text contents (not escaped in any way). For bytes, contains the C escaped value. All bytes &gt;= 128 are escaped.
                &quot;jsonName&quot;: &quot;A String&quot;, # JSON name of this field. The value is set by protocol compiler. If the user has set a &quot;json_name&quot; option on this field, that option&#x27;s value will be used. Otherwise, it&#x27;s deduced from the field&#x27;s name by converting it to camelCase.
                &quot;label&quot;: &quot;A String&quot;,
                &quot;name&quot;: &quot;A String&quot;,
                &quot;number&quot;: 42,
                &quot;oneofIndex&quot;: 42, # If set, gives the index of a oneof in the containing type&#x27;s oneof_decl list. This field is a member of that oneof.
                &quot;proto3Optional&quot;: True or False, # If true, this is a proto3 &quot;optional&quot;. When a proto3 field is optional, it tracks presence regardless of field type. When proto3_optional is true, this field must belong to a oneof to signal to old proto3 clients that presence is tracked for this field. This oneof is known as a &quot;synthetic&quot; oneof, and this field must be its sole member (each proto3 optional field gets its own synthetic oneof). Synthetic oneofs exist in the descriptor only, and do not generate any API. Synthetic oneofs must be ordered after all &quot;real&quot; oneofs. For message fields, proto3_optional doesn&#x27;t create any semantic change, since non-repeated message fields always track presence. However it still indicates the semantic detail of whether the user wrote &quot;optional&quot; or not. This can be useful for round-tripping the .proto file. For consistency we give message fields a synthetic oneof also, even though it is not required to track presence. This is especially important because the parser can&#x27;t tell if a field is a message or an enum, so it must always create a synthetic oneof. Proto2 optional fields do not set this flag, because they already indicate optional with `LABEL_OPTIONAL`.
                &quot;type&quot;: &quot;A String&quot;, # If type_name is set, this need not be set. If both this and type_name are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
                &quot;typeName&quot;: &quot;A String&quot;, # For message and enum types, this is the name of the type. If the name starts with a &#x27;.&#x27;, it is fully-qualified. Otherwise, C++-like scoping rules are used to find the type (i.e. first the nested types within this message are searched, then within the parent, on up to the root namespace).
              },
            ],
            &quot;name&quot;: &quot;A String&quot;,
            &quot;nestedType&quot;: [
              # Object with schema name: Proto2DescriptorProto
            ],
            &quot;oneofDecl&quot;: [
              { # Describes a oneof.
                &quot;name&quot;: &quot;A String&quot;,
              },
            ],
            &quot;visibility&quot;: &quot;A String&quot;, # Support for `export` and `local` keywords on enums.
          },
        ],
        &quot;name&quot;: &quot;A String&quot;, # file name, relative to root of source tree
        &quot;optionDependency&quot;: [ # Names of files imported by this file purely for the purpose of providing option extensions. These are excluded from the dependency list above.
          &quot;A String&quot;,
        ],
        &quot;package&quot;: &quot;A String&quot;, # e.g. &quot;foo&quot;, &quot;foo.bar&quot;, etc.
        &quot;syntax&quot;: &quot;A String&quot;, # The syntax of the proto file. The supported values are &quot;proto2&quot;, &quot;proto3&quot;, and &quot;editions&quot;. If `edition` is present, this value must be &quot;editions&quot;. WARNING: This field should only be used by protobuf plugins or special cases like the proto compiler. Other uses are discouraged and developers should rely on the protoreflect APIs for their client language.
      },
      &quot;fieldDescriptions&quot;: [ # Output only. Detailed description of each field that is part of the schema. Fields are suggested to be displayed by the ordering in this list, not by field number.
        { # Provides detailed information for a particular field that is part of a PolicySchema.
          &quot;defaultValue&quot;: &quot;&quot;, # Output only. Client default if the policy is unset.
          &quot;description&quot;: &quot;A String&quot;, # Deprecated. Use name and field_description instead. The description for the field.
          &quot;field&quot;: &quot;A String&quot;, # Output only. The name of the field for associated with this description.
          &quot;fieldConstraints&quot;: { # Information about any range constraints. # Output only. Information on any input constraints associated on the values for the field.
            &quot;numericRangeConstraint&quot;: { # A constraint on upper and/or lower bounds, with at least one being set. # The allowed range for numeric fields.
              &quot;maximum&quot;: &quot;A String&quot;, # Maximum value.
              &quot;minimum&quot;: &quot;A String&quot;, # Minimum value.
            },
            &quot;uploadedFileConstraints&quot;: { # Constraints on the uploaded file of a file policy. # Constraints on the uploaded file of a file policy. If present, this policy requires a URL that can be fetched by uploading a file with the constraints specified in this proto.
              &quot;sizeLimitBytes&quot;: &quot;A String&quot;, # The size limit of uploaded files for a setting, in bytes.
              &quot;supportedContentTypes&quot;: [ # File types that can be uploaded for a setting.
                &quot;A String&quot;,
              ],
            },
          },
          &quot;fieldDependencies&quot;: [ # Output only. Provides a list of fields and values. At least one of the fields must have the corresponding value in order for this field to be allowed to be set.
            { # The field and the value it must have for another field to be allowed to be set.
              &quot;sourceField&quot;: &quot;A String&quot;, # The source field which this field depends on.
              &quot;sourceFieldValue&quot;: &quot;A String&quot;, # The value which the source field must have for this field to be allowed to be set.
            },
          ],
          &quot;fieldDescription&quot;: &quot;A String&quot;, # Output only. The description of the field.
          &quot;inputConstraint&quot;: &quot;A String&quot;, # Output only. Any input constraints associated on the values for the field.
          &quot;knownValueDescriptions&quot;: [ # Output only. If the field has a set of known values, this field will provide a description for these values.
            { # Provides detailed information about a known value that is allowed for a particular field in a PolicySchema.
              &quot;description&quot;: &quot;A String&quot;, # Output only. Additional description for this value.
              &quot;fieldDependencies&quot;: [ # Output only. Field conditions required for this value to be valid.
                { # The field and the value it must have for another field to be allowed to be set.
                  &quot;sourceField&quot;: &quot;A String&quot;, # The source field which this field depends on.
                  &quot;sourceFieldValue&quot;: &quot;A String&quot;, # The value which the source field must have for this field to be allowed to be set.
                },
              ],
              &quot;value&quot;: &quot;A String&quot;, # Output only. The string represenstation of the value that can be set for the field.
            },
          ],
          &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the field.
          &quot;nestedFieldDescriptions&quot;: [ # Output only. Provides the description of the fields nested in this field, if the field is a message type that defines multiple fields. Fields are suggested to be displayed by the ordering in this list, not by field number.
            # Object with schema name: GoogleChromePolicyVersionsV1PolicySchemaFieldDescription
          ],
          &quot;requiredItems&quot;: [ # Output only. Provides a list of fields that are required to be set if this field has a certain value.
            { # The fields that will become required based on the value of this field.
              &quot;fieldConditions&quot;: [ # The value(s) of the field that provoke required field enforcement. An empty field_conditions implies that any value assigned to this field will provoke required field enforcement.
                &quot;A String&quot;,
              ],
              &quot;requiredFields&quot;: [ # The fields that are required as a consequence of the field conditions.
                &quot;A String&quot;,
              ],
            },
          ],
        },
      ],
      &quot;name&quot;: &quot;A String&quot;, # Format: name=customers/{customer}/policySchemas/{schema_namespace}
      &quot;notices&quot;: [ # Output only. Special notice messages related to setting certain values in certain fields in the schema.
        { # Provides special notice messages related to a particular value in a field that is part of a PolicySchema.
          &quot;acknowledgementRequired&quot;: True or False, # Output only. Whether the user needs to acknowledge the notice message before the value can be set.
          &quot;field&quot;: &quot;A String&quot;, # Output only. The field name associated with the notice.
          &quot;noticeMessage&quot;: &quot;A String&quot;, # Output only. The notice message associate with the value of the field.
          &quot;noticeValue&quot;: &quot;A String&quot;, # Output only. The value of the field that has a notice. When setting the field to this value, the user may be required to acknowledge the notice message in order for the value to be set.
        },
      ],
      &quot;policyApiLifecycle&quot;: { # Lifecycle information. # Output only. Current lifecycle information.
        &quot;deprecatedInFavorOf&quot;: [ # In the event that this policy was deprecated in favor of another policy, the fully qualified namespace(s) of the new policies as they will show in PolicyAPI. Could only be set if policy_api_lifecycle_stage is API_DEPRECATED.
          &quot;A String&quot;,
        ],
        &quot;description&quot;: &quot;A String&quot;, # Description about current life cycle.
        &quot;endSupport&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp # End supporting date for current policy. Attempting to modify a policy after its end support date will result in a Bad Request (400 error). Could only be set if policy_api_lifecycle_stage is API_DEPRECATED.
          &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
          &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
          &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
        },
        &quot;policyApiLifecycleStage&quot;: &quot;A String&quot;, # Indicates current life cycle stage of the policy API.
        &quot;scheduledToDeprecatePolicies&quot;: [ # Corresponding to deprecated_in_favor_of, the fully qualified namespace(s) of the old policies that will be deprecated because of introduction of this policy.
          &quot;A String&quot;,
        ],
      },
      &quot;policyDescription&quot;: &quot;A String&quot;, # Output only. Description about the policy schema for user consumption.
      &quot;schemaName&quot;: &quot;A String&quot;, # Output only. The fully qualified name of the policy schema. This value is used to fill the field `policy_schema` in PolicyValue when calling BatchInheritOrgUnitPolicies BatchModifyOrgUnitPolicies BatchModifyGroupPolicies or BatchDeleteGroupPolicies.
      &quot;supportUri&quot;: &quot;A String&quot;, # Output only. URI to related support article for this schema.
      &quot;supportedPlatforms&quot;: [ # Output only. List indicates that the policy will only apply to devices/users on these platforms.
        &quot;A String&quot;,
      ],
      &quot;validTargetResources&quot;: [ # Output only. Information about applicable target resources for the policy.
        &quot;A String&quot;,
      ],
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next()</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>

</body></html>