<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(previous_request, previous_response)</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. Next ID: 10
  &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;definition&quot;: { # Describes a complete .proto file. # Schema definition using proto descriptor.
    &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;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;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 be 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;name&quot;: &quot;A String&quot;, # file name, relative to root of source tree
    &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; and &quot;proto3&quot;.
  },
  &quot;fieldDescriptions&quot;: [ # Output only. Detailed description of each field that is part of the schema.
    { # Provides detailed information for a particular field that is part of a PolicySchema.
      &quot;description&quot;: &quot;A String&quot;, # Output only. 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;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 know 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;value&quot;: &quot;A String&quot;, # Output only. The string represenstation of the value that can be set for 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.
        # Object with schema name: GoogleChromePolicyV1PolicySchemaFieldDescription
      ],
    },
  ],
  &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;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 full qualified name of the policy schema. This value is used to fill the field `policy_schema` in PolicyValue when calling BatchInheritOrgUnitPolicies or BatchModifyOrgUnitPolicies.
  &quot;supportUri&quot;: &quot;A String&quot;, # Output only. URI to related support article for this schema.
}</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.
  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. Next ID: 10
      &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;definition&quot;: { # Describes a complete .proto file. # Schema definition using proto descriptor.
        &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;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;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 be 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;name&quot;: &quot;A String&quot;, # file name, relative to root of source tree
        &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; and &quot;proto3&quot;.
      },
      &quot;fieldDescriptions&quot;: [ # Output only. Detailed description of each field that is part of the schema.
        { # Provides detailed information for a particular field that is part of a PolicySchema.
          &quot;description&quot;: &quot;A String&quot;, # Output only. 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;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 know 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;value&quot;: &quot;A String&quot;, # Output only. The string represenstation of the value that can be set for 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.
            # Object with schema name: GoogleChromePolicyV1PolicySchemaFieldDescription
          ],
        },
      ],
      &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;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 full qualified name of the policy schema. This value is used to fill the field `policy_schema` in PolicyValue when calling BatchInheritOrgUnitPolicies or BatchModifyOrgUnitPolicies.
      &quot;supportUri&quot;: &quot;A String&quot;, # Output only. URI to related support article for this schema.
    },
  ],
}</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>

</body></html>