<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="dataplex_v1.html">Cloud Dataplex API</a> . <a href="dataplex_v1.projects.html">projects</a> . <a href="dataplex_v1.projects.locations.html">locations</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="dataplex_v1.projects.locations.aspectTypes.html">aspectTypes()</a></code>
</p>
<p class="firstline">Returns the aspectTypes Resource.</p>

<p class="toc_element">
  <code><a href="dataplex_v1.projects.locations.changeRequests.html">changeRequests()</a></code>
</p>
<p class="firstline">Returns the changeRequests Resource.</p>

<p class="toc_element">
  <code><a href="dataplex_v1.projects.locations.dataAttributeBindings.html">dataAttributeBindings()</a></code>
</p>
<p class="firstline">Returns the dataAttributeBindings Resource.</p>

<p class="toc_element">
  <code><a href="dataplex_v1.projects.locations.dataProducts.html">dataProducts()</a></code>
</p>
<p class="firstline">Returns the dataProducts Resource.</p>

<p class="toc_element">
  <code><a href="dataplex_v1.projects.locations.dataScans.html">dataScans()</a></code>
</p>
<p class="firstline">Returns the dataScans Resource.</p>

<p class="toc_element">
  <code><a href="dataplex_v1.projects.locations.dataTaxonomies.html">dataTaxonomies()</a></code>
</p>
<p class="firstline">Returns the dataTaxonomies Resource.</p>

<p class="toc_element">
  <code><a href="dataplex_v1.projects.locations.entryGroups.html">entryGroups()</a></code>
</p>
<p class="firstline">Returns the entryGroups Resource.</p>

<p class="toc_element">
  <code><a href="dataplex_v1.projects.locations.entryLinkTypes.html">entryLinkTypes()</a></code>
</p>
<p class="firstline">Returns the entryLinkTypes Resource.</p>

<p class="toc_element">
  <code><a href="dataplex_v1.projects.locations.entryTypes.html">entryTypes()</a></code>
</p>
<p class="firstline">Returns the entryTypes Resource.</p>

<p class="toc_element">
  <code><a href="dataplex_v1.projects.locations.glossaries.html">glossaries()</a></code>
</p>
<p class="firstline">Returns the glossaries Resource.</p>

<p class="toc_element">
  <code><a href="dataplex_v1.projects.locations.governanceRules.html">governanceRules()</a></code>
</p>
<p class="firstline">Returns the governanceRules Resource.</p>

<p class="toc_element">
  <code><a href="dataplex_v1.projects.locations.lakes.html">lakes()</a></code>
</p>
<p class="firstline">Returns the lakes Resource.</p>

<p class="toc_element">
  <code><a href="dataplex_v1.projects.locations.metadataJobs.html">metadataJobs()</a></code>
</p>
<p class="firstline">Returns the metadataJobs Resource.</p>

<p class="toc_element">
  <code><a href="dataplex_v1.projects.locations.operations.html">operations()</a></code>
</p>
<p class="firstline">Returns the operations Resource.</p>

<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">Gets information about a location.</p>
<p class="toc_element">
  <code><a href="#list">list(name, extraLocationTypes=None, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists information about the supported locations for this service.</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>
<p class="toc_element">
  <code><a href="#lookupEntry">lookupEntry(name, aspectTypes=None, entry=None, paths=None, view=None, x__xgafv=None)</a></code></p>
<p class="firstline">Looks up an entry by name using the permission on the source system. Caution: The Vertex AI, Bigtable, Spanner, Pub/Sub, Dataform, and Dataproc Metastore metadata that is stored in Dataplex Universal Catalog is changing. For more information, see Changes to metadata stored in Dataplex Universal Catalog (https://cloud.google.com/dataplex/docs/metadata-changes).</p>
<p class="toc_element">
  <code><a href="#searchEntries">searchEntries(name, orderBy=None, pageSize=None, pageToken=None, query=None, scope=None, semanticSearch=None, x__xgafv=None)</a></code></p>
<p class="firstline">Searches for Entries matching the given query and scope.</p>
<p class="toc_element">
  <code><a href="#searchEntries_next">searchEntries_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>Gets information about a location.

Args:
  name: string, Resource name for the location. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A resource that represents a Google Cloud location.
  &quot;displayName&quot;: &quot;A String&quot;, # The friendly name for this location, typically a nearby city name. For example, &quot;Tokyo&quot;.
  &quot;labels&quot;: { # Cross-service attributes for the location. For example {&quot;cloud.googleapis.com/region&quot;: &quot;us-east1&quot;}
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;locationId&quot;: &quot;A String&quot;, # The canonical id for this location. For example: &quot;us-east1&quot;.
  &quot;metadata&quot;: { # Service-specific metadata. For example the available capacity at the given location.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # Resource name for the location, which may vary between implementations. For example: &quot;projects/example-project/locations/us-east1&quot;
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(name, extraLocationTypes=None, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists information about the supported locations for this service.

Args:
  name: string, The resource that owns the locations collection, if applicable. (required)
  extraLocationTypes: string, Optional. Do not use this field. It is unsupported and is ignored unless explicitly documented otherwise. This is primarily for internal usage. (repeated)
  filter: string, A filter to narrow down results to a preferred subset. The filtering language accepts strings like &quot;displayName=tokyo&quot;, and is documented in more detail in AIP-160 (https://google.aip.dev/160).
  pageSize: integer, The maximum number of results to return. If not set, the service selects a default.
  pageToken: string, A page token received from the next_page_token field in the response. Send that page token to receive the subsequent page.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The response message for Locations.ListLocations.
  &quot;locations&quot;: [ # A list of locations that matches the specified filter in the request.
    { # A resource that represents a Google Cloud location.
      &quot;displayName&quot;: &quot;A String&quot;, # The friendly name for this location, typically a nearby city name. For example, &quot;Tokyo&quot;.
      &quot;labels&quot;: { # Cross-service attributes for the location. For example {&quot;cloud.googleapis.com/region&quot;: &quot;us-east1&quot;}
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;locationId&quot;: &quot;A String&quot;, # The canonical id for this location. For example: &quot;us-east1&quot;.
      &quot;metadata&quot;: { # Service-specific metadata. For example the available capacity at the given location.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
      &quot;name&quot;: &quot;A String&quot;, # Resource name for the location, which may vary between implementations. For example: &quot;projects/example-project/locations/us-east1&quot;
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The standard List next-page token.
}</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>

<div class="method">
    <code class="details" id="lookupEntry">lookupEntry(name, aspectTypes=None, entry=None, paths=None, view=None, x__xgafv=None)</code>
  <pre>Looks up an entry by name using the permission on the source system. Caution: The Vertex AI, Bigtable, Spanner, Pub/Sub, Dataform, and Dataproc Metastore metadata that is stored in Dataplex Universal Catalog is changing. For more information, see Changes to metadata stored in Dataplex Universal Catalog (https://cloud.google.com/dataplex/docs/metadata-changes).

Args:
  name: string, Required. The project to which the request should be attributed in the following form: projects/{project}/locations/{location}. (required)
  aspectTypes: string, Optional. Limits the aspects returned to the provided aspect types. It only works for CUSTOM view. (repeated)
  entry: string, Required. The resource name of the Entry: projects/{project}/locations/{location}/entryGroups/{entry_group}/entries/{entry}.
  paths: string, Optional. Limits the aspects returned to those associated with the provided paths within the Entry. It only works for CUSTOM view. (repeated)
  view: string, Optional. View to control which parts of an entry the service should return.
    Allowed values
      ENTRY_VIEW_UNSPECIFIED - Unspecified EntryView. Defaults to FULL.
      BASIC - Returns entry only, without aspects.
      FULL - Returns all required aspects as well as the keys of all non-required aspects.
      CUSTOM - Returns aspects matching custom fields in GetEntryRequest. If the number of aspects exceeds 100, the first 100 will be returned.
      ALL - 
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An entry is a representation of a data resource that can be described by various metadata.
  &quot;aspects&quot;: { # Optional. The aspects that are attached to the entry. Depending on how the aspect is attached to the entry, the format of the aspect key can be one of the following: If the aspect is attached directly to the entry: {project_id_or_number}.{location_id}.{aspect_type_id} If the aspect is attached to an entry&#x27;s path: {project_id_or_number}.{location_id}.{aspect_type_id}@{path}
    &quot;a_key&quot;: { # An aspect is a single piece of metadata describing an entry.
      &quot;aspectSource&quot;: { # Information related to the source system of the aspect. # Optional. Information related to the source system of the aspect.
        &quot;createTime&quot;: &quot;A String&quot;, # The time the aspect was created in the source system.
        &quot;dataVersion&quot;: &quot;A String&quot;, # The version of the data format used to produce this data. This field is used to indicated when the underlying data format changes (e.g., schema modifications, changes to the source URL format definition, etc).
        &quot;updateTime&quot;: &quot;A String&quot;, # The time the aspect was last updated in the source system.
      },
      &quot;aspectType&quot;: &quot;A String&quot;, # Output only. The resource name of the type used to create this Aspect.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when the Aspect was created.
      &quot;data&quot;: { # Required. The content of the aspect, according to its aspect type schema. The maximum size of the field is 120KB (encoded as UTF-8).
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
      &quot;path&quot;: &quot;A String&quot;, # Output only. The path in the entry under which the aspect is attached.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time when the Aspect was last updated.
    },
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when the entry was created in Dataplex Universal Catalog.
  &quot;entrySource&quot;: { # Information related to the source system of the data resource that is represented by the entry. # Optional. Information related to the source system of the data resource that is represented by the entry.
    &quot;ancestors&quot;: [ # Immutable. The entries representing the ancestors of the data resource in the source system.
      { # Information about individual items in the hierarchy that is associated with the data resource.
        &quot;name&quot;: &quot;A String&quot;, # Optional. The name of the ancestor resource.
        &quot;type&quot;: &quot;A String&quot;, # Optional. The type of the ancestor resource.
      },
    ],
    &quot;createTime&quot;: &quot;A String&quot;, # The time when the resource was created in the source system.
    &quot;description&quot;: &quot;A String&quot;, # A description of the data resource. Maximum length is 2,000 characters.
    &quot;displayName&quot;: &quot;A String&quot;, # A user-friendly display name. Maximum length is 500 characters.
    &quot;labels&quot;: { # User-defined labels. The maximum size of keys and values is 128 characters each.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;location&quot;: &quot;A String&quot;, # Output only. Location of the resource in the source system. You can search the entry by this location. By default, this should match the location of the entry group containing this entry. A different value allows capturing the source location for data external to Google Cloud.
    &quot;platform&quot;: &quot;A String&quot;, # The platform containing the source system. Maximum length is 64 characters.
    &quot;resource&quot;: &quot;A String&quot;, # The name of the resource in the source system. Maximum length is 4,000 characters.
    &quot;system&quot;: &quot;A String&quot;, # The name of the source system. Maximum length is 64 characters.
    &quot;updateTime&quot;: &quot;A String&quot;, # The time when the resource was last updated in the source system. If the entry exists in the system and its EntrySource has update_time populated, further updates to the EntrySource of the entry must provide incremental updates to its update_time.
  },
  &quot;entryType&quot;: &quot;A String&quot;, # Required. Immutable. The relative resource name of the entry type that was used to create this entry, in the format projects/{project_id_or_number}/locations/{location_id}/entryTypes/{entry_type_id}.
  &quot;fullyQualifiedName&quot;: &quot;A String&quot;, # Optional. A name for the entry that can be referenced by an external system. For more information, see Fully qualified names (https://cloud.google.com/data-catalog/docs/fully-qualified-names). The maximum size of the field is 4000 characters.
  &quot;name&quot;: &quot;A String&quot;, # Identifier. The relative resource name of the entry, in the format projects/{project_id_or_number}/locations/{location_id}/entryGroups/{entry_group_id}/entries/{entry_id}.
  &quot;parentEntry&quot;: &quot;A String&quot;, # Optional. Immutable. The resource name of the parent entry, in the format projects/{project_id_or_number}/locations/{location_id}/entryGroups/{entry_group_id}/entries/{entry_id}.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time when the entry was last updated in Dataplex Universal Catalog.
}</pre>
</div>

<div class="method">
    <code class="details" id="searchEntries">searchEntries(name, orderBy=None, pageSize=None, pageToken=None, query=None, scope=None, semanticSearch=None, x__xgafv=None)</code>
  <pre>Searches for Entries matching the given query and scope.

Args:
  name: string, Required. The project to which the request should be attributed in the following form: projects/{project}/locations/global. (required)
  orderBy: string, Optional. Specifies the ordering of results. Supported values are: relevance last_modified_timestamp last_modified_timestamp asc
  pageSize: integer, Optional. Number of results in the search page. If &lt;=0, then defaults to 10. Max limit for page_size is 1000. Throws an invalid argument for page_size &gt; 1000.
  pageToken: string, Optional. Page token received from a previous SearchEntries call. Provide this to retrieve the subsequent page.
  query: string, Required. The query against which entries in scope should be matched. The query syntax is defined in Search syntax for Dataplex Universal Catalog (https://cloud.google.com/dataplex/docs/search-syntax).
  scope: string, Optional. The scope under which the search should be operating. It must either be organizations/ or projects/. If it is unspecified, it defaults to the organization where the project provided in name is located.
  semanticSearch: boolean, Optional. Specifies whether the search should understand the meaning and intent behind the query, rather than just matching keywords.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Token to retrieve the next page of results, or empty if there are no more results in the list.
  &quot;results&quot;: [ # The results matching the search query.
    { # A single result of a SearchEntries request.
      &quot;dataplexEntry&quot;: { # An entry is a representation of a data resource that can be described by various metadata.
        &quot;aspects&quot;: { # Optional. The aspects that are attached to the entry. Depending on how the aspect is attached to the entry, the format of the aspect key can be one of the following: If the aspect is attached directly to the entry: {project_id_or_number}.{location_id}.{aspect_type_id} If the aspect is attached to an entry&#x27;s path: {project_id_or_number}.{location_id}.{aspect_type_id}@{path}
          &quot;a_key&quot;: { # An aspect is a single piece of metadata describing an entry.
            &quot;aspectSource&quot;: { # Information related to the source system of the aspect. # Optional. Information related to the source system of the aspect.
              &quot;createTime&quot;: &quot;A String&quot;, # The time the aspect was created in the source system.
              &quot;dataVersion&quot;: &quot;A String&quot;, # The version of the data format used to produce this data. This field is used to indicated when the underlying data format changes (e.g., schema modifications, changes to the source URL format definition, etc).
              &quot;updateTime&quot;: &quot;A String&quot;, # The time the aspect was last updated in the source system.
            },
            &quot;aspectType&quot;: &quot;A String&quot;, # Output only. The resource name of the type used to create this Aspect.
            &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when the Aspect was created.
            &quot;data&quot;: { # Required. The content of the aspect, according to its aspect type schema. The maximum size of the field is 120KB (encoded as UTF-8).
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
            },
            &quot;path&quot;: &quot;A String&quot;, # Output only. The path in the entry under which the aspect is attached.
            &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time when the Aspect was last updated.
          },
        },
        &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when the entry was created in Dataplex Universal Catalog.
        &quot;entrySource&quot;: { # Information related to the source system of the data resource that is represented by the entry. # Optional. Information related to the source system of the data resource that is represented by the entry.
          &quot;ancestors&quot;: [ # Immutable. The entries representing the ancestors of the data resource in the source system.
            { # Information about individual items in the hierarchy that is associated with the data resource.
              &quot;name&quot;: &quot;A String&quot;, # Optional. The name of the ancestor resource.
              &quot;type&quot;: &quot;A String&quot;, # Optional. The type of the ancestor resource.
            },
          ],
          &quot;createTime&quot;: &quot;A String&quot;, # The time when the resource was created in the source system.
          &quot;description&quot;: &quot;A String&quot;, # A description of the data resource. Maximum length is 2,000 characters.
          &quot;displayName&quot;: &quot;A String&quot;, # A user-friendly display name. Maximum length is 500 characters.
          &quot;labels&quot;: { # User-defined labels. The maximum size of keys and values is 128 characters each.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;location&quot;: &quot;A String&quot;, # Output only. Location of the resource in the source system. You can search the entry by this location. By default, this should match the location of the entry group containing this entry. A different value allows capturing the source location for data external to Google Cloud.
          &quot;platform&quot;: &quot;A String&quot;, # The platform containing the source system. Maximum length is 64 characters.
          &quot;resource&quot;: &quot;A String&quot;, # The name of the resource in the source system. Maximum length is 4,000 characters.
          &quot;system&quot;: &quot;A String&quot;, # The name of the source system. Maximum length is 64 characters.
          &quot;updateTime&quot;: &quot;A String&quot;, # The time when the resource was last updated in the source system. If the entry exists in the system and its EntrySource has update_time populated, further updates to the EntrySource of the entry must provide incremental updates to its update_time.
        },
        &quot;entryType&quot;: &quot;A String&quot;, # Required. Immutable. The relative resource name of the entry type that was used to create this entry, in the format projects/{project_id_or_number}/locations/{location_id}/entryTypes/{entry_type_id}.
        &quot;fullyQualifiedName&quot;: &quot;A String&quot;, # Optional. A name for the entry that can be referenced by an external system. For more information, see Fully qualified names (https://cloud.google.com/data-catalog/docs/fully-qualified-names). The maximum size of the field is 4000 characters.
        &quot;name&quot;: &quot;A String&quot;, # Identifier. The relative resource name of the entry, in the format projects/{project_id_or_number}/locations/{location_id}/entryGroups/{entry_group_id}/entries/{entry_id}.
        &quot;parentEntry&quot;: &quot;A String&quot;, # Optional. Immutable. The resource name of the parent entry, in the format projects/{project_id_or_number}/locations/{location_id}/entryGroups/{entry_group_id}/entries/{entry_id}.
        &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time when the entry was last updated in Dataplex Universal Catalog.
      },
      &quot;linkedResource&quot;: &quot;A String&quot;, # Linked resource name.
      &quot;snippets&quot;: { # Snippets for the entry, contains HTML-style highlighting for matched tokens, will be used in UI. # Snippets.
        &quot;dataplexEntry&quot;: { # An entry is a representation of a data resource that can be described by various metadata. # Entry
          &quot;aspects&quot;: { # Optional. The aspects that are attached to the entry. Depending on how the aspect is attached to the entry, the format of the aspect key can be one of the following: If the aspect is attached directly to the entry: {project_id_or_number}.{location_id}.{aspect_type_id} If the aspect is attached to an entry&#x27;s path: {project_id_or_number}.{location_id}.{aspect_type_id}@{path}
            &quot;a_key&quot;: { # An aspect is a single piece of metadata describing an entry.
              &quot;aspectSource&quot;: { # Information related to the source system of the aspect. # Optional. Information related to the source system of the aspect.
                &quot;createTime&quot;: &quot;A String&quot;, # The time the aspect was created in the source system.
                &quot;dataVersion&quot;: &quot;A String&quot;, # The version of the data format used to produce this data. This field is used to indicated when the underlying data format changes (e.g., schema modifications, changes to the source URL format definition, etc).
                &quot;updateTime&quot;: &quot;A String&quot;, # The time the aspect was last updated in the source system.
              },
              &quot;aspectType&quot;: &quot;A String&quot;, # Output only. The resource name of the type used to create this Aspect.
              &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when the Aspect was created.
              &quot;data&quot;: { # Required. The content of the aspect, according to its aspect type schema. The maximum size of the field is 120KB (encoded as UTF-8).
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
              },
              &quot;path&quot;: &quot;A String&quot;, # Output only. The path in the entry under which the aspect is attached.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time when the Aspect was last updated.
            },
          },
          &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when the entry was created in Dataplex Universal Catalog.
          &quot;entrySource&quot;: { # Information related to the source system of the data resource that is represented by the entry. # Optional. Information related to the source system of the data resource that is represented by the entry.
            &quot;ancestors&quot;: [ # Immutable. The entries representing the ancestors of the data resource in the source system.
              { # Information about individual items in the hierarchy that is associated with the data resource.
                &quot;name&quot;: &quot;A String&quot;, # Optional. The name of the ancestor resource.
                &quot;type&quot;: &quot;A String&quot;, # Optional. The type of the ancestor resource.
              },
            ],
            &quot;createTime&quot;: &quot;A String&quot;, # The time when the resource was created in the source system.
            &quot;description&quot;: &quot;A String&quot;, # A description of the data resource. Maximum length is 2,000 characters.
            &quot;displayName&quot;: &quot;A String&quot;, # A user-friendly display name. Maximum length is 500 characters.
            &quot;labels&quot;: { # User-defined labels. The maximum size of keys and values is 128 characters each.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;location&quot;: &quot;A String&quot;, # Output only. Location of the resource in the source system. You can search the entry by this location. By default, this should match the location of the entry group containing this entry. A different value allows capturing the source location for data external to Google Cloud.
            &quot;platform&quot;: &quot;A String&quot;, # The platform containing the source system. Maximum length is 64 characters.
            &quot;resource&quot;: &quot;A String&quot;, # The name of the resource in the source system. Maximum length is 4,000 characters.
            &quot;system&quot;: &quot;A String&quot;, # The name of the source system. Maximum length is 64 characters.
            &quot;updateTime&quot;: &quot;A String&quot;, # The time when the resource was last updated in the source system. If the entry exists in the system and its EntrySource has update_time populated, further updates to the EntrySource of the entry must provide incremental updates to its update_time.
          },
          &quot;entryType&quot;: &quot;A String&quot;, # Required. Immutable. The relative resource name of the entry type that was used to create this entry, in the format projects/{project_id_or_number}/locations/{location_id}/entryTypes/{entry_type_id}.
          &quot;fullyQualifiedName&quot;: &quot;A String&quot;, # Optional. A name for the entry that can be referenced by an external system. For more information, see Fully qualified names (https://cloud.google.com/data-catalog/docs/fully-qualified-names). The maximum size of the field is 4000 characters.
          &quot;name&quot;: &quot;A String&quot;, # Identifier. The relative resource name of the entry, in the format projects/{project_id_or_number}/locations/{location_id}/entryGroups/{entry_group_id}/entries/{entry_id}.
          &quot;parentEntry&quot;: &quot;A String&quot;, # Optional. Immutable. The resource name of the parent entry, in the format projects/{project_id_or_number}/locations/{location_id}/entryGroups/{entry_group_id}/entries/{entry_id}.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time when the entry was last updated in Dataplex Universal Catalog.
        },
      },
    },
  ],
  &quot;totalSize&quot;: 42, # The estimated total number of matching entries. This number isn&#x27;t guaranteed to be accurate.
  &quot;unreachable&quot;: [ # Locations that the service couldn&#x27;t reach. Search results don&#x27;t include data from these locations.
    &quot;A String&quot;,
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="searchEntries_next">searchEntries_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>