<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: 12
  &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;fieldDependencies&quot;: [ # Output only. Provides a list of fields and the values they must have 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;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;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;policyApiLifeycle&quot;: { # Output only. Current life cycle information.
    &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 value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # End supporting date for current policy.
      &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;, # Indicate current life cycle stage of the policy API.
  },
  &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 or BatchModifyOrgUnitPolicies
  &quot;supportUri&quot;: &quot;A String&quot;, # Output only. URI to related support article for this schema.
  &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.
  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: 12
      &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;fieldDependencies&quot;: [ # Output only. Provides a list of fields and the values they must have 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;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;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;policyApiLifeycle&quot;: { # Output only. Current life cycle information.
        &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 value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # End supporting date for current policy.
          &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;, # Indicate current life cycle stage of the policy API.
      },
      &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 or BatchModifyOrgUnitPolicies
      &quot;supportUri&quot;: &quot;A String&quot;, # Output only. URI to related support article for this schema.
      &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(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>