<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.</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</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;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
    &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the
        # customer.
  },
  &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="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;content&quot;: { # Content of an item to be indexed and surfaced by Cloud Search. # Item content to be indexed and made text searchable.
          &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;contentFormat&quot;: &quot;A String&quot;,
          &quot;contentDataRef&quot;: { # Represents an upload session reference. # Upload reference ID of a previously uploaded content via write method.
              # This reference is created via upload
              # method.
              # Updating of item content may refer to this uploaded content via
              # contentDataRef.
            &quot;name&quot;: &quot;A String&quot;, # Name of the content reference.
                # The maximum length is 2048 characters.
          },
          &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;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.  &amp;#83;earch results apply
              # this link to the title.
              # Whitespace or special characters may cause Cloud &amp;#83;earch result links to
              # trigger a redirect notice; to avoid this, encode the URL.
              # The maximum length is 2048 characters.
          &quot;updateTime&quot;: &quot;A String&quot;, # The time when the item was last modified in the source repository.
          &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;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;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;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;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;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;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;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
                  &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the
                      # customer.
                },
                &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;type&quot;: &quot;A String&quot;,
            },
          ],
          &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;mimeType&quot;: &quot;A String&quot;, # The original mime-type of
              # ItemContent.content
              # in the source repository.
              # The maximum length is 256 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;createTime&quot;: &quot;A String&quot;, # The time when the item was created in the source repository.
          &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;queue&quot;: &quot;A String&quot;, # Queue this item belongs to.
            # The maximum length is 100 characters.
        &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.
            # &lt;br /&gt;&lt;br /&gt;
            # 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;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;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;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;objectValues&quot;: { # List of object values.
                  &quot;values&quot;: [
                    # Object with schema name: StructuredDataObject
                  ],
                },
                &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;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;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month.
                      &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999.
                      &quot;month&quot;: 42, # Month of date. Must be from 1 to 12.
                    },
                  ],
                },
                &quot;integerValues&quot;: { # List of integer values.
                  &quot;values&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &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;doubleValues&quot;: { # List of double values.
                  &quot;values&quot;: [
                    3.14,
                  ],
                },
                &quot;booleanValue&quot;: True or False,
                &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;htmlValues&quot;: { # List of html values.
                  &quot;values&quot;: [ # The maximum allowable length for html values is 2048 characters.
                    &quot;A String&quot;,
                  ],
                },
                &quot;timestampValues&quot;: { # List of timestamp values.
                  &quot;values&quot;: [
                    &quot;A String&quot;,
                  ],
                },
              },
            ],
          },
        },
        &quot;status&quot;: { # This contains item&#x27;s status and any errors. # Status of the item.
            # Output only field.
          &quot;repositoryErrors&quot;: [ # Repository error reported by connector.
            { # Errors when the connector is communicating to the source repository.
              &quot;errorMessage&quot;: &quot;A String&quot;, # Message that describes the error. The maximum allowable length
                  # of the message is 8192 characters.
              &quot;type&quot;: &quot;A String&quot;, # Type of error.
              &quot;httpStatusCode&quot;: 42, # Error codes.  Matches the definition of HTTP status codes.
            },
          ],
          &quot;processingErrors&quot;: [ # Error details in case the item is in ERROR state.
            {
              &quot;errorMessage&quot;: &quot;A String&quot;, # Description of the error.
              &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;code&quot;: &quot;A String&quot;, # Status code.
        },
        &quot;payload&quot;: &quot;A String&quot;, # Additional state connector can store for this item.
            # The maximum length is 10000 bytes.
        &quot;name&quot;: &quot;A String&quot;, # Name of the Item. Format:
            # datasources/{source_id}/items/{item_id}
            # &lt;br /&gt;This is a required field.
            # The maximum length is 1536 characters.
        &quot;acl&quot;: { # Access control list information for the item. For more information see # Access control list for this item.
            # [Map ACLs](/cloud-search/docs/guides/acls).
          &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;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
                &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the
                    # customer.
              },
              &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;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
                &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the
                    # customer.
              },
              &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;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;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
                &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the
                    # customer.
              },
              &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.
        },
      },
    ],
  }</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>