<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="serviceconsumermanagement_v1.html">Service Consumer Management API</a> . <a href="serviceconsumermanagement_v1.services.html">services</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="serviceconsumermanagement_v1.services.tenancyUnits.html">tenancyUnits()</a></code>
</p>
<p class="firstline">Returns the tenancyUnits Resource.</p>

<p class="toc_element">
  <code><a href="#search">search(parent, pageToken=None, x__xgafv=None, query=None, pageSize=None)</a></code></p>
<p class="firstline">Search tenancy units for a managed service.</p>
<p class="toc_element">
  <code><a href="#search_next">search_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="search">search(parent, pageToken=None, x__xgafv=None, query=None, pageSize=None)</code>
  <pre>Search tenancy units for a managed service.

Args:
  parent: string, Service for which search is performed.
services/{service}
{service} the name of a service, for example 'service.googleapis.com'. (required)
  pageToken: string, The continuation token, which is used to page through large result sets.
To get the next page of results, set this parameter to the value of
`nextPageToken` from the previous response.

Optional.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  query: string, Set a query `{expression}` for querying tenancy units. Your `{expression}`
must be in the format: `field_name=literal_string`. The `field_name` is the
name of the field you want to compare. Supported fields are
`tenant_resources.tag` and `tenant_resources.resource`.

For example, to search tenancy units that contain at least one tenant
resource with a given tag 'xyz', use the query `tenant_resources.tag=xyz`.
To search tenancy units that contain at least one tenant resource with
a given resource name 'projects/123456', use the query
`tenant_resources.resource=projects/123456`.

Multiple expressions can be joined with `AND`s. Tenancy units must match
all expressions to be included in the result set. For example,
`tenant_resources.tag=xyz AND tenant_resources.resource=projects/123456`

Optional.
  pageSize: integer, The maximum number of results returned by this request. Currently, the
default maximum is set to 1000. If `page_size` isn't provided or the size
provided is a number larger than 1000, it's automatically set to 1000.

Optional.

Returns:
  An object of the form:

    { # Response for the search query.
    "nextPageToken": "A String", # Pagination token for large results.
    "tenancyUnits": [ # Tenancy Units matching the request.
      { # Representation of a tenancy unit.
        "tenantResources": [ # Resources constituting the tenancy unit.
            # There can be at most 512 tenant resources in a tenancy unit.
          { # Resource constituting the TenancyUnit.
            "status": "A String", # Status of tenant resource.
            "tag": "A String", # Unique per single tenancy unit.
            "resource": "A String", # @OutputOnly Identifier of the tenant resource.
                # For cloud projects, it is in the form 'projects/{number}'.
                # For example 'projects/123456'.
          },
        ],
        "consumer": "A String", # @OutputOnly Cloud resource name of the consumer of this service.
            # For example 'projects/123456'.
        "createTime": "A String", # @OutputOnly The time this tenancy unit was created.
        "service": "A String", # Output only. Google Cloud API name of the managed service owning this
            # tenancy unit.
            # For example 'serviceconsumermanagement.googleapis.com'.
        "name": "A String", # Globally unique identifier of this tenancy unit
            # "services/{service}/{collection id}/{resource id}/tenancyUnits/{unit}"
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="search_next">search_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 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>