<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="cloudsearch_v1.html">Cloud Search API</a> . <a href="cloudsearch_v1.debug.html">debug</a> . <a href="cloudsearch_v1.debug.datasources.html">datasources</a> . <a href="cloudsearch_v1.debug.datasources.items.html">items</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="cloudsearch_v1.debug.datasources.items.unmappedids.html">unmappedids()</a></code>
</p>
<p class="firstline">Returns the unmappedids Resource.</p>

<p class="toc_element">
  <code><a href="#checkAccess">checkAccess(name, body=None, debugOptions_enableDebugging=None, x__xgafv=None)</a></code></p>
<p class="firstline">Checks whether an item is accessible by specified principal. **Note:** This API requires an admin account to execute.</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="#searchByViewUrl">searchByViewUrl(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Fetches the item whose viewUrl exactly matches that of the URL provided in the request. **Note:** This API requires an admin account to execute.</p>
<p class="toc_element">
  <code><a href="#searchByViewUrl_next">searchByViewUrl_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="checkAccess">checkAccess(name, body=None, debugOptions_enableDebugging=None, x__xgafv=None)</code>
  <pre>Checks whether an item is accessible by specified principal. **Note:** This API requires an admin account to execute.

Args:
  name: string, Item name, format: datasources/{source_id}/items/{item_id} (required)
  body: object, The request body.
    The object takes the form of:

{ # Reference to a user, group, or domain.
  &quot;userResourceName&quot;: &quot;A String&quot;, # This principal is a user identified using an external identity. The name field must specify the user resource name with this format: identitysources/{source_id}/users/{ID}
  &quot;gsuitePrincipal&quot;: { # This principal is a GSuite user, group or domain.
    &quot;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a G Suite group account
    &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
    &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
  },
  &quot;groupResourceName&quot;: &quot;A String&quot;, # This principal is a group identified using an external identity. The name field must specify the group resource name with this format: identitysources/{source_id}/groups/{ID}
}

  debugOptions_enableDebugging: boolean, If you are asked by Google to help with debugging, set this field. Otherwise, ignore this field.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;hasAccess&quot;: True or False, # Returns true if principal has access. Returns false otherwise.
  }</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="searchByViewUrl">searchByViewUrl(name, body=None, x__xgafv=None)</code>
  <pre>Fetches the item whose viewUrl exactly matches that of the URL provided in the request. **Note:** This API requires an admin account to execute.

Args:
  name: string, Source name, format: datasources/{source_id} (required)
  body: object, The request body.
    The object takes the form of:

{
    &quot;viewUrl&quot;: &quot;A String&quot;, # Specify the full view URL to find the corresponding item. The maximum length is 2048 characters.
    &quot;debugOptions&quot;: { # Shared request debug options for all cloudsearch RPC methods. # Common debug options.
      &quot;enableDebugging&quot;: True or False, # If you are asked by Google to help with debugging, set this field. Otherwise, ignore this field.
    },
    &quot;pageToken&quot;: &quot;A String&quot;, # The next_page_token value returned from a previous request, if any.
  }

  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;items&quot;: [
      { # Represents a single object that is an item in the search index, such as a file, folder, or a database record.
        &quot;status&quot;: { # This contains item&#x27;s status and any errors. # Status of the item. Output only field.
          &quot;code&quot;: &quot;A String&quot;, # Status code.
          &quot;repositoryErrors&quot;: [ # Repository error reported by connector.
            { # Errors when the connector is communicating to the source repository.
              &quot;type&quot;: &quot;A String&quot;, # Type of error.
              &quot;httpStatusCode&quot;: 42, # Error codes. Matches the definition of HTTP status codes.
              &quot;errorMessage&quot;: &quot;A String&quot;, # Message that describes the error. The maximum allowable length of the message is 8192 characters.
            },
          ],
          &quot;processingErrors&quot;: [ # Error details in case the item is in ERROR state.
            {
              &quot;code&quot;: &quot;A String&quot;, # Error code indicating the nature of the error.
              &quot;fieldViolations&quot;: [ # In case the item fields are invalid, this field contains the details about the validation errors.
                {
                  &quot;description&quot;: &quot;A String&quot;, # Description of the error.
                  &quot;field&quot;: &quot;A String&quot;, # Path of field with violation.
                },
              ],
              &quot;errorMessage&quot;: &quot;A String&quot;, # Description of the error.
            },
          ],
        },
        &quot;acl&quot;: { # Access control list information for the item. For more information see [Map ACLs](/cloud-search/docs/guides/acls). # Access control list for this item.
          &quot;owners&quot;: [ # Optional. List of owners for the item. This field has no bearing on document access permissions. It does, however, offer a slight ranking boosts items where the querying user is an owner. The maximum number of elements is 5.
            { # Reference to a user, group, or domain.
              &quot;userResourceName&quot;: &quot;A String&quot;, # This principal is a user identified using an external identity. The name field must specify the user resource name with this format: identitysources/{source_id}/users/{ID}
              &quot;gsuitePrincipal&quot;: { # This principal is a GSuite user, group or domain.
                &quot;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a G Suite group account
                &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
                &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
              },
              &quot;groupResourceName&quot;: &quot;A String&quot;, # This principal is a group identified using an external identity. The name field must specify the group resource name with this format: identitysources/{source_id}/groups/{ID}
            },
          ],
          &quot;inheritAclFrom&quot;: &quot;A String&quot;, # Name of the item to inherit the Access Permission List (ACL) from. Note: ACL inheritance *only* provides access permissions to child items and does not define structural relationships, nor does it provide convenient ways to delete large groups of items. Deleting an ACL parent from the index only alters the access permissions of child items that reference the parent in the inheritAclFrom field. The item is still in the index, but may not visible in search results. By contrast, deletion of a container item also deletes all items that reference the container via the containerName field. The maximum length for this field is 1536 characters.
          &quot;readers&quot;: [ # List of principals who are allowed to see the item in search results. Optional if inheriting permissions from another item or if the item is not intended to be visible, such as virtual containers. The maximum number of elements is 1000.
            { # Reference to a user, group, or domain.
              &quot;userResourceName&quot;: &quot;A String&quot;, # This principal is a user identified using an external identity. The name field must specify the user resource name with this format: identitysources/{source_id}/users/{ID}
              &quot;gsuitePrincipal&quot;: { # This principal is a GSuite user, group or domain.
                &quot;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a G Suite group account
                &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
                &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
              },
              &quot;groupResourceName&quot;: &quot;A String&quot;, # This principal is a group identified using an external identity. The name field must specify the group resource name with this format: identitysources/{source_id}/groups/{ID}
            },
          ],
          &quot;aclInheritanceType&quot;: &quot;A String&quot;, # Sets the type of access rules to apply when an item inherits its ACL from a parent. This should always be set in tandem with the inheritAclFrom field. Also, when the inheritAclFrom field is set, this field should be set to a valid AclInheritanceType.
          &quot;deniedReaders&quot;: [ # List of principals who are explicitly denied access to the item in search results. While principals are denied access by default, use denied readers to handle exceptions and override the list allowed readers. The maximum number of elements is 100.
            { # Reference to a user, group, or domain.
              &quot;userResourceName&quot;: &quot;A String&quot;, # This principal is a user identified using an external identity. The name field must specify the user resource name with this format: identitysources/{source_id}/users/{ID}
              &quot;gsuitePrincipal&quot;: { # This principal is a GSuite user, group or domain.
                &quot;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a G Suite group account
                &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
                &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
              },
              &quot;groupResourceName&quot;: &quot;A String&quot;, # This principal is a group identified using an external identity. The name field must specify the group resource name with this format: identitysources/{source_id}/groups/{ID}
            },
          ],
        },
        &quot;version&quot;: &quot;A String&quot;, # Required. The indexing system stores the version from the datasource as a byte string and compares the Item version in the index to the version of the queued Item using lexical ordering. Cloud Search Indexing won&#x27;t index or delete any queued item with a version value that is less than or equal to the version of the currently indexed item. The maximum length for this field is 1024 bytes.
        &quot;itemType&quot;: &quot;A String&quot;, # Type for this item.
        &quot;payload&quot;: &quot;A String&quot;, # Additional state connector can store for this item. The maximum length is 10000 bytes.
        &quot;content&quot;: { # Content of an item to be indexed and surfaced by Cloud Search. # Item content to be indexed and made text searchable.
          &quot;inlineContent&quot;: &quot;A String&quot;, # Content that is supplied inlined within the update method. The maximum length is 102400 bytes (100 KiB).
          &quot;contentFormat&quot;: &quot;A String&quot;,
          &quot;contentDataRef&quot;: { # Represents an upload session reference. This reference is created via upload method. Updating of item content may refer to this uploaded content via contentDataRef. # Upload reference ID of a previously uploaded content via write method.
            &quot;name&quot;: &quot;A String&quot;, # Name of the content reference. The maximum length is 2048 characters.
          },
          &quot;hash&quot;: &quot;A String&quot;, # Hashing info calculated and provided by the API client for content. Can be used with the items.push method to calculate modified state. The maximum length is 2048 characters.
        },
        &quot;queue&quot;: &quot;A String&quot;, # Queue this item belongs to. The maximum length is 100 characters.
        &quot;structuredData&quot;: { # Available structured data fields for the item. # The structured data for the item that should conform to a registered object definition in the schema for the data source.
          &quot;object&quot;: { # A structured data object consisting of named properties. # The structured data object that should conform to a registered object definition in the schema for the data source.
            &quot;properties&quot;: [ # The properties for the object. The maximum number of elements is 1000.
              { # A typed name-value pair for structured data. The type of the value should be the same as the registered type for the `name` property in the object definition of `objectType`.
                &quot;timestampValues&quot;: { # List of timestamp values.
                  &quot;values&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;textValues&quot;: { # List of text values.
                  &quot;values&quot;: [ # The maximum allowable length for text values is 2048 characters.
                    &quot;A String&quot;,
                  ],
                },
                &quot;dateValues&quot;: { # List of date values.
                  &quot;values&quot;: [
                    { # Represents a whole calendar date, for example a date of birth. The time of day and time zone are either specified elsewhere or are not significant. The date is relative to the [Proleptic Gregorian Calendar](https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar). The date must be a valid calendar date between the year 1 and 9999.
                      &quot;month&quot;: 42, # Month of date. Must be from 1 to 12.
                      &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999.
                      &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month.
                    },
                  ],
                },
                &quot;integerValues&quot;: { # List of integer values.
                  &quot;values&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;htmlValues&quot;: { # List of html values.
                  &quot;values&quot;: [ # The maximum allowable length for html values is 2048 characters.
                    &quot;A String&quot;,
                  ],
                },
                &quot;objectValues&quot;: { # List of object values.
                  &quot;values&quot;: [
                    # Object with schema name: StructuredDataObject
                  ],
                },
                &quot;doubleValues&quot;: { # List of double values.
                  &quot;values&quot;: [
                    3.14,
                  ],
                },
                &quot;name&quot;: &quot;A String&quot;, # The name of the property. This name should correspond to the name of the property that was registered for object definition in the schema. The maximum allowable length for this property is 256 characters.
                &quot;enumValues&quot;: { # List of enum values.
                  &quot;values&quot;: [ # The maximum allowable length for string values is 32 characters.
                    &quot;A String&quot;,
                  ],
                },
                &quot;booleanValue&quot;: True or False,
              },
            ],
          },
          &quot;hash&quot;: &quot;A String&quot;, # Hashing value provided by the API caller. This can be used with the items.push method to calculate modified state. The maximum length is 2048 characters.
        },
        &quot;metadata&quot;: { # Available metadata fields for the item. # Metadata information.
          &quot;sourceRepositoryUrl&quot;: &quot;A String&quot;, # Link to the source repository serving the data. Search results apply this link to the title. Whitespace or special characters may cause Cloud Search result links to trigger a redirect notice; to avoid this, encode the URL. The maximum length is 2048 characters.
          &quot;title&quot;: &quot;A String&quot;, # The title of the item. If given, this will be the displayed title of the Search result. The maximum length is 2048 characters.
          &quot;hash&quot;: &quot;A String&quot;, # Hashing value provided by the API caller. This can be used with the items.push method to calculate modified state. The maximum length is 2048 characters.
          &quot;mimeType&quot;: &quot;A String&quot;, # The original mime-type of ItemContent.content in the source repository. The maximum length is 256 characters.
          &quot;contentLanguage&quot;: &quot;A String&quot;, # The BCP-47 language code for the item, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier. The maximum length is 32 characters.
          &quot;objectType&quot;: &quot;A String&quot;, # The type of the item. This should correspond to the name of an object definition in the schema registered for the data source. For example, if the schema for the data source contains an object definition with name &#x27;document&#x27;, then item indexing requests for objects of that type should set objectType to &#x27;document&#x27;. The maximum length is 256 characters.
          &quot;createTime&quot;: &quot;A String&quot;, # The time when the item was created in the source repository.
          &quot;searchQualityMetadata&quot;: { # Additional search quality metadata of the item. # Additional search quality metadata of the item
            &quot;quality&quot;: 3.14, # An indication of the quality of the item, used to influence search quality. Value should be between 0.0 (lowest quality) and 1.0 (highest quality). The default value is 0.0.
          },
          &quot;keywords&quot;: [ # Additional keywords or phrases that should match the item. Used internally for user generated content. The maximum number of elements is 100. The maximum length is 8192 characters.
            &quot;A String&quot;,
          ],
          &quot;interactions&quot;: [ # A list of interactions for the item. Interactions are used to improve Search quality, but are not exposed to end users. The maximum number of elements is 1000.
            { # Represents an interaction between a user and an item.
              &quot;principal&quot;: { # Reference to a user, group, or domain. # The user that acted on the item.
                &quot;userResourceName&quot;: &quot;A String&quot;, # This principal is a user identified using an external identity. The name field must specify the user resource name with this format: identitysources/{source_id}/users/{ID}
                &quot;gsuitePrincipal&quot;: { # This principal is a GSuite user, group or domain.
                  &quot;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a G Suite group account
                  &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
                  &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
                },
                &quot;groupResourceName&quot;: &quot;A String&quot;, # This principal is a group identified using an external identity. The name field must specify the group resource name with this format: identitysources/{source_id}/groups/{ID}
              },
              &quot;interactionTime&quot;: &quot;A String&quot;, # The time when the user acted on the item. If multiple actions of the same type exist for a single user, only the most recent action is recorded.
              &quot;type&quot;: &quot;A String&quot;,
            },
          ],
          &quot;containerName&quot;: &quot;A String&quot;, # The name of the container for this item. Deletion of the container item leads to automatic deletion of this item. Note: ACLs are not inherited from a container item. To provide ACL inheritance for an item, use the inheritAclFrom field. The maximum length is 1536 characters.
          &quot;updateTime&quot;: &quot;A String&quot;, # The time when the item was last modified in the source repository.
        },
        &quot;name&quot;: &quot;A String&quot;, # Name of the Item. Format: datasources/{source_id}/items/{item_id} This is a required field. The maximum length is 1536 characters.
      },
    ],
  }</pre>
</div>

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